1樓:匿名使用者
push ax的意思是 將ax暫存器裡的值放入棧。
pop ax的意思是講sp指向的棧頂的16位資料出棧 放入ax暫存器,
不是什麼先出ax,
是第一次 出的放到ax裡。
什麼先出呢, 後入的資料先出 3333後入, 先出放到ax裡。
哥們你太混亂了
2樓:匿名使用者
有個問題需要注意,push和pop的運算元是暫存器的值,不是暫存器本身。
push ax 先把ax的值入棧
push si 然後把si的值入棧
pop ax 是把後壓入的si的值彈到axpop si 是把先壓入的ax的值彈到si是資料的後進先出,不是暫存器的後進先出。這樣就可以達到交換暫存器資料的目的。
同樣,如果不是要達到交換資料的目的,而僅僅是用棧儲存暫存器的原值,那麼就應該這麼寫:
push ax
push si
……pop si
pop ax
3樓:超級追風箏的我
push ax的意思是將ax的資料壓入棧
第二句同理
pop ax的意思是將【原來si的資料(後進)】出棧至ax第四局同理
彙編push壓桟指令 5
4樓:砍侃看
push可以儲存現場,然後呼叫其他函式,等其他函式返回後,又可以接著原來的執行。push也可以將引數傳遞給函式呼叫。當然還有其他的作用。
組合語言中的push的用法
5樓:非常可愛
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[bx][si]
注意: 每進行一次壓入操作,都壓入乙個字(16位)。
擴充套件資料push 指令
push 指令首先減少esp的值,再將源運算元複製到堆疊。運算元是16位的,則esp減 2,運算元是32位的,則 esp減4,push指令有3種格式:
push reg/mem16
push reg/mem32
push inm32
6樓:匿名使用者
減2就是指標上移2個單元, 題中例子裡, push ax後, sp=000eh。
7樓:匿名使用者
push,彙編術語,實現壓入操作的指令是push指令;實現彈出操作的指令是pop指令。
push的操作過程是:
(sp)<--(sp)-2,((sp))<--oprd 即先修改堆疊指標sp(壓入時為自動減2),然後,將指定 的運算元送入新的棧頂位置,簡單來說:減2就是指標上移2個單元。
此處的((sp))<--oprd,也可以理解為:
[(ss)*16+(sp)]<--oprd 或 [ss:sp]<--oprd
3. 示例: push dx
push bp
push cs
push data1
push alfa[bx][si]
注意: 每進行一次壓入操作,都壓入乙個字(16位)。
8樓:文刀舍予
相當於sub sp,2
組合語言資料偽指令DUP用法,組合語言中的dup有什麼作用
茲斬鞘 10 dup 1 重複定義了10個字元素,初始值為1,佔用10 2 20個位元組。5 dup 重複定義了5個字元素 其初始值實際為0 佔用5 2 10個位元組 因此總共佔用30個位元組。具體分析 在彙編定義變數的時候會用到dup,變數名 型別 初值表,dup用於把一個相同值賦值若干次,重複次...
組合語言中je 和jne的區別,組合語言指令JG與JGE的用法區別
je 表示等於就跳轉,jne是不等於就跳轉,完全相反的意思。je jmp equal jne jmp not equal jz 表示當zf 1 時跳轉,即結果為0跳轉。jnz 即 zf 0 時跳轉,即結果不為0 跳轉。jz是零標誌位置位 1 即為0 時跳轉。jnz與上面相反,是當零標誌位置0 0 即...
求助!組合語言將段位址填寫到段暫存器的具體方法問題
data是乙個數 ds是資料段暫存器。不能對段暫存器直接給值 立即數 同理,對於其它段暫存器一樣不可直接操作 給值 立即數 乙個例子 源 mov ax,data mov ds,ax 編譯後 u 0bf2 0000 b8f30b mov ax,0bf3 0bf2 0003 8ed8 mov ds,ax...