|
Written by Rohit
|
|
Monday, 10 April 2006 |
.model small
.stack 100
.data
current db 0h
count db 0h
sum db 0,0
strtmsg db "How many numbers to add (02-99)?", 13, 10, "$"
msg1 db 13, 10, "Enter the number (", "$"
msg2 db ") $", 13, 10
ansis db "The sum of the numbers is $"
.code
main proc far
mov ax, @data
mov ds, ax
mov dx, offset strtmsg
mov ah, 09h
int 21h
call get2dignum
inc al
mov count, al
mov current, al
dec current
cmp al, 02h
jae lop
jmp ext
lop: mov dx, offset msg1 ;Prompt to enter the number
mov ah, 09h
int 21h
mov al, count
sub al, current
das
mov dl, al
mov ch, dl
and dl, 0f0h
mov cl, 04h
rol dl, cl
or dl, 30h
mov ah, 02h
int 21h
mov dl, ch
and dl, 0fh
or dl, 30h
mov ah, 02h
int 21h
mov dx, offset msg2
mov ah, 09h
int 21h
mov al, current
sub al, 01h
das
mov current, al
call get2dignum
;Add the number
add al, sum+1
daa
mov sum+1, al
jnc nocarry
inc sum
nocarry:cmp current, 00h
jne lop
mov dl, 13
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dx, offset ansis
mov ah, 09h
int 21h
mov dl, sum
mov ch, dl
and dl, 0f0h
mov cl, 04h
rol dl, cl
or dl, 30h
mov ah, 02h
int 21h
mov dl, ch
and dl, 0fh
or dl, 30h
mov ah, 02h
int 21h
mov dl, sum+1
mov ch, dl
and dl, 0f0h
mov cl, 04h
rol dl, cl
or dl, 30h
mov ah, 02h
int 21h
mov dl, ch
and dl, 0fh
or dl, 30h
mov ah, 02h
int 21h
ext: mov dl, 13
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov ah, 04ch
int 21h
main endp
get2dignum proc near
push dx
mov ah, 01h
int 21h
mov bl, al
and bl, 0fh
mov ah, 01h
int 21h
mov cl, 04h
rol bl, cl
and al, 0fh
add bl, al
mov al, bl
mov ah, 00h
pop dx
ret
get2dignum endp
end main
|
|