Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- dane SEGMENT ;segment danych
- Buf_1 db 4 dup (0)
- LBin dw 0
- Buf_2 db 128 dup(0)
- dane ENDS
- rozkazy SEGMENT 'CODE' use16;segment rozkazu
- ASSUME cs:rozkazy, ds:dane, es:dane
- startuj: mov ax, SEG dane
- mov ds, ax
- mov es, ax
- mov bx, SEG dane
- mov ds, bx
- ; wczytywanie liczby do AX, zakończenie wczytywania po Enter
- mov si, 0 ;początkowa wartość 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 naciśnięto klawisz Enter
- sub al, 30H ;zamaiana kodu ASCII na wartość cyfry
- mov bl, al ;przechowanie kolejnej cyfry w AL
- mov bh, 0 ;zerowanie rejestru BH
- mov ax, 7 ;mnożnik
- mul si ;mnożenie dotychczas uzyskanego wyniku przez
- ;10 iloczyn zostaje wpisany do rejestrów DX:AX
- add ax, bx ;dodanie aktualnie wczytanej cyfry
- mov si, ax ;przesłanie wyniku obliczenia do rejestru SI
- jmp p1 ;
- nacis_enter:
- mov ax, si ;przepisanie wyniku konwersji do rejestru AX
- mov cx, 0 ;licznik cyfr
- mov bx, 2 ;dzielnik
- p2: 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
- mov LBin, dx
- inc cx ;inkrementacja licznika cyfr
- cmp ax, 0 ;porównanie uzyskanego ilorazu
- jnz p2 ;skok gdy iloraz jest różny od zera
- p3: pop dx ;pobranie kodu ASCII kolejnej cyfry
- mov ah, 2
- int 21H ;wyświetlenie cyfry na ekranie
- loop p3 ; sterowanie pętlą wyświetlania
- mov dl,13
- mov ah,2
- int 21H
- mov dl,10
- mov ah,2
- int 21H
- mov ax,si
- mov cx, 0 ;licznik cyfr
- mov bx, 6 ;dzielnik
- p4: 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 p4 ;skok gdy iloraz jest różny od zera
- p5: pop dx ;pobranie kodu ASCII kolejnej cyfry
- mov ah, 2
- int 21H ;wyświetlenie cyfry na ekranie
- loop p5 ; sterowanie pętlą wyświetlania
- koncz PROC near
- mov al, 0
- mov ah, 4CH
- int 21H
- koncz ENDP
- call koncz
- rozkazy ENDS
- stosik SEGMENT stack
- stosik ENDS
- END startuj
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement