Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data segment
- startingMessage db 10,13,'Wpisz liczbe (0-65535): $'
- emptyString db 10,13,'Podany ciag jest empty!$'
- signNotNumber db 10,13,'Podany ciag nie jest liczba!$'
- tooBig db 10,13,'Podana liczba jest za duza!$'
- messageDec db 'Liczba decymalnie: $'
- messageBin db 10,13,'Liczba binarnie: $'
- messageHex db 10,13,'Liczba heksadecymalnie: $'
- hex db '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
- endOfText db 10,13,'$'
- max db 6
- l db ?
- arr db 7 dup('$')
- sum dw 0
- db '$'
- data ends
- stack segment
- dw 100h dup(0)
- top Label word
- stack ends
- code segment
- assume cs:code, ss:stack, ds:data
- mov ax,data
- mov ds,ax
- mov ax,stack
- mov ss,ax
- mov sp,offset top
- mov ah,09h /wyswietl lancuch tekstowy
- lea dx,startingMessage
- int 21h
- mov ah,0Ah /buforowane wczytanie z klawiatury
- lea dx,max
- int 21h
- mov ah,09h /wyswietl lancuch tekstowy
- lea dx,endOfText
- int 21h
- xor ax,ax
- xor bx,bx
- xor cx,cx
- xor dx,dx
- mov cl,l
- checkl:
- cmp l,0
- je empty
- jmp checkIfNumber
- empty:
- mov ah,09h /wyswietl lancuch tekstowy
- lea dx,emptyString
- int 21h
- mov ax,4c03h /zakoncz program i zwroc kod powrotu, czekaj na data z urzadzenia pomocniczego
- int 21h
- checkIfNumber:
- mov dl,arr[bx]
- cmp dl,'0'
- jl wrongNumber
- cmp dl,'9'
- jg wrongNumber
- inc bx
- loop checkIfNumber
- xor bx,bx
- mov cl,l
- jmp checkRange
- wrongNumber:
- mov ah,09h
- lea dx,signNotNumber
- int 21h
- mov ax,4c02h
- int 21h
- checkRange:
- mov dx,10
- mov ax,sum
- mul dx
- jc tooMuch
- mov dh,0
- mov dl,arr[bx]
- sub dx,'0'
- add ax,dx
- jc tooMuch
- mov sum,ax
- inc bx
- loop checkRange
- jmp showDec
- tooMuch:
- mov ah,09h
- lea dx,tooBig
- int 21h
- mov ax,4c03h
- int 21h
- showDec:
- mov ah,09h
- lea dx,messageDec
- int 21h
- lea dx,arr
- int 21h
- lea dx,messageBin
- int 21h
- mov ah,02h
- mov cx,16
- mov bx,sum
- swapBin:
- rol bx,1
- push bx
- and bx,1
- add bx,'0'
- mov dl,bl
- int 21h
- pop bx
- loop swapBin
- mov ah,09h
- lea dx,messageHex
- int 21h
- mov ah,02h
- mov cx,4
- mov bx,sum
- swapHex:
- rol bx,4
- push bx
- and bx,15
- mov dl,hex[bx]
- int 21h
- pop bx
- loop swapHex
- mov ax,4c00h
- int 21h
- code ends
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement