組合語言字串複製指令?PUSH和POP指令必須成對出現嗎?如果不必要那在什麼情況不需要,什麼情況需要

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

1樓:

push和pop指令必須成對出現,否則出錯;在不影響返回後的程式的值,可不需要;一般中斷程式都要用到,例如:累加器a,影響a的值,就必須要用push acc和pop acc;在用到查表時兩者都用到dptr時,就必須要用push dph push dpl和pop dpl pop dph,如果影響到c,ri時就必須要用push psw和pop psw等

2樓:匿名使用者

所謂push和pop從本質上講是堆疊指標的移動。

如果你能保證指標移動正確,也可以不配對使用。

3樓:匿名使用者

這個是堆疊的操作,你想想,把資料壓入(push)堆疊,不彈出來(pop)棧頂指標怎麼變化啊?所以必須要成對出現!否則編譯會報錯!

關於組合語言中的push問題。

4樓:匿名使用者

每次repet開始,來cx是需要檢測的字元數自,si是需要bai檢測字元系列du

一端地址

如對字zhi符系列檢測時:abcdefaceda

首次進入,

daocx=11,si指向第一個字元

push cx在堆疊儲存cx,

迴圈利用cx,結合loop comp實現整個字元系列遍歷檢測(所謂的內迴圈)

取出cx賦予dx,--dx,檢測是否為零,即是否還有字元需要檢測

【事實上push,pop這些操作你只需當它是引數傳遞與儲存即可】事實上

第二行與第三行push cx,pop dx完全沒意義,可以去掉

事實上,在next1子指令系列中

可以不用dx,直接使用 pop cx, 掉dec dx與mov cx,dx,將jnz repet 改為loop repet

順便說一句,事實上該程式的si事實上是:第一次遍歷先指向最後一個字元,然後向前遍歷;第二次遍歷指向倒數第二個字元,然後向前遍歷;。。。

5樓:

基本的copy框架bai如下自

du己分析下不難

zhi理解!dao

repet:

push si

push cx

push cx

pop dx

......

next1: pop dx

pop si

dec si

dec dx

mov cx,dx

jnz repet

6樓:匿名使用者

推ds小斧頭,斧頭

push ax

com程式通常使用,儲存在ds:0000一個int 20h指令,執行上面的**,以便使用retf int 20h ,從而使該程式結束。

7樓:匿名使用者

第一次是儲存cx,第二次是將cx值傳遞給dx

8樓:匿名使用者

所以專業,你為什麼不讀書了嗎?

資料暫存器累加器,通用暫存器。累加器保

回存的計算結答果,通用暫存器儲存資料。

**段,當然,是儲存當前正在執行的**;

資料段的資料儲存在當前程式;

儲存的返回地址和程式引數(地址堆疊段)子程式呼叫;

的其他部分也儲存資料,但一般儲存的批處理計算的結果。

組合語言中,push和pop對cs:ip有什麼影響?

9樓:絲屢

push和pop指令一般用在調復

用子程制序之前用來保護現場,以便返回bai時返回到正確的du**處。zhi在中斷時,系統也dao

預設的會將一些暫存器的值壓入堆疊。push指令,將ip壓棧,用於儲存斷點,sp先減2指向棧頂,再將ip(16位地址,即一個字)低八位存進低地址((sp)=ip低八位)),高八位存進高地址(sp+1)=ip高八位;pop指令的過程相反。如果是段內呼叫,cs是不變的,僅對ip有影響;段間呼叫時,則需要將cs壓入堆疊,所以對cs和ip均有影響。

10樓:保險經紀人王巨集

看是16位還是32位!

組合語言指令 JMP BYTE PTR

兔老大米奇 jmp指令的運算元是地址,實際執行效果是修改ip的值。由於byte ptr使得bx指向的資料為位元組型別,而ip為字型別,資料型別不匹配,故該指令不正確。指令的正確寫法可以是jmp word ptr bx 此時將bx指向的字型別資料賦給ip 或者jmp dword ptr bx 該指令把...

組合語言中的返回指令rst問題,組合語言中的返回指令Rst問題

先澄清一下你問得模糊的地方。1 你說的 rst 返回指令應該是 ret 吧?2 sp 不叫堆疊指令,它是堆疊指標,估計是stack pointer的首字母。該指標總是指向堆疊的棧頂,即始終存放的是棧頂的地址。堆疊的工作原理可簡述為 後進先出 即lifo,last in first out。具體解釋請...

有關組合語言指令的問題

mov al,ebx 將ebx為地址中的內容放到al中,其中ebx為32位元暫存器,只使用低16位 mov eax,table bx 應該是talbe bx 吧,就是把段地址為table,偏移地址為bx的內容放到eax中,同上,只使用低16位 mov ax,ebx esi 將偏移地址ebx與變址es...