关于汇编语言问题,入栈出栈什么用
一个程序开始的时候,下面指令什么意思PUSHDSSUBAX,AXPUSHAXMOVAX,DATMOVDS,AX...
一个程序开始的时候,下面指令什么意思
PUSH DS
SUB AX, AX
PUSH AX
MOV AX, DAT
MOV DS, AX 展开
PUSH DS
SUB AX, AX
PUSH AX
MOV AX, DAT
MOV DS, AX 展开
7个回答
展开全部
保护数据用。就是将DS AX 里的数据先暂存在堆栈里,这就是入栈(指令为PUSH)。然后,可以对它们进行操作而不会影响原来的数据。到需要原来的数据时,再出栈(POP) 。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用于缓存数据,保护寄存器或者进行寄存器与寄存器间数据传输。而且有些寄存器的值只能通过堆栈操作完成。比如程序寄存器的值CS只能通过堆栈操作完成读取:
push cs
pop bx; 或者 pop ds之类。
也用于子函数(子例程,通过Call指令调用)的参数传递。
CALL _SUB
_SUB: PUSH AX ; 保存AX
PUSH BX ; 保存BX
mov AX, 128; 因为下面会改写这两个寄存器
mov BX, 125;
.... ; 进行相关功能操作
POP BX ; 完成后恢复BX值
POP AX ; 完成后恢复AX值
RET
push cs
pop bx; 或者 pop ds之类。
也用于子函数(子例程,通过Call指令调用)的参数传递。
CALL _SUB
_SUB: PUSH AX ; 保存AX
PUSH BX ; 保存BX
mov AX, 128; 因为下面会改写这两个寄存器
mov BX, 125;
.... ; 进行相关功能操作
POP BX ; 完成后恢复BX值
POP AX ; 完成后恢复AX值
RET
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
汇编语言中堆栈的操作有专门的语句指令。
入栈指令是:PUSH
出栈指令是:POP
比如:
MOV A,30H ;将一个压缩BCD码送累加器A
PUSH ACC ;压栈保护
ANL A,#0FH ;保留低四位
MOV 30H,A ;回送给30H
POP ACC ;出栈
SWAP A ;高低四位互换
ANL A,#0FH ;保留低四位
MOV B,#10 ;B送10
MUL AB ;乘10
ADD A,30H ;与个位相加
MOV 30H,A ;回送给30H
以上程序段将一个压缩BCD码转换为十六进制。
入栈指令是:PUSH
出栈指令是:POP
比如:
MOV A,30H ;将一个压缩BCD码送累加器A
PUSH ACC ;压栈保护
ANL A,#0FH ;保留低四位
MOV 30H,A ;回送给30H
POP ACC ;出栈
SWAP A ;高低四位互换
ANL A,#0FH ;保留低四位
MOV B,#10 ;B送10
MUL AB ;乘10
ADD A,30H ;与个位相加
MOV 30H,A ;回送给30H
以上程序段将一个压缩BCD码转换为十六进制。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
以上的回答,全都是错误的。
楼主的所问的这些指令:
PUSH DS
SUB AX, AX
PUSH AX
具有特定的含义,是不能简单的解释为:保护数据。
这几句,是和 DOS 操作系统配合使用的。
这几句,是为了正确结束应用程序,而编写的。
楼主的所问的这些指令:
PUSH DS
SUB AX, AX
PUSH AX
具有特定的含义,是不能简单的解释为:保护数据。
这几句,是和 DOS 操作系统配合使用的。
这几句,是为了正确结束应用程序,而编写的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询