《匯編語言》第二節學習心得
第二章寄存器主講相關寄存器的內容,寄存器是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個段。
《匯編語言》第二節學習心得