Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- dane SEGMENT ;segment danych
- tekst11 db 0dh, 0ah,"[1,1]: ", "$"
- tekst12 db 0dh, 0ah,"[1,2]: ", "$"
- tekst21 db 0dh, 0ah,"[2,1]: ", "$"
- tekst22 db 0dh, 0ah,"[2,2]: ", "$"
- tenter db 0dh, 0ah, "$"
- nowa db 0dh, 0ah,"odwrocona macierz: ", "$"
- minus db "-", "$"
- spacja db " ", "$"
- a11 db 0
- a12 db 0
- a21 db 0
- a22 db 0
- a11n db 0
- a12n db 0
- a21n db 0
- a22n db 0
- ad db 0
- bc db 0
- mianownik db 0
- dane ENDS
- rozkazy SEGMENT 'CODE' use16 ;segment rozkazu
- ASSUME cs:rozkazy, ds:dane
- startuj: mov ax, SEG dane
- mov ds, ax
- czytaj: mov dx, offset tekst11 ;tekst 11
- call wczyt_a
- add [a11], al ;wpisanei do zmiennej
- mov dx, offset tekst12 ;tekst 12
- call wczyt_a
- add [a12], al ;wpisanei do zmiennej
- mov dx, offset tekst21 ;tekst 21
- call wczyt_a
- add [a21], al ;wpisanei do zmiennej
- mov dx, offset tekst22 ;tekst 22
- call wczyt_a
- add [a22], al ;wpisanei do zmiennej
- licz_m: mov al, [a11] ;mnozenie a11 a21
- mov bl, [a22]
- mul bl
- add [ad], al
- call nowalinia
- call wyswietl
- mov al, [a12] ;mnozenie a21 a12
- mov bl, [a21]
- mul bl
- add [bc], al
- call nowalinia
- call wyswietl
- mov al, [ad]
- sub al, [bc]
- add [mianownik], al
- cmp al, 0
- jz koniec
- call nowalinia
- call wyswietl
- abcd: call nowalinia
- and ax,0h
- and bx,0h
- mov al, [a11]
- mov bl, [mianownik]
- div bl
- add [a22n], al
- and ax,0h
- and bx,0h
- mov al, [a22]
- mov bl, [mianownik]
- div bl
- add [a11n], al
- and ax,0h
- and bx,0h
- mov al, [a12]
- mov bl, [mianownik]
- div bl
- add [a21n], al
- and ax,0h
- and bx,0h
- mov al, [a21]
- mov bl, [mianownik]
- div bl
- add [a12n], al
- wynik: mov ah, 09h ;nowa linia
- mov dx, offset nowa
- int 21h
- mov dx, offset tekst11 ;tekst 11
- mov ah, 09h
- int 21h
- mov al, [a11n]
- call wyswietl
- mov dx, offset tekst11 ;tekst 11
- mov ah, 09h
- int 21h
- mov dx, offset minus ;tekst 11
- mov ah, 09h
- int 21h
- mov al, [a12n]
- call wyswietl
- mov dx, offset tekst21 ;tekst 11
- mov ah, 09h
- int 21h
- mov dx, offset minus ;tekst 11
- mov ah, 09h
- int 21h
- mov al, [a21n]
- call wyswietl
- mov dx, offset tekst22 ;tekst 11
- mov ah, 09h
- int 21h
- mov al, [a22n]
- call wyswietl
- jmp koniec
- koniec: mov ah, 4CH
- int 21H
- nowalinia: mov ah, 09h ;nowa linia
- mov dx, offset tenter
- int 21h
- ret
- wczyt_a: mov ah, 09h
- int 21h
- mov ah, 01h ;czytanie znaku
- int 21h
- cmp al, "k" ;koniec gdy nacięto "k"
- jz koniec
- sub al, 48 ;znak do inta
- ret
- wyswietl: mov ah, 0
- mov cx, 0 ;licznik cyfr
- mov bx, 10 ;dzielnik
- p1: mov dx, 0 ;zerowanie starszej części dzielnej
- div bx ;dzielenie przez 10 – iloraz w AX, reszta w DX
- add dx, 30H ;zamiana reszty na kod ASCII
- push dx ;zapisanie cyfry na stosie
- inc cx ;inkrementacja licznika cyfr
- cmp ax, 0 ;porównanie uzyskanego ilorazu
- jnz p1 ;skok gdy iloraz jest różny od zera
- p2: pop dx ;pobranie kodu ASCII kolejnej cyfry
- mov ah, 2
- int 21H ;wyświetlenie cyfry na ekranie
- loop p2 ; sterowanie pętlą wyświetlania
- ret
- wys: call nowalinia
- mov ah, 02h ;wyswietlenie wybiku mnozenia
- add al, 48
- mov dl, al
- int 21h
- ret
- rozkazy ENDS
- stosik SEGMENT stack
- dw 128 dup(?)
- stosik ENDS
- END startuj
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement