下面的指令執行後,CPU幾次修改IP,都是在什麼時候?最後I

2023-02-15 17:00:37 字數 3597 閱讀 6209

1樓:畫扇悲風傷月夜

呵呵 雖然我也學過彙編 但老師這部分貌似沒講 好像和指令編碼有關我不大懂 幫你找了答案在網上樓主自強吧3條指令執行後,cup四次修改ip。第1次在執行 mov ax,bx後,第2次在執行sub ax,ax後,第3次在讀入jmp ax後,第4次在執行jmp ax後。最後ip中的值是0。

分析:指令mov ax,bx執行前初始ip值不變,執行後cpu第一次修改ip,讀入的指令是89 d8(mov ax,bx),長度為2byte,執行後ip=初始ip+2。繼續執行指令sub ax,ax後,cpu第二次修改ip,讀入的指令是29 c0(sub ax,ax),長度為2byte,此時ax=0,執行後ip=初始ip+2+2。

繼續讀入指令jmp ax後,cpu第三次修改ip,讀入的指令是ff e0(jmp ax),長度為2byte,讀入後ip=初始ip+2+2+2。當執行完指令jmp ax後 變為0

2樓:匿名使用者

你給的題目不全。

mov ax,0001執行指令:ax = 0001 cup讀取指令後ip改1次

mov bx,ax 執行指令:bx = ax = 0001 cup讀取指令後ip改1次

sub ax,bx 執行指令:ax = ax + bx = 0002 cup讀取指令後ip改1次

jmp 0421,004f 這裡寫的不對應該是jmp 0421:004f 執行指令cs:ip=0421:

004f,讀取記憶體地址跳到04210+004f=425f的位置上。 cup讀取指令後ip改1次 , 執行jmp修改ip 1次

但是你沒有提供記憶體地址。我不知道它接下來該跳到哪個指令執行。

到上面結束,是總共改了5次ip,ip值為004f

下面的三條指令執行後,cpu幾次修改ip?在什麼時候,最後ip值為多少?mov ax bx sub ax,ax jmp ax

3樓:匿名使用者

呵呵 雖然我也學過彙編 但老師這部分貌似沒講 好像和指令編碼有關我不大懂 幫你找了答案在網上樓主自強吧3條指令執行後,cup四次修改ip。第1次在執行 mov ax,bx後,第2次在執行sub ax,ax後,第3次在讀入jmp ax後,第4次在執行jmp ax後。最後ip中的值是0。

分析:指令mov ax,bx執行前初始ip值不變,執行後cpu第一次修改ip,讀入的指令是89 d8(mov ax,bx),長度為2byte,執行後ip=初始ip+2。繼續執行指令sub ax,ax後,cpu第二次修改ip,讀入的指令是29 c0(sub ax,ax),長度為2byte,此時ax=0,執行後ip=初始ip+2+2。

繼續讀入指令jmp ax後,cpu第三次修改ip,讀入的指令是ff e0(jmp ax),長度為2byte,讀入後ip=初始ip+2+2+2。當執行完指令jmp ax後 變為0

哪個好心人能告訴我這個怎麼做?詳細點啊》先謝謝了 下面的三條指令執行後,cpu幾次修改ip?都是在什麼時

4樓:匿名使用者

要知道ip是指令暫存器,也就是cpu要執行的指令的地址,最後ip的值當然是jmp ax要跳到的地址了。因為sub ax,ax後ax=0所以jmp ax就是jmp 0000的意思,即ip最後值為0000h,cpu每執行指令一次改變ip值所以修改三次

下面的3條指令執行後,cpu幾次修改ip? 10

5樓:匿名使用者

一共修改了4次。

第1次:從儲存器中讀取mov ax, bx指令之後,ip立即改變,指向下一條指令(sub ax, ax)的地址。

第2次:從儲存器讀取sub ax, ax之後(在此之前,會先執行mov ax, bx指令),ip立即改變,指向下一條指令(jmp ax)的地址。

第3次:從儲存器讀取jmp ax指令之後(在此之前,會先執行完sub ax, ax指令),ip立即改變,指向下一條指令的地址,這裡由於下一條指令沒有標明,所以不知道,反正此時ip的值是緊挨jmp ax之後的地址。

第4次:執行jmp ax指令後。jmp指令是通過修改ip的值來達到使程式執行跳轉的目的的,因此執行jmp之後,ip的值變為ax(此時值為0)的值,所以修改為了0。

如果程式繼續執行,那麼ip的值是儲存器中0位置指令的下一條指令的地址。

