成为顶级黑客--计算机内存基本知识(三)

主要内容是寄存器的分类和七种寻址方式。每个寻址方式都有配图,便于理解。

成为顶级黑客--计算机内存基本知识(三)

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。

成为顶级黑客--计算机内存基本知识(三)

相对基址加变址寻址方式


分享到:


相關文章: