slide1
Download
Skip this Video
Download Presentation
第四章

Loading in 2 Seconds...

play fullscreen
1 / 29

第四章 - PowerPoint PPT Presentation


  • 112 Views
  • Uploaded on

第四章. 80X86 的寻址方式和指令系统. 第四章 80X86 的寻址方式和指令系统. 4.1 计算机指令的格式 符号指令的书写格式如下: 标号:操作码助记符 操作数助记符;注释 其中操作码 助记符 和 操作数 助记符是核心。 标号 代表该条指令的存放地址。它为程序分支、循环、跳转提供了转移目标地址。标号与符号指令之间用冒号 “ : ” 做间隔符。 为阅读方便,每条符号指令后面,可以有 注释 ,并用分号 “ ; ” 作间隔符。

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '第四章' - hateya


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

第四章

80X86的寻址方式和指令系统

80x86
第四章 80X86的寻址方式和指令系统

4.1计算机指令的格式

符号指令的书写格式如下:

标号:操作码助记符操作数助记符;注释

其中操作码助记符和操作数助记符是核心。

标号代表该条指令的存放地址。它为程序分支、循环、跳转提供了转移目标地址。标号与符号指令之间用冒号“:”做间隔符。

为阅读方便,每条符号指令后面,可以有注释,并用分号“;”作间隔符。

用机器指令编写的程序称为目标程序,用符号指令编写的程序称为符号程序或称汇编源程序,汇编源程序要经过汇编程序将其编辑、编译和链接才能生成CPU能识别、执行的目标程序。

slide3
第四章 80X86的寻址方式和指令系统

4.2 机器指令格式

操作码(Op) 地址码(Ad)

  • 操作码(Operation Code)
  • 地址码(Addressable Code)
slide4
第四章 80X86的寻址方式和指令系统

4.3 寻址方式

存放方式

  • 包含在指令中 立即寻址(Immediate addressing)
  • 存放在CPU中的某个寄存器 寄存器寻址(register addressing)
  • 存放在存储器中 存储器寻址
  • 存放在I/O接口电路的端口中 I/O端口寻址
slide5
第四章 80X86的寻址方式和指令系统

一、操作数寻址

操作数在内存数据区,操作数字段包含着此操作数地址。

在8086/8088中,任何内存地址是由两部分组成:

段的基地址:单元所在段的基地址

(大部分情况是数据段寄存器DS中);

段内偏移量:此单元与段基地址的距离。

有效地址EA(Effective Address):

段内偏移量为适应各种数据结构的需要,可以有几个部分组成,所以也把它称为有效地址EA。

slide6
第四章 80X86的寻址方式和指令系统

寻址方式不同EA的构成不同。

归纳EA可有多种情况构成:

直接寻址,寄存器间接寻址,寄存器相对寻址,

基址加变址寻址,相对基址加变址寻址。

寻址方式——如何寻找内存操作数。

不同寻址方式实质上是构成它段内的偏移量的方法不同。

slide7
MOV

34H

代码段

12H

AH AL

第四章 80X86的寻址方式和指令系统

1.立即寻址(Immediate Addressing)

操作数直接存放在指令中,紧跟在操作码之后,作为指令 的一部分,存放在代码段里,这种操作数称为立即数。

例:MOV AX,1234H

slide8
AX

BX

第四章 80X86的寻址方式和指令系统

2.寄存器寻址(Register addressing)

  • MOV AX,BX ;将BX寄存器中的内容送入AX寄存器中
slide9
第四章 80X86的寻址方式和指令系统

操作数在寄存器中,指令指定寄存器号。

对于16位操作数,寄存器可以是:

AX,BX,CX,DX,SI,DI,SP,BP。

以及段寄存器。

对于8位操作数,寄存器可以是:

AL,AH,BL,BH,CL,CH,DL,DH。

这种寻址方式因为操作数在寄存器中

不需要访问存储器的运算速度较高。

slide10
第四章 80X86的寻址方式和指令系统

例:

指令执行前:(AX)=3064H

(SS)=1234H

MOV SS,AX

指令执行后:

(SS)=3064H

(AX)保持不变。

SS

AX

指令执行前:

1234H

3064H

指令执行后:

3064H

3064H

寄存器寻址方式

slide11
第四章 80X86的寻址方式和指令系统

3.直接寻址(Direct addressing)

操作数地址的16位偏移量,直接包含在指令中,存放在代码段中指令操作码之后,但操作数一般存放在数据段中,必须先求出操作数的物理地址,然后再访问存储器才能取得操作数。

或(10H)

物理地址 : PA=16d×(DS)+EA

slide12
数据段

偏移地址

1200H

22H

AH AL

11H

11 22

第四章 80X86的寻址方式和指令系统

例:MOV AX,[1200H]

slide13
第四章 80X86的寻址方式和指令系统

直接寻址方式下,操作数的段地址默认为数据段,但允许段重设,即由指令定义段。

直接寻址方式适用于处理单个变量。

IBM PC机中规定双操作数指令必须有一个操作数使用寄存器方式,这就是常常先要把一个变量送到寄存器去的原因。

slide14
第四章 80X86的寻址方式和指令系统

4.寄存器间接寻址方式(Register indirect addressing)

操作数在存储器中,

操作数地址的16位偏移量包含在:

BP、BX、SI、DI寄存器中。

1) 若选择SI、DI、BX作为间接寻址

操作数一般在现行数据段区域中,用(DS)作为段地址。

即操作数物理地址为:

物理地址PA=16 d ×(DS)+(BX)

物理地址PA=16 d × (DS)+(SI)

物理地址PA=16 d × (DS)+(DI)

slide15
第四章 80X86的寻址方式和指令系统

例:MOV BX,[DI]

(DS)=6000H

(DI)=2000H

PA=62000H

(62000H)=50A0H

(BX)=50A0H

DS

DI

6000H

2000H

6 0 0 0 0

+

2

0

0

0

...

6 2 0 0 0

BH

BL

AOH

62000H

50H

A0H

50H

...

寄存器间接寻址方式

MOV BX,[DI]

slide16
第四章 80X86的寻址方式和指令系统

2) 若选择BP寄存器作为间接寻址

操作数在堆栈段区域中,用SS寄存器的内容作为段地址。

操作数物理地址:

PA=16d × (SS)+(BP)

例: MOV [BP], AX

执行前: (SS)=1000H ,

(BP)=3000H ,

(AX)=1234H

执行后:PA=13000H

(13000H)=1234H

SS

BP

1000H

3000H

1 0 0 0 0

+

3

0

0

0

...

1 3 0 0 0

AH

AL

34H

13000H

12H

34H

12H

...

寄存器间接寻址方式

MOV [BP], AX

slide17
第四章 80X86的寻址方式和指令系统

3 ) 用 SI、DI、BX 、BP作为间接寻址允许段跨越

指令中可以指定段跨越前缀来取得其他段中的数据。

例:MOV ES:[DI], AX

MOV DX, DS:[BP]

这种寻址方法可以用于表格处理。

slide18
第四章 80X86的寻址方式和指令系统

基址寻址(间址寄存器为基址寄存

器BX,BP)

变址寻址(间址寄存器为变址寄存

器SI,DI)

寄存器

间接寻址

slide19
第四章 80X86的寻址方式和指令系统

5. 寄存器相对寻址方式(Register relative addressing)

或变址寻址 (Index Addressing)

操作数的有效地址是一个基址或变址寄存器的内容

和指令中指定的8位或16位位移量(displacement)之和。

例:MOV AX,[BX+DATA]

设DS=2000H,BX=0220H,DATA=05H

则:AX=[20225H]

slide20
第四章 80X86的寻址方式和指令系统

例:

MOV AX, COUNT [BP]

或MOV AX, [COUNT+BP]

或MOV AX, COUNT+[BP]

COUNT为16位位移量。

指令执行前: (SS)=5000H,

(BP)=3000H,

COUNT=2040H,

(AX)=1234H

