組合語言用指令PUSHA到底把,哪些壓棧了

2021-03-03 21:27:11 字數 3204 閱讀 3781

1樓:永恆

把通用暫存器 ax, cx, dx, bx, sp, bp, si 及 di 順序壓入棧中

組合語言用指令pusha到底把、哪些壓棧了呢?

2樓:清風迎明月

如果是51微控制器,那麼沒有push a指令,可以是push acc。進棧時,看你的sp開在什麼地方,先要對sp加1,再進棧。

例如:mov sp,#60h

push acc

那麼,執行push acc時,先sp+1,那麼sp指向61h,然後將acc的內容推入61h中!

3樓:水墨御風

是51微控制器的吧,應該是將直接地址所指向的目的運算元送入sp所指向的單元吧!實現入棧操作。

4樓:匿名使用者

通用暫存器的內容壓入堆疊。這些暫存器按以下順序儲存到堆疊:eax、ecx、edx、ebx、ebp、esp(原始值)、ebp、esi 及 edi(如果當前運算元大小屬性為 32)

組合語言call指令都將什麼壓入堆疊?int指令呢?

5樓:會點魔法

call指令bai段內呼叫將指令指標ip入棧du,段zhi

間呼叫先入棧dao段基址cs,再入棧ip。call呼叫ret返回再講地址彈回出,相關變數答

值改變。而int指令要先將flags(狀態標誌位)入棧,再將cs入棧,再將ip入棧,然後還要將相關暫存器值入棧,iret返回後,相關暫存器的值不發生變化。不知我有沒有將call和int指令內容給你講明白,不明白再問哈

6樓:

首先指令暫存器在16/32/64位下分別是ip,eip,rip,標誌暫存器是flags,eflags,rflags

下面都以32位為例

call將下一條指令的cs:eip壓入堆疊int要看是專什屬麼模式,還有是否更改cpl,行為比較複雜,反正最後壓入堆疊的三個是eflags,cs和下一條指令的eip

具體可以參考intel或amd的文件

組合語言中什麼是壓棧出棧?

7樓:匿名使用者

棧是一種線性資料結構,它遵循後進先出的順序。有一個指標總指向棧頂。打個比方:

一個棧就相當於一個桶,入棧就是向裡面裝東西,先裝的在下面後裝的在上面,裝一個指標就會加1,指向新裝的東西,出棧就相當於取出東西,只有先取上面的,再取下面的,當取一個後指標就會減一,即指標始終指向桶裡最上面那個東西。

8樓:匿名使用者

可以理解成機槍的彈夾,彈夾就是一個棧,子彈一顆一顆壓進去,就是壓棧,有個順序特點就是先進後出,後進先出,出棧就是子彈裝號了一顆一顆打出來,棧的清理就是把彈夾清空,清掉彈夾裡的子彈。堆疊就是把子彈放到彈夾裡,堆在那裡了,實際意思都差不多。

c語言裡棧就可以用陣列來做,把資料像子彈一樣壓陣列裡就是了。

9樓:匿名使用者

壓棧就是一個指令,遵循先進先出,後進後出原理,為了在產生中斷時候,可以儲存資料用的。

彙編中如何將中文壓棧 5

10樓:匿名使用者

比如baipush 0x00216f6c

是壓如一個地址啊du

那也就是說你的「test hello!」zhi 字串是放在這個地址dao的內(如果是的話)

彙編push壓桟指令 5

11樓:砍侃看

push可以儲存現場,然後呼叫其他函式,等其他函式返回後,又可以接著原來的執行。push也可以將引數傳遞給函式呼叫。當然還有其他的作用。

組合語言指令大全,要詳細的 !!!!

12樓:匿名使用者

最佳答案ibm-pc組合語言指令集

資料傳送指令集

mov功能: 把源運算元送給目的運算元

13樓:蟹蟹沒有蟹黃堡

一、資料位傳送指令:

1、mov c, bit ;bit 可直接定址位 c←(bit)

2、mov bit,c ;c 進位位 (bit) ← c

二、位變數修改指令:

1、clr c ; 將c=0

2、clr bit

3、cpl c ; 將c求反再存入c

4、cpl bit ; 將bit求反再存入bit

5、setb c ; 將c=1

6、setb bit ; (bit) ← 1

三、位變數邏輯指令:

anl c, bit anl c, bit orl c, bit orl c, bit

延展閱讀:

彙編指令是組合語言中使用的一些操作符和助記符,還包括一些偽指令(如assume,end)。用於告訴彙編程式如何進行彙編的指令,它既不控制機器的操作也不被彙編成機器**,只能為彙編程式所識別並指導彙編如何進行。

通用資料傳送指令:

1、mov 傳送字或位元組;

2、movsx 先符號擴充套件,再傳送;

3、movzx 先零擴充套件,再傳送;

4、push 把字壓入堆疊;

5、pop 把字彈出堆疊;

6、pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓入堆疊;

7、popa 把di,si,bp,sp,bx,dx,cx,ax依次彈出堆疊;

8、pushad 把eax,ecx,edx,ebx,esp,ebp,esi,edi依次壓入堆疊;

9、popad 把edi,esi,ebp,esp,ebx,edx,ecx,eax依次彈出堆疊;

10、bswap 交換32位暫存器裡位元組的順序;

11、xchg 交換字或位元組( 至少有一個運算元為暫存器,段暫存器不可作為運算元);

12、cmpxchg 比較並交換運算元( 第二個運算元必須為累加器al/ax/eax );

13、xadd 先交換再累加( 結果在第一個運算元裡 );

14、xlat 位元組查錶轉換;

15、bx 指向一張 256 位元組的表的起點, al 為表的索引值 (0-255,即0-ffh);

16、返回 al 為查表結果。( [bx+al]->al )

彙編的ADD指令組合語言中ADD加法指令的問題

為你解答 你使用哪個暫存器啊?就替你選擇使用r5暫存器吧 另外暫存器加1功能 的實現的 最好使用現成的微控制器本身就有的加1指令 inc r5 就可以實現暫存器r5的加1 如果使用 add指令 一條完成不了 add指令必須以累加器a做為目的運算元 需要用到 mov a,r5 add a,1 mov ...

組合語言中st指令什麼意思組合語言中,ST指令什麼意思?

st是store的簡寫,ld是load簡寫,前面一個是寫,後面一個是讀。st是源暫存器 儲存區,ld是儲存區 目的暫存器。字資料傳送指令 ld,st 這是最簡單的資料傳送指令,不用考慮符號位的問題,直接以機器的位長存取資料。ld 從記憶體中取32位字資料放人暫存器,st將暫存器中的32位字資料儲存到...

組合語言裡jc指令時啥意思JC在組合語言中什麼意思

jc jump if carry 當運算產生進位標誌時,即cf 1時,跳轉到目標程式處。例如 add al,bl jc carrybit inc al 如果al bl產生了進位,這一句就不執行了。carrybit neg al 這段程式沒有任何意義,僅僅作為示例哈。相同的指令還有 jnc,當cf 0...