用汇编语言编写一个简单程序

设堆栈指针SP=2000H,AX=3000H,BX=5000H;编一程序段将AX和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元。可用的话绝对加分!

1.计算U=(X+(Y*Z-100))/W
其中:X,Y,Z,W均为十六位有符号数。
程序如下:
DATA SEGMENT
X DW 10 ;16位变量
Y DW 20
Z DW 30
W DW 40
U DW ?,?

DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,Y
IMUL Z ;计算Y*Z,内容放在DX,AX中
MOV CX,AX
MOV BX,DX
SUB CX,100 ;计算Y*Z-100
SBB BX, 0
MOV AX,X
CWD ;将X符号扩展,形成DX:AX中的双字
ADD AX,CX ;计算X+(Y*Z-100),内容放在DX,AX中
ADC DX,BX
IDIV W ;计算(X+(Y*Z-100))/W
MOV U,AX
MOV U+2,DX
MOV AH,4CH
INT 21H
CODE ENDS
END START
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-23
PUSH AX
PUSH BX
POP AX
POP BX
核心代码追问

能解释一下每行的意思吗?真心是初学者

追答

3000H压栈
5000H压栈
5000H出栈放到AX
3000H出栈放到BX
堆栈是先进后出的

追问

那个核心代码是啥?

追答

额。就是那四句。用于交换AX和BX

追问

哥们有Q吗?想求助你

第2个回答  2020-12-10

相似回答