微型计算机技术与汇编语言程序设计:ch06-指令格式与寻址方式_第1页
微型计算机技术与汇编语言程序设计:ch06-指令格式与寻址方式_第2页
微型计算机技术与汇编语言程序设计:ch06-指令格式与寻址方式_第3页
微型计算机技术与汇编语言程序设计:ch06-指令格式与寻址方式_第4页
微型计算机技术与汇编语言程序设计:ch06-指令格式与寻址方式_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 微处理器的寻址方式HYPer目录8086/8088指令格式8086/8088寻址方式其它寻址方式 HYPer一、8086/8088指令格式 计算机是通过执行指令来管理计算机并完成一系列给定功能的。因而,每种计算机都有一组指令集提供给用户使用,这组指令集叫做计算机的指令系统。不同的计算机指令不同,指令集中指令的数量也不同,大体上在几十种到百余种。指令系统的功能决定了CPU的综合处理能力。8086/8088是可变长指令。 指令的一般格式为: 操作码(OPCode,OP) 告诉计算机要执行的操作是什么,如:加、减、逻辑与等。 操作数(OPData) 执行操作过程所要操作的数,如加运算的两个加数。

2、操作码 操作数 操作数HYPer一、8086/8088指令格式CPUMOPOPData1OPData2What to do?To or From Which?R, MHYPer一、8086/8088指令格式无操作数指令,只有操作码单操作数指令(操作数在R中、M中)双操作数指令(操作数在R中、M中、指令中)RcMDataRc,RsMHYPer一、8086/8088指令格式1.无操作数指令,只有操作码OP(8)7 0例: HLT指令为F8H(11111000B)HYPer一、8086/8088指令格式2.单操作数指令(操作数在R中)OP(7) W(1) MOD(2) OP(3) R/M(3)15

3、0 OP(16) 15 0双字节 OP(5) REG(3)7 0 OP(3) REG(2) OP(3)7 0单字节REG(3)选AX,CX,DX,BX,SP,BP,SI,DI例DEC BX 为4BH(01001 011B)REG(2)选ES,CS,SS,DS例PUSH CS 为0EH(000 01 110B)W=字/字节;MOD=寻址方式:11表示是R操作;其它00,01,10表示M操作。R/M=寄存器/存贮器选择(1): AL/AX,CL/CX,DL/DX,BL/BX,AH/SP,CH/BP,DH/SI,BH/DI.隐含AX或ALMOD=11HYPer一、8086/8088指令格式2.单操作

4、数指令(操作数在M中)OP(7) W(1) MOD(2) OP(3) R/M(3)15 0OP(7) W(1) MOD(2) OP(3) R/M(3) DISP8 (8) 23 0OP(7) W(1) MOD(2) OP(3) R/M(3) DISP16 (16) 31 0MOD=00MOD=01MOD=10MOD与R/M的3x8种组合,对应不同的M寻址方式。HYPer一、8086/8088指令格式3.双操作数指令一个操作数在R、M中,另一个在R中、M中、立即数。不可以都在M中。R-RR-MR-Data(指令)M-Data(指令)M-MRcMDataHYPer一、8086/8088指令格式3.

5、双操作数指令(R-R)OP(6) D(1) W(1) MOD(2) REG(3) R/M(3)15 0MOD=11D = REG为目标(R/M为源)/REG为源(R/M为目标)。指出目标、源寄存器的位置。 D=1时,REG中为目标操作数R,R/M为源操作数据R;D=0 相反。REG,R/M都有8种组合, AL/AX,CL/CX,DL/DX,BL/BX,AH/SP,CH/BP,DH/SI,BH/DI.W=字/字节选择(16位/8位)HYPer一、8086/8088指令格式3.双操作数指令(R-M)OP(6) D(1) W(1) MOD(2) REG(3) R/M(3)15 0MOD = 11D=

