成為頂級黑客--計算機內存基本知識(三)

主要內容是寄存器的分類和七種尋址方式。每個尋址方式都有配圖,便於理解。

成為頂級黑客--計算機內存基本知識(三)

CPU寄存器結構

通用寄存器:

數據寄存器:

  • AH(8位) AL(8位) AX(16位) (AX和AL又稱累加器)
  • BH(8位) BL(8位) BX(16位) (BX又稱基址寄存器,唯一作為存儲器指針使用寄存器)
  • CH(8位) CL(8位) CX(16位) (計數器,CX用於字符串操作,控制循環的次數,CL用於移位)
  • DH(8位) DL(8位) DX(16位) (數據,DX一般用來做32位的乘除法時存放被除數或者保留餘數)

指針寄存器:

  • SP 堆棧指針 (存放棧頂地址)
  • BP 基址指針 (存放堆棧基址偏移)

變址寄存器:

  • SI 源地址 (源變址寄存器)
  • DI 目的地址 (目的變址寄存器)

控制寄存器:

  • IP 指令指針
  • FLAG 標誌寄存器

段寄存器

  • CS 代碼段 IP
  • DS 數據段
  • SS 堆棧段 SP BP
  • ES 附加段

七種尋址方式

立即尋址方式

操作數作為指令的一部分而直接寫在指令中,這種操作數稱為立即數,這種尋址方式也就稱為立即數尋址方式。立即數可以是8位、16位或32位,該數值緊跟在操作碼之後。如果立即數為16位或32位,那麼,它將按“高高低低”的原則進行存儲。立即數尋址方式通常用於對通用寄存器或內存單元賦初值。

例: MOV AX, 4576H

成為頂級黑客--計算機內存基本知識(三)

直接尋址方式

寄存器尋址方式

不是直接給出一個地址,而是給出一個寄存器,操作數就放在寄存器裡面,只要找到寄存器,就能找到寄存器裡面的操作數。因此稱為寄存器尋址。

例:MOV P1,A;把寄存器A中的操作數88H送到P1口中。

成為頂級黑客--計算機內存基本知識(三)

寄存器尋址示意圖

寄存器直接尋址方式

在通常情況下,操作數存放在數據段中,所以,其物理地址將由數據段寄存器DS和指令中給出的有效地址直接形成,但如果使用段超越前綴,那麼,操作數可存放在其它段。

例:假設有指令:MOV BX, [1234H],在執行時,(DS)=2000H,內存單元21234H的值為5213H。由於1234H是一個直接地址,它緊跟在指令的操作碼之後,隨取指令而被讀出;訪問數據段的段寄存器是DS,所以,用DS的值和偏移量1234H相加,得存儲單元的物理地址:21234H;取單元21234H的值5213H,並按“高高低低”的原則存入寄存器BX中。所以,在執行該指令後,BX的值就為5213H。

成為頂級黑客--計算機內存基本知識(三)

寄存器直接尋址方式

寄存器間接尋址方式

操作數在寄存器中,操作數的有效地址用SI、DI、BX和BP等四個寄存器之一來指定,稱這種尋址方式為寄存器間接尋址方式。

例: mov bx,[DI] ,在執行時,(DS)=1000h,(DI)=2345h。根據寄存器間接尋址方式的規則:在執行本例指令時,寄存器DI的值不是操作數,而是操作數的地址。該操作數的物理地址應由DS和DI的值形成,即:PA=(DS)*16+DI=1000h *16 +3456h = 123456h。所以,該指令的執行效果是:把從物理地址為12345h開始的一個字的值傳送給BX。

成為頂級黑客--計算機內存基本知識(三)

寄存器間接尋址方式

寄存器相對尋址方式

操作數在存儲器中,其有效地址是一個基址寄存器(BX、BP)或變址寄存器(SI、DI)的內容和指令中的8bit、16bit偏移量之和。

例: mov bx,[SI+100H],在執行它時,(DS)=1000H, (SI)=2345H,內存單元12445H的內容為2715H,該指令執行後BX的值為:根據寄存器相對尋址方式的規則,在執行本例指令時,源操作數的有效地址EA為:EA=(SI)+100H=2345H+100H = 2445H。該操作數的物理地址應由DS和EA的值形成,即:PA=(DS)*16+EA=1000H*16+2445H = 12445H。所以,該指令的執行效果是:把從物理地址為12445h開始的一個字的值傳送給BX.

成為頂級黑客--計算機內存基本知識(三)

寄存器相對尋址方式

基址加變址尋址方式

操作數在存儲器中,其有效地址是一個基址寄存器(BX、BP)和一個變址寄存器(SI、DI)的內容之和。

例:MOV BX , [BX+SI],在執行時,(DS)=1000H,(BX)=2100H, (SI)=0011H。內存單元12111H的內容為1234H,問該指令執行時,BX的值:根據基址+變址尋址方式的規則,在執行本例指令時,源操作數的有效地址EA為:EA=(BX)+(SI)=2100H+0011H=2111H。該操作數的物理地址應由DS和EA的值形成,即PA= (DS)*16+EA=1000H*16+2111H = 12111H。所以,該指令的執行效果: 把從物理地址為12111H開始的一個字的值傳送給BX。

成為頂級黑客--計算機內存基本知識(三)

基址加變址尋址方式

相對基址加變址尋址方式

操作數在存儲器中,其有效地址是一個基址寄存器(BX、BP)的值、一個變址寄存器(SI、DI)的值和指令中的8bit、16bit偏移量之和。

例:MOV AX, [BX+SI+200H],在執行時,(DS)=1000H,(BX)=2100H,(SI)=0010H,內存單元12310H的內容為1234H。問該指令執行後,AX的值為:根據相對基址加變址尋址方式的規則,在執行本例指令時,源操作數的有效地址EA為:EA=(BX)+(SI)+200H = 2100H+0010H+200H=2310H。該操作數的物理地址應由DS和EA的值形成,即:PA=(DS)*16+EA=1000H*16+2310H = 12310H。所以,該指令的執行效果是:把從物理地址為12310h開始的一個字的值傳送給AX。

成為頂級黑客--計算機內存基本知識(三)

相對基址加變址尋址方式


分享到:


相關文章: