1. 程式人生 > >《匯編語言》第二節學習心得

《匯編語言》第二節學習心得

程序員 執行 讀寫 word 部件 舉例 心得 語言 輸入

第二章寄存器主講相關寄存器的內容,寄存器是CPU中的主要部件,是CPU中程序員可以用指令讀寫的部件,主要用於進行信息存儲。8086CPU有14個寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。

① AX、BX、CX、DX通常用於存放一般性的數據,稱為通用寄存器。一個16位寄存器可以存儲一個16位的數據,數字範圍為0-2的16次方減1,無符號數據範圍。而8086CPU的AX、BX、CX、DX這4個寄存器可分為兩個可獨立使用的8位寄存器來使用。AX可分為AH和AL,BX可分為BH和BL,CX可分為CH和CL,DX可分為DH和DL。AX的低8位(0位到7位)構成了AL寄存器,高8位(8位-15位)構成了AH寄存器。、

②8086CPU可一次性處理兩種尺寸的數據。1.字節,記為byte,一個字節由8個bit組成 2.字,記為word,一個字由兩個字節組成,兩個字節分別稱為這個字的高位字節和低位字節。

③匯編指令舉例 mov ax,18:將18送入寄存器AX:AX=18

mov ah,78:將78送入寄存器AH:AH=78

add ax, 8 :將寄存器AX中的數值加上8: AX=AX+8

mov ax, bx :將寄存器BX中的數據送入寄存器AX :AX=BX

add ax, bx:將AX和BX中的數值相加,結果存在AX中: AX=AX+BX

寫一條匯編指令或一個寄存器的名稱時不區別大小寫。、

ax與al只能存放4位十六進制的數據,當超過4位時,高位的無法被保存,應去除。

運算時需要註意,al是作為一個獨立的8位寄存器來使用的,和ah沒有關系,CPU在執行這條指令時會認為ah和al是兩個不相關的寄存器。

④8086是16位結構的CPU,在8086內部,能夠一次性處理、傳輸、暫時儲存的信息的最大長度是16位的。內存單元的地址在送上地址總線之前,必須在CPU中處理、傳輸、暫時存放,對於16位CPU,能一次性處理、傳輸、暫時儲存16位的地址。

⑤8086CPU若需要傳送20位地址,需要采用一種在內部用兩個16位地址合成的方法來形成一個20位的物理地址。8086CPU在讀寫內存時:

1.CPU中的相關部件提供兩個16位的地址,一個稱為段地址,另一個稱為偏移地址;

2.段地址和偏移地址通過內部總線送入一個稱為地址加法器的部件;

3.地址加法器將兩個16位地址合成為一個20位的物理地址;

4.地址加法器通過內部總線將20位物理地址送入輸入輸出控制電路;

5.輸入輸出控制電路將20位物理地址送上地址總線;

6.20位物理地址被地址總線傳送到存儲器。

地址存儲器采用物理地址=段地址x16+偏移地址的方法用段地址和偏移地址合成物理地址。段地址x16一個更為常用的說法是左移4位,位指二進位。

⑥“段地址x16+偏移地址=物理地址”的本質含義:CPU在 訪問內存時,用一個基礎地址(段地址x16)和一個相對於基礎地址的偏移地址相加,給出內存單元的物理地址。即 基礎地址+偏移地址=物理地址。

CPU訪問內存單元時,必須向內存提供內存單元的物理地址。8086CPU在內部用段地址和偏移地址移位相加的方法形成最終的物理地址。CPU可以用不同的段地址和偏移地址形成同一個物理地址。偏移地址16位,變化範圍為0-FFFFH,僅用偏移地址來尋址最多可尋64KB個內存單元。並且可以根據需要,將地址連續、起始地址為16的倍數的一組內存單元定義為1個段。

《匯編語言》第二節學習心得