6、 REG为目标(R/M为源)/REG为源(R/M为目标)。指出目标、源寄存器的位置。 D=1时,REG中为目标操作数R,R/M为源操作数据R;D=0 相反。REG,W有8种组合,选AL/AX,CL/CX,DL/DX,BL/BX,AH/SP,CH/BP,DH/SI,BH/DI。R/M,MOD=00、01、10:对M不同寻址。HYPer一、8086/8088指令格式3.双操作数指令(RData)OP(4) W(1) REG(3) Data-L Data-H 23 0REG,W组合,选AL/AX,CL/CX,DL/DX,BL/BX,AH/SP,CH/BP,DH/SI,BH/DI。OP(7) W(1)

7、 MOD(2) OP(3) R/M(3) Data-L Data-H 31 0MOD=11R/M,W组合,选AL/AX,CL/CX,DL/DX,BL/BX,AH/SP,CH/BP,DH/SI,BH/DI。HYPer一、8086/8088指令格式3.双操作数指令(MData)OP(7) W(1) MOD(2) OP(3) R/M(3) Data-L Data-H 31 0MOD=11R/M,W组合,选对M的寻址OP(7) W(1) MOD(2) OP(3) R/M(3) Disp-L Disp-H Data-L Data-H 47 0MOD=11 地址位移量 立即数HYPer一、8086/808

8、8指令格式双操作数指令OP(6) D(1) W(1) MOD(2) REG(3) R/M(3)ADisp-L Disp-H Data-L Data-H 或 或Data-L Data-H操作码寻址方式MOD=00MOD=01MOD=10MOD=11W=0W=1BX+SIBX+SI+Disp8BX+SI+Disp16ALAXBX+DIBX+DI+Disp8BX+DI+Disp16CLCXBP+SIBP+SI+Disp8BP+SI+Disp16DLDXBP+DIBP+DI+Disp8BP+DI+Disp16BLBXSISI+Disp8SI+Disp16AHSPDIDI+Disp8DI+Disp16C

9、HBPDisp16BP+Disp8BP+Disp16DHSIBXBX+Disp8BX+Disp16BHDIREGW=0W=1R/M000ALAX000001CLCX001010DLDX010011BLBX011100AHSP100101CHBP101110DHSI110111BHDI111D=1目标操作数源操作数D=0源操作数目标操作数HYPer一、8086/8088指令格式Rc:AX,BX,CX,DX,SP, BP, SI, DIAH,BH,CH,DH,AL, BL,CL,DLM:RcMData基址变址偏移量*Note: BP, Disp8不可一个出现,组合状态26-2=24无论怎样操作数位

10、于:指令中R中M中 BP SI Disp8Mea= + + BX DI Disp16HYPer80386指令格式:Rc:AX,BX,CX,DX,SP,BP,SI,DIAH,BH,CH,DHAL, BL,CL,DLEAX,EBX,ECX,EDX,ESP,EBP,ESI,EDIOP 。 指令前缀M: EA= EAX EBX ECX EDXESPEBPESIEDIEAX EBX ECX EDX -EBPESIEDI+Disp8,Disp32124880386指令格式*Note: 45种组合。P77 无论怎样操作数位于:指令中R中M中如: 43 INC BX 89 08 MOV AX, BX B8 0

11、0 10 MOV AX, 1000 02 85 00 20 ADD AL, DI+2000 C6 06 00 30 12 MOV BYTE PTR3000, 12 C7 06 00 30 34 12 MOV WORD PTR3000, 1234 汇编语言是一种符号语言,它用: 助记符表示操作码; 符号或符号地址表示操作数或操作数地址. 汇编语言指令与机器指令一一对应操作码场操作数场HYPer一、8086/8088指令格式0.隐含寻址 -操作数据隐含在某个R中1.立即寻址方式 操作数据在指令中,data2.寄存器寻址 操作数据在R中3.直接寻址方式4.寄存器间接寻址5.寄存器相对寻址6.基址加变

