1樓:匿名使用者
先澄清一下你問得模糊的地方。
1、你說的「rst」返回指令應該是「ret」吧?
2、「sp」不叫堆疊指令,它是堆疊指標,估計是stack pointer的首字母。
該指標總是指向堆疊的棧頂,即始終存放的是棧頂的地址。
堆疊的工作原理可簡述為「後進先出」,即lifo,last-in-first-out。(具體解釋請查閱相關資料)
不同的處理器所支援的彙編指令助記符不盡相同,但是他們的含義有相似性。
下面就以ret來說說吧。
ret在51指令系統裡其含義是子程式返回。在用lcall或acall指令呼叫子程式的時候,堆疊指標sp先增加1,再把下一條將要被執行的程式計數器pc的值存入sp(這一步保證了子程式結束能正常返回原程式),然後存放子程式的儲存空間的首地址被送入pc,於是cpu可以執行子程式中的**。
在子程式結束時,要用ret指令結束,它的作用是將sp中的內容彈出到pc中。sp的內容彈出後,sp自減1,即恢復到呼叫子程式前的狀態。由於sp中的內容(即子程式呼叫前將要被執行的指令)又回到pc中,所以原程式會繼續進行。
至於sp的地址,系統復位後,sp被初始化為07h,使得堆疊區從08h開始。當然使用者也可以自己設定sp的地址,只不過要注意不要將堆疊區與其它的儲存區衝突。
2樓:匿名使用者
返回指令是相對呼叫指令而言的,在執行呼叫指令時,就會將主程式中呼叫指令的下一條指令的地址(在pc暫存器中)自動壓入到堆疊中儲存起來,當子程式執行結束後,會安排一條返回指令(目地就是為了返回到主程式中相應呼叫指令的下一條指令),執行返回指令,會自動從堆疊中將先前儲存的下條指令地址彈出到程式計數器pc中。
3樓:湯旺河邊
從被呼叫過程返回到呼叫點是通過ret指令來實現的,執行ret指令時,cpu自動從棧頂彈出一個字送給指令指標暫存器ip,返回地址是cpu通過堆疊操作自動提供的。
微控制器組合語言指令中中斷返回指令ret和reti有什麼不同?
4樓:匿名使用者
reti 是中斷返回指令;
ret 是子程式返回指令;
reti比ret多一步清除中斷優先順序狀態位,讓同級別的中斷有機會得到響應。
中斷指令「reti」做為中斷跳出指令除了將堆疊中儲存著的地址取出,送回pc;使程式從主程式的中斷處繼續往下執行的作用外,還有將「優先順序生效」觸發器清零的功能。
5樓:做而論道
ret 是子程式返回指令。
reti 是中斷服務程式返回指令。
兩者,用途不同。
6樓:匿名使用者
ret是子程式返回指令,返回到呼叫該子程式處的下一條指令執行,返回的地址是從ret執行前的sp中最後兩個值。
reti是中斷服務程式返回指令,返回到進入中斷服務的斷點處執行,返回的地址是從reti執行前的sp中最後兩個值。
7樓:匿名使用者
ret是普通子程式的返回指令,而不能用reti,所以,ret不是中斷返回指令,就是子程式返回指令。
而reti是用在中斷子程式的返回指令,必須用這個,這才叫中為返回指令,而不能用ret,這就是區別。
8樓:匿名使用者
ret是子程式返回指令,將堆疊中的地址彈出,而reti是中斷返回指令,除了將地址彈出,還將標誌彈出
組合語言問題 mul指令
9樓:匿名使用者
mul ab
乘法來指令的功能是將a和源b中兩個bai無符號8位二進位制du數相乘,所得的16位積zhi的低8位存於a中,高8位存於b中。如果乘積大於256,即高位daob不為0,則ov置1;否則ov清0,cy總是清0。
例如:設(a)=50h(80),(b)=0a0h(160)若執行mul ab,
則執行結果為:
乘積為3200h(12800),
(a)=00h,(b)=32h,(ov)=1,(cy)=0
10樓:匿名使用者
12,,25都是十六進位制數
。計算結果也是十六進位制專數
00010010
×00100101
結果屬是0000 0010 1001 10100 2 9 a
11樓:做而論道
mul bx,這是 16 位數的乘法。
它只是 ax * bx 而已,它做不到:000f 4240 * 03e8。
====
你用 100 * 100 * 100,再試試看。
12樓:孤嶋田橫
cy 進位 flag亮了
有關組合語言指令的問題
mov al,ebx 將ebx為地址中的內容放到al中,其中ebx為32位元暫存器,只使用低16位 mov eax,table bx 應該是talbe bx 吧,就是把段地址為table,偏移地址為bx的內容放到eax中,同上,只使用低16位 mov ax,ebx esi 將偏移地址ebx與變址es...
彙編JB指令,組合語言中JB,JA,是什麼意思
墨汁諾 jb是指判斷位變數轉移指令,ja jump above 大於則轉移到目標指令執行。jb p1.3,l1意思就是說判斷p1.3的值是不是 1 如果是就跳轉到l1程式執行,如果不是就順序執行下一條指令。jnae jump not above and equal 低於,即不高於且不等於則轉移,但執...
關於組合語言移植性的問題,關於組合語言中的LOOP指令
兄弟,你理解錯了,首先你要明白,組合語言是一種針對具體機器的低階語言,這裡說的不同機器一般來講是指cpu指令系統不相相容的兩種機器,比如常用的8086與51,dsp,arm,等等,他們的指令系統都不是通用的。自然移植到別的機器上不行,舉個例子來說吧,假如51,的p0埠可以用來點亮一盞燈,但是對808...