Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .model small
- .stack 100h
- .data
- osemkowa db "Liczba osemkowa: $"
- decymalna db 0dh,0ah,"Liczba decymalna (ENTER aby zako�czy�): $"
- koncowy db 0dh,0ah,"Program zostanie zako�czony po naci�ni�ciu dowolnego klawisza$"
- znak dw 0
- cyfra_znaczaca dw 0
- .386
- .code
- czytaj_cyfre:
- mov eax,00000000
- int 16h
- cmp al,0Dh;enter
- je koniec
- cmp al,'-'
- je minus
- cmp al, '0'
- jb czytaj_cyfre
- cmp al, '9'
- jbe wczytano
- ja czytaj_cyfre
- minus:
- cmp [znak],0
- jg czytaj_cyfre
- inc [znak]
- RET
- wczytano:
- mov ah,0
- sub al,'0'
- push ax
- mov ax,bx
- mov bx,000ah
- mul bx
- cmp dx, 0
- ja koniec
- mov ebx,eax
- pop ax
- add bx,ax
- jc koniec
- cmp [znak],0
- jne przeskok
- mov [znak],2
- przeskok:
- RET
- wypisz_oct:
- cmp [znak], 1
- jne bez_minusa2
- mov al,'-'
- mov ah,0eh
- int 10h
- bez_minusa2:
- mov [cyfra_znaczaca],0
- push bx
- shr bx,15
- cmp bx,0
- je przeskocz2
- mov [cyfra_znaczaca],1
- przeskocz2:
- cmp [cyfra_znaczaca],1
- jne przeskocz3
- add bx,'0'
- mov ax,bx
- mov ah,0eh
- int 10h
- przeskocz3:
- pop bx
- push bx
- shl bx,1
- shr bx,13
- cmp bx,0
- je przeskocz4
- mov [cyfra_znaczaca],1
- przeskocz4:
- cmp [cyfra_znaczaca],1
- jne przeskocz5
- add bx,'0'
- mov ax,bx
- mov ah,0eh
- int 10h
- przeskocz5:
- pop bx
- push bx
- shl bx,4
- shr bx,13
- cmp bx,0
- je przeskocz6
- mov [cyfra_znaczaca],1
- przeskocz6:
- cmp [cyfra_znaczaca],1
- jne przeskocz7
- add bx,'0'
- mov ax,bx
- mov ah,0eh
- int 10h
- przeskocz7:
- pop bx
- push bx
- shl bx,7
- shr bx,13
- cmp bx,0
- je przeskocz8
- mov [cyfra_znaczaca],1
- przeskocz8:
- cmp [cyfra_znaczaca],1
- jne przeskocz9
- add bx,'0'
- mov ax,bx
- mov ah,0eh
- int 10h
- przeskocz9:
- pop bx
- push bx
- shl bx,10
- shr bx,13
- cmp bx,0
- je przeskocz10
- mov [cyfra_znaczaca],1
- przeskocz10:
- cmp [cyfra_znaczaca],1
- jne przeskocz11
- add bx,'0'
- mov ax,bx
- mov ah,0eh
- int 10h
- przeskocz11:
- pop bx
- push bx
- shl bx,13
- shr bx,13
- cmp bx,0
- je przeskocz12
- mov [cyfra_znaczaca],1
- przeskocz12:
- cmp [cyfra_znaczaca],1
- jne przeskocz13
- add bx,'0'
- mov ax,bx
- mov ah,0eh
- int 10h
- przeskocz13:
- pop bx
- cmp [cyfra_znaczaca],0
- je przeskocz_ret
- RET
- przeskocz_ret:
- mov al,'0'
- mov ah,0eh
- int 10h
- RET
- wypisz_dec:
- cmp [znak], 1
- jne bez_minusa
- mov al,'-'
- mov ah,0eh
- int 10h
- bez_minusa:
- push bx
- mov [cyfra_znaczaca],0
- mov dx,0000
- mov ax,bx
- mov bx, 10000
- div bx
- cmp al,0
- je przeskocz14
- mov [cyfra_znaczaca],1
- przeskocz14:
- cmp [cyfra_znaczaca],1
- jne przeskocz15
- add al,'0'
- mov ah,0eh
- int 10h
- przeskocz15:
- mov ax,dx
- mov dx,0
- mov bx, 1000
- div bx
- cmp al,0
- je przeskocz16
- mov [cyfra_znaczaca],1
- przeskocz16:
- cmp [cyfra_znaczaca],1
- jne przeskocz17
- add al,'0'
- mov ah,0eh
- int 10h
- przeskocz17:
- mov ax,dx
- mov dx,0
- mov bx, 100
- div bx
- cmp al,0
- je przeskocz18
- mov [cyfra_znaczaca],1
- przeskocz18:
- cmp [cyfra_znaczaca],1
- jne przeskocz19
- add al,'0'
- mov ah,0eh
- int 10h
- przeskocz19:
- mov ax,dx
- mov dx,0
- mov bx, 10
- div bx
- cmp al,0
- je przeskocz20
- mov [cyfra_znaczaca],1
- przeskocz20:
- cmp [cyfra_znaczaca],1
- jne przeskocz21
- add al,'0'
- mov ah,0eh
- int 10h
- przeskocz21:
- mov ax,dx
- cmp al,0
- je przeskocz22
- mov [cyfra_znaczaca],1
- przeskocz22:
- cmp [cyfra_znaczaca],1
- jne przeskocz23
- add al,'0'
- mov ah,0eh
- int 10h
- przeskocz23:
- pop bx
- RET
- main proc
- mov ax,@data
- mov ds,ax
- mov bx,0
- petla:
- mov ah,0;clrscreen
- mov al,3
- int 10h
- mov ah,9
- mov dx,offset osemkowa
- int 21h
- call wypisz_oct
- mov ah,9
- mov dx,offset decymalna
- int 21h
- call wypisz_dec
- call czytaj_cyfre
- loop petla
- koniec:
- mov ah,9
- mov dx,offset koncowy
- int 21h
- mov ah,0
- int 16h
- mov ax,4c00h
- int 21h
- main endp
- end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement