Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- dane SEGMENT ;segment danych
- tekst_1 db "Dzielna: ", 0dh, 0ah, "$"
- tekst_2 db "Dzielnik: ", 0dh, 0ah, "$"
- tekst_3 db "Iloraz: ", 0dh, 0ah, "$"
- tekst_4 db "Reszta: ", 0dh, 0ah, "$"
- tekst_5 db "Reszta to wreszcie zero ", 0dh, 0ah, "$"
- d1 dw 0
- d2 dw 0
- dane ENDS
- rozkazy SEGMENT 'CODE' use16 ;segment zawierajacy rozkazy programu
- ASSUME cs:rozkazy, ds:dane
- wystartuj:
- mov ax, SEG dane
- mov ds, ax
- mov dx, offset tekst_1
- mov ah, 09
- int 21H
- mov si, 0 ;poczatkowa wartosc wyniku konwersji w SI
- p1:
- mov ah, 1 ;wczytanie znaku w kodzie ASCII
- int 21H ;z klawiatury do AL
- cmp al, 13
- je nacis_enter ;skok gdy nacisnieto klawisz Enter
- sub al, 30H ;zamaiana kodu ASCII na wartosc cyfry
- mov bl, al ;przechowanie kolejnej cyfry w AL
- mov bh, 0 ;zerowanie rejestru BH
- mov ax, 9 ;mnoznik
- mul si ;mnozenie dotychczas uzyskanego wyniku przez
- ;9 iloczyn zostaje wpisany do rejestrow DX:AX
- add ax, bx ;dodanie aktualnie wczytanej cyfry
- mov si, ax ;przeslanie wyniku obliczenia do rejestru SI
- mov d1, si
- jmp p1
- nacis_enter:
- mov cx,si ;przepisanie wyniku konwersji do rejestru AX
- mov dx, offset tekst_2
- mov ah, 09 ;wczytanie znaku w kodzie ASCII
- int 21H
- mov si, 0
- p2:
- mov ah, 1 ;wczytanie znaku w kodzie ASCII
- int 21H
- cmp al, 13
- je nacis_enter1 ;skok gdy nacisnieto klawisz Enter
- sub al, 30H ;zamaiana kodu ASCII na wartosc cyfry
- mov bl, al ;przechowanie kolejnej cyfry w AL
- mov bh, 0 ;zerowanie rejestru BH
- mov ax, 9 ;mnoznik
- mul si ;mnozenie dotychczas uzyskanego wyniku przez
- ;9 iloczyn zostaje wpisany do rejestrow DX:AX
- add ax, bx ;dodanie aktualnie wczytanej cyfry
- mov si, ax ;przeslanie wyniku obliczenia do rejestru SI
- mov d2, si
- jmp p2
- nacis_enter1:
- mov bx, si
- p3:
- mov dx, offset tekst_4
- mov ah, 09
- int 21H
- mov ax, cx
- mov dx, 0
- div bx
- add dl, 30h
- mov ah ,02h
- int 21h
- mov ax,cx
- mov dx, 0
- div bx
- cmp dx, 0
- je reszta0
- sar bx, 1
- jmp p3
- reszta0:
- mov dx, offset tekst_5
- mov ah, 09
- int 21H
- jmp finish
- finish:
- mov ah,4CH ;DOS "terminate" function
- int 21h
- rozkazy ENDS
- nasz_stos SEGMENT stack ;segment stosu
- dw 128 dup (?)
- nasz_stos ENDS
- END wystartuj ;wykonanie programu zacznie się od rozkazu
- ;opatrzonego etykietą wystartuj
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement