汇编题:求N=1+2+3+4+5+......+......n,N不超过16位。谢谢

2024-12-21 21:12:42
推荐回答(1个)
回答1:

;在A中改数值n..得到其他值
data segment
A dw 300
@@Temp_Save db 7 dup(?)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ax,word ptr[A]
next:
dec word ptr[A]
add ax,word ptr[A]
cmp word ptr[A],1
jnz next
call Dec_ASCII
mov ah,4ch
int 21h
;**************************************************************************
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[7]
mov BYTE ptr [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
mov dx,di;可以用push di
; pop dx替代
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
Dec_ASCII EndP
;***************************************************************************
code ends
end start