Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data segment
- prompt1 db "Enter first number: $"
- prompt2 db "Enter second number: $"
- input1 dw 8 dup("$")
- packed1 db 4 dup(?)
- input2 dw 8 dup("$")
- packed2 db 4 dup(?)
- resultmessage db "Result: $"
- result db 4 dup(?)
- resultascii dw 4 dup(?)
- newline db 13, 10, "$"
- ends
- stack segment
- dw 128 dup(0)
- ends
- code segment
- start:
- mov ax, data
- mov ds, ax
- mov es, ax
- lea dx, prompt1
- mov ah, 9
- int 21h ; print prompt1
- mov cx, 8
- mov si, offset input1
- inloop1:
- mov ah, 01 ; input1
- int 21h
- mov [si], al
- inc si
- loop inloop1
- xor ax, ax
- mov ah, 09
- mov dx, offset newline
- int 21h ; print newline
- lea dx, prompt2
- mov ah, 9
- int 21h ; print prompt2
- mov cx, 8
- mov di, offset input2
- inloop2:
- mov ah, 01 ; input2
- int 21h
- mov [di], al
- inc di
- loop inloop2
- ; ascii to packed bcd
- xor ax, ax
- mov ax, input1
- and ax, 0f0fh
- mov cl, 4
- shl al, cl
- add al, ah
- mov packed1, al
- xor ax, ax
- mov si,offset input1
- mov ax, [si+2]
- and ax, 0f0fh
- mov cl, 4
- shl al, cl
- add al, ah
- mov si,offset packed1
- mov [si+1], al
- xor ax, ax
- mov si,offset input1
- mov ax, [si+4]
- and ax, 0f0fh
- mov cl, 4
- shl al, cl
- add al, ah
- mov si,offset packed1
- mov [si+2], al
- xor ax, ax
- mov si,offset input1
- mov ax, [si+6]
- and ax, 0f0fh
- mov cl, 4
- shl al, cl
- add al, ah
- mov si,offset packed1
- mov [si+3], al
- xor ax, ax
- mov ax, input2
- and ax, 0f0fh
- mov cl, 4
- shl al, cl
- add al, ah
- mov packed2, al
- xor ax, ax
- mov si,offset input2
- mov ax, [si+2]
- and ax, 0f0fh
- mov cl, 4
- shl al, cl
- add al, ah
- mov si,offset packed2
- mov [si+1], al
- xor ax, ax
- mov si,offset input2
- mov ax, [si+4]
- and ax, 0f0fh
- mov cl, 4
- shl al, cl
- add al, ah
- mov si,offset packed2
- mov [si+2], al
- xor ax, ax
- mov si,offset input2
- mov ax, [si+6]
- and ax, 0f0fh
- mov cl, 4
- shl al, cl
- add al, ah
- mov si,offset packed2
- mov [si+3], al
- ; packed bcd addition
- xor ax, ax
- mov si, offset packed1
- mov di, offset packed2
- mov bx, offset result
- mov al, [si+3]
- add al, [di+3]
- daa
- mov [bx+3], al
- mov al, [si+2]
- adc al, [di+2]
- daa
- mov [bx+2], al
- mov al, [si+1]
- adc al, [di+1]
- daa
- mov [bx+1], al
- mov al,[si]
- adc al, [di]
- daa
- mov [bx], al
- ; packed bcd to ascii
- xor ax, ax
- mov al, result
- mov ah, al
- and al, 0fh
- mov cl, 4
- shr ah, cl
- or ax, 3030h
- xchg ah,al
- mov resultascii, ax
- xor ax, ax
- xor ax, ax
- mov si, offset result
- mov al, [si+1]
- mov ah, al
- and al, 0fh
- mov cl, 4
- shr ah, cl
- or ax, 3030h
- mov si,offset resultascii
- xchg ah,al
- mov [si+2], ax
- xor ax, ax
- mov si, offset result
- mov al, [si+2]
- mov ah, al
- and al, 0fh
- mov cl, 4
- shr ah, cl
- or ax, 3030h
- mov si,offset resultascii
- xchg ah,al
- mov [si+4], ax
- xor ax, ax
- mov si, offset result
- mov al, [si+3]
- mov ah, al
- and al, 0fh
- mov cl, 4
- shr ah, cl
- or ax, 3030h
- mov si,offset resultascii
- xchg ah,al
- mov [si+6], ax
- xor ax, ax
- mov ah, 09
- mov dx, offset newline
- int 21h ; print newline
- lea dx, resultmessage
- mov ah, 9
- int 21h ; print resultmessage
- ;reverse the number
- ; mov si,offset resultascii;
- ; mov al,[si]
- ; mov ah,[si+1]
- ; mov [si],ah
- ; mov [si+1],al
- lea dx, resultascii
- mov ah, 9
- int 21h ; print result
- ; wait for any key....
- mov ah, 1
- int 21h
- mov ax, 4c00h ; exit to operating system.
- int 21h
- ends
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement