Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .model small
- .stack 512
- .data
- napisa db "Podaj liczbe decymalnie.", 0Dh, 0Ah, '$'
- wynik db "Jej wartosc w sytemie hex to: $"
- liczba1 dw 0
- liczba2 dw 0
- .code
- .startup
- mov ax, @data
- mov ds, ax
- main proc
- call newline
- mov dx, offset napisa ;wypisz napis1
- mov ah, 09h
- int 21h
- call pobierzLiczbe ; pobierz liczbe
- mov [liczba1], ax
- ;wstaw znak nowej linii
- call NEWLINE
- call KONWERTUJ
- mov ah, 4ch
- mov al, 0
- int 21h
- main endp
- ;procedura pobierania liczby
- pobierzLiczbe proc
- starting:
- call NEWLINE
- mov cx, 5 ;ilosc iteracji petli
- xor bx, bx ;wyzerowanie bx
- WCZYTAJ:
- mov ah, 0
- int 16h
- cmp al, 13 ;czy jest enterem
- je Ent
- cmp al, '0'
- jb WCZYTAJ
- cmp al, '9'
- jbe dobraLiczba
- jmp WCZYTAJ
- dobraLiczba:
- mov dl, al ;wypisz liczbe
- mov ah, 2
- int 21h
- sub al, '0'
- xor ah, ah
- przypisz:
- push ax
- mov ax, bx
- mov bx, 10
- mul bx
- pop bx
- jc starting
- add ax, bx
- jc starting
- mov bx, ax
- jmp loopend
- Ent:
- mov cx, 1 ;zeby skonczyc petle
- loopend:
- loop Wczytaj
- mov ax, bx
- ret
- pobierzLiczbe endp
- ;procedura wstawiania nowej linii
- NEWLINE proc
- push dx
- push ax
- mov dx,13
- mov ah,2
- int 21h
- mov dx,10
- mov ah,2
- int 21h
- pop ax
- pop dx
- ret
- NEWLINE endp
- spr proc
- cmp ax,9
- ja literka ;jesli literka ziom
- jbe liczba
- literka:
- add al,55
- jmp koniectego
- liczba:
- add al,48
- koniectego:
- mov ah,0eh
- int 10h
- ret
- spr endp
- ;konwertowanie
- KONWERTUJ proc
- push ax
- mov dx, offset wynik
- mov ah, 09h
- int 21h
- pop ax
- ; ax - mamy liczbe
- mov cl,12
- push ax
- shr ax,cl
- call spr
- pop ax
- push ax
- mov cl,4
- shl ax,cl
- mov cl,12
- shr ax,cl
- call spr
- pop ax
- push ax
- mov cl,8
- shl ax,cl
- mov cl,12
- shr ax,cl
- call spr
- pop ax
- mov cl,12
- shl ax,cl
- mov cl,12
- shr ax,cl
- call spr
- mov ah,10h
- int 16h
- ret
- KONWERTUJ endp
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement