大工计算机原理第3章8086微处理器的指令系统(1)资料

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3章 8086微处理器的指令系统(1)

3.1 指令系统概述

● 指令系统是一台计算机所能(识别和执行)的全部指令的集合。它与(微处理器)有着密切的关系,不同的微处理器有不同的指令系统。8086CPU 包含133条指令

● 指令是使计算机执行某种(特定操作)的二进制编码。

指令一般包括两个部分:(操作码域)和(地址域)。填空

操作码域:存放指令的操作码,即指明该指令应由计算机完成何种操作。

地址域:确定操作数的值或地址、操作结果的地址,有的指令的地址域还指出下一条指令的地址。 ● 机器指令:计算机能(直接识别)的二进制代码。

● 汇编语言:汇编语言是一种符号语言,用助记符表示操作码,用符号或符号地址表示操作数或操作数地址,它与

机器指令是一一对应的

● 汇编程序:将汇编语言源程序翻译成

机器语言(就是一条一条的机器指令),即目标程序。

3.2寻址方式

● 根据(指令内容)确定(操作数地址)的过程,称为寻址。

● 根据寻址方式计算所得到的地址叫做(有效地址EA ),也就是(段内偏移地址)。有效地址还需要与相应的(段基地址)组合才是20位的(物理地址PA) ,该工作由微处理器来完成。 牢记什么是EA ?什么是PA ?怎么计算?

后面有关于EA 和PA 的解释及计算方法!

● 寻址方式在两种方式下被涉及:(操作数)的寻址方式和(指令)的寻址方式。

如果没有特别说明,寻址方式是指源操作数的寻址方式。

1、隐含寻址(隐含了规定的操作数)

例:DAA 指令,只有操作码,无操作数。规定对AL 中的内容进行压缩BCD 码转换。

2、立即寻址(操作数(立即数)直接放在指令中,不需访问存储器)

例:MOV AX ,1234H (若CS=1000H ,IP=100H )

3、寄存器寻址(操作数就放在内部寄存器中,不需访问存储器)

例:INC CX ;(CX)←(CX)+1 MOV AX ,BX ;执行后BX 内容不变 4、直接寻址(指令中直接给出操作数的存放地址) 例1:MOV AX ,[4000H] (DS =3000H )

☞操作数寻址 可以进行寄存器寻址的寄存器: (16位)AX 、BX 、CX 、DX 、SI 、DI 、SP 、BP

(8位) AH 、AL 、BH 、BL 、CH 、CL 、DH 、DL

例2:MOV ES:[1234H],BL (ES =4000H )

注意:(1)指令中给出的[4000H]和[1234H]是操作数的偏移地址。

(2)指令前缀指出段寄存器(例2)。

(3)没有指出段寄存器,则默认的段寄存器为DS (例1)。

5、寄存器间接寻址(内存单元的逻辑偏移地址由寄存器间接给出,只能使用BX 、BP 、SI 、DI )

例: MOV AX ,[BX ] (若DS =2000H ,BX=1000H)

例:若DS=0F3EH ,SI=2000H ,COUNT=0A8H ,指令MOV AX ,(SI+COUNT)中,源操作数的有效地址EA 为________,其物理地址PA 为________。

答案:EA=SI+COUNT =2000H+0A8H=20A8H

PA=DS*10H + EA = 0F3EH*10H + 20A8H = 0F3E0H+20A8H=11488H

MOV AX ,COUNT[SI]

MOV AX ,[SI]COUNT 总结:这三种形式,功能是相同的!

MOV AX ,[SI+COUNT]

6、基址寻址和基址相对寻址(操作数地址在基址寄存器BX,BP 中称为基址寻址;若还有位移量,则称为基址相对寻址)

使用BX ,默认的段寄存器是DS

【例1】 MOV CX ,36H[BX ]

有效地址EA=36H+(BX ) 物理地址PA =(DS )×10H + EA

【例2】 MOV -20[BP ],AL ;小心了!-20是十进制,其十六进制塔式是-14H

有效地址EA=(BP )-14H 物理地址PA =(SS )×10H+EA

而BP ,SP 的默认段寄存器为SS

选择题:指令MOV AX,[BX+SI]中源操作数的段地址在 B 中

A.CS

B.DS

C.ES

D.SS

课件中,例3.11是不对的!

例3.11 MOV AX,[BX+disp]

因使用BX,默认段寄存器是DS 。 EA=BX+disp PA=DS ×10H+ EA

7、变址寻址和变址相对寻址(操作数地址在变址寄存器SI 、DI 中称为变址寻址;若还有位移量,则称为变址相对寻址)

例3.13 MOV AH,[SI +disp] EA=(SI)或(DI)+disp PA= ×10H+ EA

重要:逻辑段地址使用隐式用法,即

(1)DS 与BX 、SI 、DI 组成物理地址;

(2)SS 与BP 、SP 组成物理地址。

IP 只能在代码段中(CS)寻址,SP 只能在堆

栈段(SS)中寻址。

另外,AX 、CX 、DX 一般不能在寄存器间接

寻址中使用。

DS

8、基址变址寻址和基址变址相对寻址

有效地址EA =(BX )或(BP )中的基址地址+(SI )或(DI )中的变址地址+disp

例3.14 MOV AX,[BP+DI]

EA =SS*10H + BP + DI ;此时隐含的段寄存器为SS

MOV AX,[BX+DI]

EA =DS*10H + BX + DI ;则隐含的段寄存器为DS

例3.10 MOV AX,[

BX

若(DS )=2100H,(BX)=0158H,(DI)=0002H,(2115AH )=1234H

则 EA= BX+DI =0158H+0002H=015AH

PA=EA+21000H=2115AH

指令执行后,(AX)=1234H

例3.11:MOV AX,[MASK+

BX +SI] 若(DS )=3000H,(BX)=2000H, (SI)=1000H, MASK=0250H

(33250H)=34H,(33251H)=12H

则 EA= MASK+BX+SI = 0250H +2000H+1000H=3250H

PA= DS*10H + EA=30000H + 3250H = 33250H

执行该指令后(AX)=1234H

9、I/O 端口寻址

8086采用I/O 端口与存储器独立编址的方式(第2章的内容)。

8086用20位地址线中的低16位来管理64KB 的I/O 端口空间,I/O 端口的地址空间为0000H ~FFFFH (因为64K )。 访问I/O 端口需要专门指令IN 和OUT,通过AX/AL 来完成。

(1)直接寻址

指令直接给出I/O 端口地址,此地址应在0-255(0-FFH)之间( 例如:IN AL,20H ;从端口地址20H 读入一个字节

(2)间接寻址,寄存器只能用DX

由DX 给出I/O 端口地址,此方式适用端口地址为0-65535(0-FFFFH)之间的任意值。(范围任意) 例如:MOV DX , 3E4H

OUT DX , AL

IN 指令中目的操作数可为AL 或AX ;OUT 指令中源操作数可为AL 或AX

(1)BX 基地址寄存器、SI 源变址寄存器、DI 目的变址寄存器与DS 数据段寄存器组成物理地址 (2)BP(基指针寄存器)、SP(堆栈指针寄存器)与SS(堆栈段寄存器)组成物理地址。 (3)IP 只能在代码段中(CS )寻址 (4)SP 只能在堆栈段(SS )中寻址。 (5)AX 、CX 、DX 一般不能在寄存器间接寻址中使用。

相关文档
最新文档