如图片 ,假设,SI=3333H ,AX=2222H.
执行 以上内容交换命令后
AX=3333H,SI=2222H.
在书中说的堆栈操作始终遵守“后进先出”的原则,这里为什么要先出AX呢?
最后二条 POP 的命令谁能详细解释一下,我始终摸不到头脑?不知道是怎么得到的这个结果?谢谢
命令
PUSH AX
PUSH SI
...........
POP AX
POP SI
我明白 呀,但是这里 AX与SI的内容交换命令为什么要先出来下面的呢? 而且结果是怎么变成这样的呢?
PUSH AX
PUSH SI
...........
POP AX
POP SI
汇编语言用堆栈指令将寄存器AX与SI的内容交换。 PUSH AX PUSH SI...
push AX 先把AX的值入栈 push SI 然后把SI的值入栈 pop AX 是把后压入的SI的值弹到AX pop SI 是把先压入的AX的值弹到SI 是数据的后进先出,不是寄存器的后进先出。这样就可以达到交换寄存器数据的目的。同样,如果不是要达到交换数据的目的,而仅仅是用栈保存寄存器的原值,那么就应该...
汇编语言利用堆栈复制内存中的数据
原理上,先修改堆栈的相关寄存器以指向0000:200 或者是0000:20F;然后从03FF:0~03FF:F取数并一一执行入栈操作即可;最后记得恢复堆栈的相关寄存器值;如果是8086系统,修改0段数据,是相当危险的;
汇编语言中的PUSH的用法
PUSH的操作过程是: (SP)<--(SP)-2,((sp))<--OPRD 即先修改堆栈指针SP(压入时为自动减2),然后,将指定 的操作数送入新的栈顶位置。此处的((SP))<--OPRD,也可以理解为:[(SS)*16+(SP)]<--OPRD 或 [SS:SP]<--OPRD 示例: PUSH DX PUSH BP PUSH CS PUSH DATA1 PUSH ALFA...
汇编push和pop指令
push寄存器:将指定寄存器的内容压入栈顶。pop寄存器:从栈顶弹出数据到指定寄存器中。下面通过一段汇编代码演示栈操作的实现过程,代码使用MASM编辑器进行编写(假设使用了王爽的环境配置)。假设选择10000H至10000FH的内存空间作为栈区,初始状态下栈为空。设置寄存器ax和bx的值,然后使用push指令将ax和bx...
汇编语言两条指令 push ax push ds 执行后结果是什么
push ds sub ax,ax push ax 这三条语句是为后面的ret做准备,ret即执行pop ip, pop cs,执行完ip的值为0,cs的值为ds。程序转移到程序PSP的起始地址,起始地址的前两个字节放的是int 20指令,用于返回DOS。不过不推荐这样做,现在常用 mov ax 4c00h int 21h;终止程序,返回值为al....
汇编语言的一些程序设计题,谁能举例解答一下
1、交换可以用堆栈进行,AX。BX相互交换内容 PUSH AX PUSH BX POP AX POP BX 这样AX和BX内容就交换了 2、为了方便你理解,写一些不正确的表达式吧 MOV AX,0 相当于 int a=0;XOR AX,AX XOR这个指令,如果后面两个数相同,则为0,并将0存放到第一个寄存器AX中 SUB AX,AX 相当于 ...
汇编提:写出下列各指令执行后寄存器的值 ,本人为其他人问的,我不懂这...
mov 59 2000H sp(2000H)mov AX 3000H mov BX 5000H push AX sp(3000H)push BX sp(5000H)pop AX AX(5000H)pop BX BX(3000H)把AX和BX两个寄存器的值进行互换。
PUSH AX PUSH BX PUSH CX POP CX POP AX POP BX 为什么结果是AX和BX...
连续执行push AX、push BX、push CX三个指令,使得AX、BX、CX的值在栈中由高地址向低地址依次排列。这里强调的是值,而非寄存器本身。当执行pop CX、pop AX、pop BX时,依次将栈顶数据弹出至CX、AX、BX寄存器。注意,这里的"寄存器"指的是实际存放数据的位置。连续的三个push指令使得栈顶存放的...
用汇编语句编写指令(语句即可) 1.将寄存器al中的高4位取反,低4位置1...
1.XOR AL,0F0H OR AL,0FH 2.XOR AX,AX
用汇编语言写一过程用来清屏
用汇编语言写一过程用来清屏,过程中的数皆为十六进制。push es\/pushf ;将过程中破坏的寄存器压栈 push ax\/push cx\/push di mov ax,b800\/mov es,ax ;置显示缓冲段址 cld\/xor di,di ;置显示缓冲偏移 mov cx,07ff SSX:mov al,20\/stosb ;写显示缓冲区字符 mov al,07\/stosb ...