汇编语言宏定义时为什么经常将某个寄存器入栈?

ADD_MACMACROVAR1,VAR2PUSHAXMOVAX,VAR1ADDAX,VAR2MOVBX,AX;我想问下这里的ax跟下一行出栈的ax的值是不是不一样?PO... ADD_MAC MACRO VAR1,VAR2
PUSH AX
MOV AX,VAR1
ADD AX,VAR2
MOV BX,AX ;我想问下这里的ax跟下一行出栈的ax的值是不是不一样?
POP AX ;
ENDM

DSEG SEGMENT
NUM DW ?
DSEG ENDS

CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: ADD_MAC
MOV NUM,BX
CSEG ENDS
END START
展开
 我来答
百度网友6dc5d8b
2013-06-22 · TA获得超过721个赞
知道小有建树答主
回答量:390
采纳率:100%
帮助的人:271万
展开全部
push ax
pop ax
是为了保护ax的值在函数调用前后一致
因为在函数中用到了ax寄存器,所以要把它先保存起来
函数执行完毕了再恢复
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式