;以前给别人写过的1-100相加,10进制输出,只是那人拿了答案就跑了,也不给采纳。
;稍微改一下,增加16进制输出
;sum 1-100
data segment
result dw 0
msg db 'sum (1-100) is:$'
lf db 0dh, 0ah, '$'
atab db '0123456789ABCDEF'
data ends
code segment
assume cs:code, ds:data
start:
mov ax, data
mov ds, ax
mov cx, 100
xor ax, ax
L1:
add ax, cx
loop L1
mov result, ax
lea dx, msg
mov ah,9
int 21h
mov ax,result
call printHex
lea dx,lf
mov ah,9
int 21h
mov ah,4ch
int 21h
;print the value in AX with base 16
printHex proc near
lea bx, atab
mov dx, ax
mov cx,4
mov ah, 0eh
R1:
rol dx, 4
mov al, dl
and al, 0Fh
xlat
int 10h
loop R1
ret
printHex endp
print proc near
mov cx,0
mov bx,10
Q0:
xor dx, dx
div bx
xor dx,0e30h
push dx
inc cx
cmp ax, 0
jnz Q0
Q1:
pop ax
int 10h
loop Q1
ret
print endp
code ends
end start
温馨提示:答案为网友推荐,仅供参考