彙編用push指令時怎麼說明儲存器運算元是16位還是32位

時間 2021-08-14 23:02:28

1樓:

如若樓主問的是pc下的彙編,那麼

麻煩不要被樓下誤解。。。囧

x86彙編中push指令是不支援8位運算元的(請自行在debug下試試push al 是不是合法指令)

8086中push指令不需要任何說明,傳送的一律是字單元

push指令的運算元可以是立即數 ,暫存器,記憶體單元,只要給出即可,不許任何說你,因為8086 的push/pop指令操作的運算元一律是字單元

386以後的cpu

push指令支援了雙字操作

如果是暫存器運算元,毫無疑問,匯程式設計序(or稱之為編譯器?)會自動判斷運算元是字單元還是雙字單元,比如 push ax;push eax;都可以很清晰明了的看出來目的運算元是幾位的

對於立即數

如果在程式設計的時候 前面指定了偽指令.386

那麼程式中出現的立即數入棧 都將被認為是雙字立即數

對於要把乙個記憶體單元的內容入棧

這個時候是需要用 word ptr 和dword ptr來指出運算元是16位的還是32位的

2樓:夢碼工作室

push 暫存器時,不用說明位數的push al自然是8位,push ax是16位,push eax是32位,機器自動識別

如果是常數或變數,則需要如 push byte ptr 5 push word ptr [vala]

彙編中push指令後面可以直接加數字嗎?

3樓:言寺音勻

push 指令後面可以壓入立即值,但限於一位元組,即0-255push 1

push 12

push 可以壓入記憶體,但必須指定型別

push word ptr [100]

push dword ptr [100]

push 可以壓入任何16或32位暫存器(ip除外)使用格式為:

push data

比如:push  50

當sp=0100h時,執行該語句後0100h這個位址中就存入了50這個資料。

與之對應的是pop語句,這個語句後面是不能跟數字的,因為pop後面是目標位址。

win32彙編中, push 乙個數 //編譯器如何區分這個數是,位址,還是常數??

4樓:

你去看看實際指令長什麼樣的你就明白了……這兩條指令迥異譬如push [0ch] = ff 36 0c 00push 0ch = 6a 0c

雖然都是push,但對應的指令其實是不同的,明白否?

5樓:匿名使用者

位址和常數 都是乙個值。 是一樣的東西,

組合語言push ch合法嗎?為什麼? 20

6樓:匿名使用者

不合法,push語句16位下支援的是字操作,ch是位元組操作,所以是不合法

附:格式: push oprd

功能: 實現壓入操作的指令是push指令

說明:1. oprd為16位(字)運算元,可以是暫存器或儲存器運算元.

2. push的操作過程是: (sp)<--(sp)-2,((sp))<--oprd 即先修改堆疊指標sp(壓入時為自動減2),然後,將指定的運算元送入新的棧頂位置.

此處的((sp))<--oprd,也可以理解為: [(ss)*16+(sp)]<--oprd 或 [ss:sp]<--oprd

7樓:匿名使用者

你說的是cx的ch嗎?

和人告別時,用英語怎麼說,和,用英語怎麼說

goodbye.bye bye.see you later soon tomorrow farewell to sb.farewell比較正式 其實除了goodbye還有很多方式 可以說good luck,或者take care老外經常說talk soon 或者 chat later 也可以,比較口...

準時用英語怎麼說,愛在別離時用英語怎麼說

on time be punctual 準時,我常用的兩個。on schdule是衷於時間表。on the dot on the tick on the stroke在時間點,本身沒有準時的意思,是意譯出來的。on time be punctual 準時,這是本意。 小思思 準時的英語是on tim...

明天見寶貝英語怎麼說?明天見用英語怎麼說

dung beetle是這個意思 金龜子科,甲蟲,蜣螂。是不是和你開玩笑呢?呵呵。明天見寶貝,用英語說是 see you tomorrow,baby honey,darling,sweetheart.see you tomorrow,baby.明天見,寶貝。或者 再見,寶貝 明天見用英語怎麼說 明天...