組合語言用堆疊指令將暫存器AX與SI的內容交換。PUSH AX PUSH SIPOP AX POP SI

時間 2021-09-02 20:58:47

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...