指令执行后:EA=5040H

PA=55040H

(55040H)=5548H

(AX)=5548H

存储器

OP

AH

AL

OP

55H

48H

40H

位移量

COUNT

20H

...

50000H

...

55040H

48H

55H

...

寄存器相对寻址方式

MOV AX,COUNT[BP]

slide21
第四章 80X86的寻址方式和指令系统

用途:这种寻址方式同样用于表格处理。

表格首地址COUNT

修改基址或变址寄存器来取得表格中的值。

例:某数据表的首地址为COUNT

欲读取表中第10个数据,存放到(AL)中。

第10个数据的有效地址: EA= COUNT + 9

MOV SI , 09H

MOV AL , [SI+COUNT]

slide22
(SI)

PA=16d×(S

S

)+

(BP)

+

(DI)

第四章 80X86的寻址方式和指令系统

6. 基址加变址寻址方式

(Based indexed addressing)

操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和,基址寄存器名和变址寄存器名均有指令指定。

除有段跨越前缀之外,形成物理地址有二种方式:

(SI)

PA=16d×(DS

)+

(BX)

+

(DI)

slide23
第四章 80X86的寻址方式和指令系统

存储器

例:

MOV AX, [BX][SI]

或 MOV AX, [BX+SI]

执行指令前:

(DS)=3200H,

(BX)=0456H,

(SI) =1094H

(334EAH)=4567H

执行指令后:

EA=14EAH

PA=334EAH

(AX)=4567H

...

32000H

...

AH

AL

...

45H

67H

334EAH

67H

45H

...

基址加变址寻址方式

MOV AX,[BX+SI]

slide24
存储器

ARRAY+5

ARRAY+4

DI

ARRAY+3

元素

ARRAY+2

BX

ARRAY+1

ARRAY

ARRAY

第四章 80X86的寻址方式和指令系统

用途:这种寻址方式同样适用于数组或表格处理。

表格首地址基址寄存器中,用变址寄存器来访问数组中的元素。二个寄存器都能修改,所以比直接变址方式更灵。

slide25
第四章 80X86的寻址方式和指令系统

7. 相对基址加变址寻址方式

(Relative based indexed addressing)

操作数有效地址是一个基址寄存器和一个变址寄存器的内容和8位或16位位移量之和 。

slide26
8位位移量

(SI)

PA=16d×(DS

)+

(BX)

+

+

(DI)

16位位移量

8位位移量

(SI)

PA=16d×(SS

)+

(BP)

+

+

(DI)

16位位移量

第四章 80X86的寻址方式和指令系统

除有段跨越前缀之外,形成物理地址有二种方式:

slide27
第四章 80X86的寻址方式和指令系统

例:

MOV AX, MASK[BX][DI]

MOV AX, MASK [BX+DI]

MOV AX,[MASX+BX+DI]

执行指令前:

(DS)=3000H

(BX)=1346H

(DI)=0500H

MASK=1234H

(32A7AH)=4050H

执行指令后:

EA=2A7AH

PA=32A7AH

(AX)=4050H

存储器

OP

OP

34H

位移

12H

MASK

...

30000H

...

AH

AL

40H

50H

32A7AH

50H

40H

相对基址加变址

MOV AX, MASK+[BX+DI]

slide28
第四章 80X86的寻址方式和指令系统

用途:

这种寻址方式为堆栈处理提供方便:

(BP)栈顶(一般 BP 可指向栈顶)从栈顶到数组的首地址可以用位移量表示(MASK).

变址寄存器(SI)或(DI)——指向数组中某个元素。

slide29
第四章 80X86的寻址方式和指令系统

8. 比例变址寻址

这种寻址方式为386以上处理器采用:

将第二个寄存器与比例因子相乘,比例因子可以是1、2、4、8。分别对应字节、字、双字、四字数组。

例如:

MOV [EBX+4*ECX]

MOV [EAX+2*EDI+100H],CX

MOV AL,[EBP+2*EDI-2]

MOV EAX,ARRAY[4*ECX]

ad