彙編語言-第二章 寄存器(CPU工做原理)之執行指令過程(一)

<1>.初始狀態:這時,CS:2000H,IP:0000H,CPU將從內存2000H×16+0000H處取指令執行。
初始狀態.jpg
<2>.CS、IP中的內容送入地址加法器,由地址加法器完成:
物理地址=段地址×16+偏移地址
CS、IP中的內容送入地址加法器.jpg
<3>.由地址加法器將物理地址送入輸入輸出控制電路。
物理地址被送入輸入輸出控制電路.jpg
<4>.輸入輸出控制電路將物理地址20000H送上地址總線
物理地址被送上地址總線.jpg
<5>.從內存20000H單元開始存放的機器指令B8 23 01經過數據總線被傳入CPU
機器指令被送入CPU.jpg
<6>.輸入、輸出控制電路將機器指令B8 23 01送入指令緩衝器。
機器指令被送入指令緩衝器.jpg
<7>.讀取一條指令後,IP中的值自動增長,以使CPU能夠讀取下一條指令。此時,CS:IP指向內存單元2000:0003。
讀取指令後IP中的值自動增長.jpg
<8>.執行控制器指令:B8 23 01,即執行命令mov ax,0123H
執行指令.jpg
<9>.指令B8 23 01 執行後,AX中的內容爲0123H;此時,CPU將從內存單元2000:0003讀取指令。
執行指令結果.jpg內存

下面的一組圖展現了8086CPU繼續讀取、執行3條指令的過程。注意IP計劃。

<10>.初始狀況之二,這時CS:2000H,IP:0003H,CPU將從內存2000H×16+0003H處讀取指令:BB 03 00。
初始狀況之二.jpg
<11>.CPU從內存20003H處讀取指令BB 03 00入指令緩衝器,IP中的值加3.
第二條指令被讀入指令緩衝器.jpg
<12.>執行指令:BB 03 00(即mov bx,0003H)的狀況,BX中的內容爲0003H
第二條指令執行狀況.jpg
<13.>CPU從內存20006H處讀取指令89 D8入指令緩衝器,IP的值加2
第三條指令被讀入指令緩衝器.jpg.
<14.>執行指令89 D8(即mov ax,bx)後的狀況,AX中的內容爲0003H
第三條指令執行狀況.jpg
<15.>CPU從20008H處讀取指令01 D8如指令緩衝器,IP的值加2
第四條指令被讀入指令緩衝器.jpg
<16>.執行指令01 D8(即add ax,bx)後的狀況,AX中的內容變成0006H
第四條指令執行狀況.jpgim

經過上面的過程展現,8086CPU的工做過程能夠簡要描述以下:數據

  • 從CS:IP指向內存單元讀取指令,讀取的指令進入指令緩衝器
  • IP=IP+所都取指令的長度,從而指向下一條指令
  • 執行指令。轉到第一步,重複這個過程。

在8086CPU加電啓動或復位後(即CPU剛開始工做時)CS和IP被設置爲CS=F000H,IP=FFFFH,即在8086PC剛啓動時,CPU從內存FFFF0H單元中讀取指令執行,FFFF0H單元中的指令是8086PC機開機後執行的第一條指令。img

相關文章
相關標籤/搜索