8086指令系统精析解析

  • 格式:doc
  • 大小:601.00 KB
  • 文档页数:35

下载文档原格式

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

8086指令系统精析

3.1基本数据类型

1.IA-32结构的基本数据类型是字节(8位)、字(16位)、双字(32位)、四字

(64位,486中引入的)和双四字(128位,Pentium3中引入的)。

2.低字节占用内存中的最低地址,该地址也是此操作数的地址。图:P44 图3-1

3.字、双字、四字的自然边界是偶数编号的地址,字的自然边界是偶数编号的

地址,双字和四字的自然边界地址要分别能被4和8除尽。

4.数据结构要尽可能在自然边界上对齐

5.对于不对齐的存储访问,处理器要求做两次存储访问操作;而对于对齐的访

问,只要进行一次存储访问操作。

6.数字数据类型(学生自学)PPT

3.28086的指令格式

一、指令格式

Label(标号):mnemonic(助记符)argument1(参数1),argument2(参数2),argument3(参数3)其中:

1.标号是一个标识符,后面跟有冒号

2.助记符是一类具有相同功能的指令操作码的保留名

3.操作数的三个参数是任选的,可以有零到三个操作数,操作数参数的数量取

决于操作码

4.操作数参数可能是文字或数据项的标识符,也可能是寄存器的保留名或在程

序的另一部分声明的赋予数据项的标识符。

5.在算术和逻辑指令中存在两个操作数时,右边的操作数是源,左边的操作数

是目的。例如:LOADREG: MOV AX, SUBTOTAL 功能是把由SUBTOTAL表示的源操作数传送至AX寄存器。

3.38086/8088指令的操作数寻址方式

寻找操作数,操作数能定位在指令中、寄存器中、存储单元中以及I/O端口中。

1.立即数

用包含在指令中的操作数作为源操作数,这些操作数即为立即操作数。

立即数可以是8位或16

例1 MOV AX , 2056H

结果( AH ) = 20H ( AL ) = 56H

例2 MOV AL , 78 H

结果( AL ) = 78H

2.寄存器操作数

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

8 位操作数,用8 位寄存器: AH、AL、BH、BL、CH、CL、DH、DL

16 位操作数,用16 位寄存器: AX、BX、CX、DX、SP、BP、SI、DI

CS、DS、SS、ES

例1 MOV AX , 2056H

执行后:(AX)=2056H

例2 MOV BL , AH

执行前:(BL) = 12H, (AH) = 78H

执行后:(BL) = 78H (AH) = 78H

▲立即数寻址、寄存器寻址的操作数,不用在取完指令后再到内存中取数。

▲以下的 5 中寻址方式,操作数存放在内存中,取完指令后,还需到内存取数。指令中给出的是该操作数的地址,包括段地址和偏移地址。

3. 内存操作数

▲指令MOV DS: [ DI ] , CL

完成将CL寄存器中的内容传送到以DS为段值,DI为偏移值的内存单元中。例编程将CL寄存器的内容传送到21000H单元中。PPT

地址21000H=2000:1000H ,编程时,DS 存放段地址2000H,DI 存放偏移地址1000H

MOV AX, 2000H

MOV DS, AX ; (DS) = 2000H

MOV DI, 1000H ; (DI) = 1000H

MOV DS: [ DI ], CL ;(21000H) = (CL)

结果如图所示:PPT(第一页)

内存单元的地址由段地址和偏移地址构成

▲为减短指令长度

指令中只给出偏移地址的来源,段地址由默认关系给出。

MOV AL,[ 2000H ] PA= ( DS ) ×10H + 2000H

即选择DS寄存器的内容为段地址。

▲CPU根据偏移地址给出的方式,按默认关系自动选择段寄存器,获取段值,由段值、偏移值构成操作数所在内存单元的物理地址。

指令中用[ ] 给出偏移地址。操作数的偏移地址又称有效地址EA ( Efficient Address)

▲按给出偏移地址方式的不同,分为以下5种:

直接寻址MOV AL, [ 1000H ]

寄存器间接寻址MOV AL, [ BX ]

寄存器相对寻址MOV AL, [ BX + 10H ]

基址加变址寄存器MOV AL, [ BX + SI ]

相对基址加变址寄存器MOV AL, [ BX + SI + 10H ]

(1)直接寻址方式-位移量

存储器操作数的有效地址EA在指令中直接给出。

例MOV AL, [ 1000H ]

默认段寄存器为DS。

操作数所在内存单元的物理地址为:PA = ( DS )×10H + EA

例:MOV AX , [ 1000 H]

若( DS ) = 2000H

内存操作数的物理地址为:

PA = ( DS )×10H +EA = 2000H ×10H + 1000H = 21000H 21000

执行后 (AX)= 3040H

在汇编语言程序中,不直接用数值表示偏移地址,用符号代替数值表示地址,称符号地址(变量名)。

例 符号buffer 表示一个地址。 MOV AX , [buffer] 或写成 MOV AX , buffer 源操作数为buffer 指向的内存单元的内容

符号地址( 变量名)经汇编连接后,与一个确定的数值地址相对应,可用操作符Offset 获取变量的偏移地址。 故 PA = ( DS )×10H + Offset buffer

指令执行结果 ( AX ) = 0B0A H

(2) 寄存器间接寻址-基地址

存储器操作数的有效地址EA 由寄存器给出,寄存器的内容为操作数的有效地址。

可用的寄存器有 BX 、SI 、DI 、BP 如: MOV AL, [ BX ] MOV AH, [ SI ] MOV DL, [ DI ] MOV DH, [ BP ] 默认段寄存器的关系:

①使用BX 、SI 、DI ,默认段寄存器为DS PA = ( DS )×10H + (SI)或(BX)或(DI) ②使用BP ,默认段寄存器为SS PA = ( SS )×10H + ( BP ) 例1: MOV AX , [ DI ]

若 ( DS ) = 3000H ,( DI ) = 2000H

则内存操作数的物理地址为:PA = ( DS )×10H + ( DI ) = 32000H