12、址寻址7.相对基址加变址寻址HYPer二、8086/8088寻址方式- 操作数在M中都是M寻址0.隐含寻址 -操作数据隐含在某个R中HYPer二、8086/8088寻址方式例:XLAT 隐含使用AL,BX。操作ALBX+AL1.立即寻址方式 这种寻址方式所 提供的操作数直接放 在指令中,紧跟在操 作码的后面,与操作 码一起放在码段区域 中。立即数可以是8 位的,也可以是16位. 立即寻址主要是 用来给寄存器赋初 值. 例如:MOV AX,1234H ;十六进制数1234H送入AX。 2.寄存器寻址 操作数包含在CPU的内部寄存器中。例如寄存器AX、BX、SI、DI等, 虽然操作数可在CPU的内

13、部通用寄存器的任一个中,且它们都能参与算术运算和逻辑运算并存放运算结果。但是AX是累加器,若结果是存放在AX中,则通常指令要更短些,更紧凑些。例如:MOV AX,BX ;将寄存器BX的内容送入AX中。3.直接寻址方式 操作数的地址的16位 偏移量直接包含在指令 中,它与操作码一起在 码段区域中,但操作数 一般在数据段区域中, 它的地址为数据段寄存 器DS加上它的16位地址 偏移量。 指令中的16位地址偏 移量是低位字节在前, 高位字节在后。 这种寻址方法,是以 数据段寄存器的地址为 基础,可在多达64K字 节的范围内寻找操作数 。EA=指令中直接给出地址 如 MOV AX,3000H例如:MO

14、V AL,DS:2000H ;将逻辑地址为DS:2000单元内的字节送入AL。若段基址DS=4000H,则段起始物理地址为4000H左移4位,即40000H,此指令将数据段中物理地址为42000H 单元的内容56H传至AL寄存器。MOV AL,DS:2000H4000H 56HAX DS 2000H操作码操作码00H20H56H42000H42000H4.寄存器间接寻址(间接寻址) 在这种寻址方式中,操作数是在存储器中,但是,操作数的地址的16位偏移量包含在以下四个寄存器SI、DI、BP、BX之一中。这又可分成两种情况: 1、 BX、SI、DI间址时以 DS为默认段地址; 例:MOV AX,S

15、I 2、BP间址时以SS为默认 段地址。 例:MOV AX,BP EA = 基址寻址变址寻址BPBXSIDI直接寻址与间接寻址的例子想一想!例如:MOV AX,BX ;BX内容为有效地址EA(偏移量)。若DS=4000H,BX=100H,此指令将物理地址40100H 单元的内容传至AL寄存器(段基地址同样为40000H)。DSBXAX40100H5.寄存器相对寻址 所谓变址寻址即以基准寄存器BX、BP、SI、DI加上给定的8位或16位偏移量作为操作数的有效地址。段地址规则同上。 例: MOV AX,MASKSI MOV AX,SI+MASKEA= + Disp8(Disp16)BPBXSIDI

16、例如:MOV AL,BX+5;DS=6000H,BX=2000H,BX的内容加上8位位移量05H作为操作数的有效地址。传送数据段中的一个字节到AL中。如果使用BP,则隐含地表示操作数存放在堆栈段中。MOV AL,BX+5DSBXAL620056.基址加变址寻址 基址加变址寻址即以某一基地址寄存器(通常为BX、BP)的内容,加上某一变址寄存器(通常为SI,DI)的内容,形成操作数的有效地址。段地址规则同上。 例: MOV AX, BX + SI BP SIBX DIEA=+例如:MOV AX,BX+SI;BX的内容与SI的内容之和作为操作数的有效地址。传送数据段中的一个字。 MOV AX,BX+SIDSBXSI52006HAX7.相对基址加变址寻址 相对基址加变址寻址即以某一基地址寄存器(通常为BX、BP)的内容,加上某 一变址寄存器(通常为SI,DI)的内容,再加上给定的8位或16位偏移量,形成了操作数的有效地址。 段地址规则同上。 例: MOV AX,MASKBXSI MOV AX,BX+SI+MASK BP SI EA= + + Disp8(Disp16) BX DI例如:MOV AH,BX+DI+1234H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论