天天看點

cpu 執行程式的過程(微機原理)

自己所做的整理 歡迎指正

       以一個小程式為例

   1:mov ax,1234 ; 将1234傳送到ax累加器中 

   2:add ax,fedc;  1234與fedc相加結果存放在ax中

   3:mov bx,5678; 将5678傳送到bx寄存器中

   4:mov ss,bx;   将bx中的5678傳送到ss中去

   5:inc bx;      5678加1

   6:mov ds,bx;   将5679傳送到ds資料段寄存器

   7:inc bx;      567a加1

   8:mov di,bx;  将bx中的内容傳送到di中

   9:mov [di],ax;将ax中的内容傳送到位址為567b的位置中

   10:inc bx;bx中567b加1

   11:inc di;di中567b加1

   12:mov [di],bx;将bx中的内容傳送到位址為di的位址中去

   13:mov cx,6666;将6666傳送到cx寄存器中去

  1)輸入完源程式之後,回車退回到debug的指令行狀态,然後使用-t指令,單步執行并觀察第二條語句執行前、後flag register(标志寄存器)中各個二進制位的變化 如圖

cpu 執行程式的過程(微機原理)

寄存器發生變化有如下解釋

标志寄存器每一位的狀态表示如下

溢出标志OF(Over flow flag)            OV(1)      NV(0)

方向标志DF(Direction flag)            DN(1)      UP(0)

中斷标志IF(Interrupt flag)            EI(1)      DI(0)

符号标志SF(Sign flag)                 NG(1)      PL(0)

零标志ZF(Zero flag)                   ZR(1)      NZ(0)

輔助标志AF(Auxiliary carry flag)      AC(1)      NA(0)

奇偶标志PF(Parity flag)               PE(1)      PO(0)

進位标志CF(Carry flag)                CY(1)      NC(0)

AF為輔助進位标志,本次運算結果,低四位向高四位有進位,AF=1.。是以由NA變為AC

     Cf為進位标志。該程式中1234加fedc運算結果的最高位産生一個進位。是以由nc變為cy

2)用-t指令單步執行 然後觀察第9條語句執行的結果

cpu 執行程式的過程(微機原理)

  3)認真分析以上程式段的第9和12條語句傳送的操作數分别是什麼?這兩條指令執行之後,找到操作數最後的存放位置。當找到了操作數之後,你觀察這兩次存放的資料都在嗎?還是丢了一部分?這說明了什麼?

    答:第9條操作數是ax 中的内容 即為1110

        第12條操作數是bx中的内容即為567b

        第9和12均為間接尋址。是以[di]存放的是要存儲的位址。這兩次存放的資料都在。 這是因為間接尋址中第11步中di加1,表示第  12步中存儲在另一個位址中,是以它們不會互相影響。

4)了解彙編語言中源程式和機器語言中機器代碼,它們之間的差別:

1. 機器語言 機器語言是用二進制代碼表示的計算機能直接識别和執行的一種機器指令的集合。它是計算機的設計者通過計算機的硬體結構賦予計算機的操作功能。機器語言具有靈活、直接執行和速度快等特點。

   2.彙編語言  彙編語言是一種用助記符表示的仍然面向機器的計算機語言。彙編語言亦稱符号語言。彙編語言采用了助記符号來編寫程式,比用機器語言的二進制代碼程式設計要友善些,在一定程度上簡化了程式設計過程。彙編語言的特點是用符号代替了機器指令代碼,而且助記符與指令代碼一一對應,基本保留了機器語言的靈活性。使用彙編語言能面向機器并較好地發揮機器的特性,得到品質較高的程式。

5)整個實驗過程附圖如下:

cpu 執行程式的過程(微機原理)

繼續閱讀