用汇编语言编写一个简单程序
设堆栈指针SP=2000H,AX=3000H,BX=5000H;编一程序段将AX和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元。可用的话绝对加分!...
设堆栈指针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
其中: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
展开全部
PUSH AX
PUSH BX
POP AX
POP BX
核心代码
PUSH BX
POP AX
POP BX
核心代码
更多追问追答
追问
能解释一下每行的意思吗?真心是初学者
追答
3000H压栈
5000H压栈
5000H出栈放到AX
3000H出栈放到BX
堆栈是先进后出的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询