用汇编语言实现如下程序:自然数相加(1+2+3+...+n)。必须使用循环指令。
当你给@N?当在92681以内时,输出自然数的累加结果。
程序用16位寄存器实现,比32位寄存器复杂很多?!)
代码段
ASSUMECS:代码
@NDD100000
开始:
PUSHCS
流行音乐?鐽
PUSHCS
流行音乐?萨尔瓦多
MOV?AX,0
MOV?DX,0
MOV?SI,0
MOV?DI,0
MOV?CX,有消息吗?PTR?@N
MOV?BX,有消息吗?PTR?@N+2
@0:
补充?AX,SI
ADC?DX,DI
JC @错误
补充?SI,1
ADC?DI,0
SUB?CX,1
JNC?@0
SBB?BX,0
JNC?@0
CALLDISPDXAX
@退出:
MOV?啊,4CH
INT?21H
@ERR:
SUB?SI,1
SBB?DI,0
MOV?AX,SI
MOV?DX,DI
CALLDISPDXAX
JMP?@退出
DISPDXAXPROCNEAR
;?放置要在dx和ax中显示的32位无符号数。
推斧
推杆
PUSHCX
PUSHDX
普西
普什迪
推压
PUSHF
MOV?词?PTR?[Y],AX
MOV?词?PTR?[Y+2],DX
MOV?斧头,字?PTR?[Y]
MOV?DX,WORD?PTR?[Y+2]
MOV?BX,有消息吗?PTR?[Z]
MOV?CX,有消息吗?PTR?[Z+2]
MOV?词?PTR?n,0
MM0:INC?词?PTR?普通
SUB?斧头,BX
SBB?CX DX
JNC?MM0
十二月?词?PTR?普通
补充?斧头,BX
ADC?CX DX
MOV?词?PTR[Y],AX
MOV?词?PTR[Y+2],DX
MM1:LEA?DI,CC
补充?狄,9岁
M2:
MOV?斧头,字?PTR?[Y]
MOV?DX,WORD?PTR?[Y+2]
MOV?BX,10000
DIV?布朗克斯(Bronx)
推斧
PUSHDX
流行音乐?高级的(deluxe的简写)
MOV?CX,4岁
MOV?AX,DX
M3:MOV?DX,0
MOV?BX,10
DIV?布朗克斯(Bronx)
补充?DL,30H
MOV?[DI],DL
十二月?国防情报部
LOOPM3
流行音乐?削减
MOV?CX,1
M4:MOV?DX,0
MOV?BX,10
DIV?布朗克斯(Bronx)
补充?DL,30H
MOV?[DI],DL
十二月?国防情报部
环路M4
MOV?斧头,字?PTR?普通
MOV?CX,5岁
M5:MOV?DX,0
MOV?BX,10
DIV?布朗克斯(Bronx)
补充?DL,30H
MOV?[DI],DL
十二月?国防情报部
LOOPM5
丽娅。DX
MOV?啊,9
INT?21H
MOV?CX,9岁
丽娅。SI,CC
M6:
MOV?铝[硅]
CMP?阿尔,' 0 '
JNE?M7
MOV?字节?PTR?[斯],32岁
INC?国际度量单位制
LOOPM6
M7:
丽娅。DX,CC
MOV?啊,9
INT?21H
POPF
流行音乐?碱基对
流行音乐?国防情报部
流行音乐?国际度量单位制
流行音乐?高级的(deluxe的简写)
流行音乐?CX
流行音乐?布朗克斯(Bronx)
流行音乐?削减
浸水使柔软
YDD?
CCDB10?DUP('?'),10,13,'$'
LFCRDB10,13,' $ '
ZDD100000
NDW0
DISPDXAXENDP
共端
结束?开始