(上面的解釋是在沒有考慮指令預取、多條流水等情況下成立的!)

6樓:luke毛利

3條指令執行後,cup四次修改ip。第1次在執行 mov ax,bx後,第2次在執行sub ax,ax後,第3次在讀入jmp ax後,第4次在執行jmp ax後。最後ip中的值是0。

分析:指令mov ax,bx執行前初始ip值不變,執行後cpu第一次修改ip,讀入的指令是89 d8(mov ax,bx),長度為2byte,執行後ip=初始ip+2。繼續執行指令sub ax,ax後,cpu第二次修改ip,讀入的指令是29 c0(sub ax,ax),長度為2byte,此時ax=0,執行後ip=初始ip+2+2。

繼續讀入指令jmp ax後,cpu第三次修改ip,讀入的指令是ff e0(jmp ax),長度為2byte,讀入後ip=初始ip+2+2+2。當執行完指令jmp ax後 變為0。

為什麼執行完指令jmp ax後ip搖變為0?

看網上說 jmp這個指令要修改2次ip,我是這樣理解的 第一次先把ip入棧 因為跳轉指令麼 所以還要跳回來 用堆疊保護現場,第二次 ip會變成ax的資料 用於跳轉 ax在sub那句不就等於0了麼 所以就是0。

7樓:匿名使用者

指令是要轉化成機器碼執行的 所以對應位元組來說 ip肯定是被每條指令修改過 至於為什麼有三條執行**  ip被修改了 四次   不要忘記一個程式結束後  程式都要進行返回或者初始化狀態  所以就是4次修改ip  就跟一根繩子一樣   你一刀砍下去變成了幾根?   2刀下去變成幾根?  推理一下就知道了     我們學習的不是變成的結構   而是一種程式設計的思維  也就是物理的邏輯思維  我以前也 很不懂為什麼一堆**資料可以呈現出這麼多功能來

8樓:匿名使用者

參考圖2.7(組合語言,王爽,第3版)

每條指令相當於一個**塊對應的彙編指令,cpu每次讀取一條指令,ip+所讀指令的長度;

jmp ax 是執行時更改ip的值。

每次讀取指令更改一次,共更改三次;執行jmp指令更改一次

9樓:匿名使用者

3次,每執行完一個命令改一次ip,還有,以後去組合語言區問這個問題。

彙編小問題,摘自王爽《組合語言第二版》題目如是:這三條指令執行完後,cpu幾次修改ip?都是在什麼時候?

10樓:

1.指向mov ax,bx 後一個語句 sub ax,ax2.指向sub ax,ax 後一個語句 jmp ax3.

指向jmp ax 後一個語句(未知)4.jmp ax 時修改ip, 把它改為ax的值,就是0

組合語言,偏移地址ip移動次數與當前數值問題

11樓:做而論道

就是為什麼最後ip等於0000h他跟ax的關係是什麼?

sub ax, ax----ax=0000h

jmp ax----就是用 ax 的內容,當做目標地址。

下面的程式執行後,a的值為多少,執行下面程式中的輸出語句後,a的值是20,為什麼

第一次b 1,b 3 1成立 b 3以後b 3 1還是成立的,直到b 20才退出迴圈。比20大的最小模3為1的數字是22,這樣總共要迴圈7次,也就a 了7次,所以a 8 因為第一次時b 1,b 3 1,所以會b 3,然後continue所以每次b 3 1都為true,也就是 a 1 b 1 a 2 ...

執行軟體2分鐘後CPU佔用率,執行軟體2分鐘後CPU佔用率

大哥你就不能打遊戲的時候把別的都給關了。另外你的記憶體是多少的,如果打使命召喚7這種高檔貨遊戲需求是很高的哦。神舟優雅你玩使命召喚7,我都佩服你呀,優雅系列的我沒記錯的話,顯示卡還是整合的,只不過有外接的顯示器埠而已,1,你的機子帶win7本來就用問題,難呀,你在看電影沒有獨顯的機子,顯示卡這部分的...

電腦執行大型遊戲後,CPU溫度有76度,正常嗎

cpu溫度過高所造成所以 自動採用了 降頻 保護自己 cpu 摸一下散熱器 如果溫度正常 會不會是cpu風扇給燒壞了 我們可以看一下計算機的自檢過程 如果沒有什麼異常 我們可以基本排除了 硬體出問題 那麼會不會是bios程式中的設定引數出了什麼問題呢?我們進入bios看看 bios features...