微机原理与接口技术3.ppt

  1. 1、本文档共165页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理与接口技术3

第 三 章 指令系统与汇编语言程序设计 学习8088/8086指令系统的原因 指令的兼容性 应用的广泛性 资料容易查找 3.1概述 指令——控制计算机完成指定操作、并能够被计算机所识别的命令 机器指令——指令的二进制代码形式。 例如:CD21H00100001) 汇编指令——助记符形式的指令。 例如:INT 21H 指令系统——CPU所有指令及其使用规则的集合 指令按功能分为六大类(92种) 数据传送类; 算术运算类; 逻辑运算和移位; 串操作; 控制转移类; 处理器控制。 3.1.1 指令的基本构成 指令举例: 部分8088常用指令 8088/8086的操作数分为3类 立即数操作数 寄存器操作数 存贮器操作数 1、立即数(常数) 不因指令的执行而发生变化 取值范围如下表: 立即数只能用作源操作数 在指令中,立即数操作数只能用作源操作数,而不能当目标操作数用。 如: MOV AX,3ACFH 正确 MOV 3ACFH,AX 错误 2、寄存器操作数 放在8个通用寄存器或4个段寄存器 中的操作数 8个通用寄存器AX、BX、CX、DX SP、BP、SI、DI 4个段寄存器 CS、DS、SS、ES 可用作源操作数,也可用作目的操作数 两个控制寄存器IP、FR不可能作操作数 寄存器的使用 3、存储器操作数 说明 存储器操作数在指令中既可作源操作数,也可作目的操作数。但对大多数指令言,不允许源和目的操作数同时为存贮器操作数(唯串操作时,源及目的操作数可同时为存贮器操作数)。 为寻找存贮器操作数,首先必须确定该操作数所在段,即先确定段寄存器。若指令中没有指明所用段寄存器,则CPU 采用默认段寄存器。P50表2-3 3.1.2 指令的执行时间 3.2 8086的寻址方式 寻址方式——寻找操作数的方法 寻找操作数的地址(一般指源操作数) 寻找要执行的下一条指令的地址 在8086指令系统中,说明操作数所在地址的寻址方式可分为8种: ①立即寻址 ⑤ 寄存器相对寻址 ②直接寻址 ⑥基址-变址寻址 ③寄存器寻址 ⑦相对的基址-变址寻址 ④寄存器间接寻址 ⑧隐含寻址 1.立即寻址 操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段里,这种操作数称为立即数。 立即寻址只能用于源操作数 如果是16位数,则高位字节存放在高地址中,低位字节存放在低地址中。 程序举例 指令操作例 MOV AX,3102H 执行后,(AH) = 31H,(AL) = 02H 2 直接寻址 指令中直接给出操作数的16位偏移地址 偏移地址也称为有效地址(EA, Effective Address) 默认的段寄存器为DS,但也可以显式地指定其他段寄存器——称为段超越前缀 偏移地址也可用符号地址来表示,如ADDR、VAR 图示 指令操作例 MOV AX,[3102H] 执行后,AL?[3102H] , AH?[3103H] 例子 例1:MOV [2F10H],AL ;将AL中之内容移入DS:2F10H单元中 例2:MOV [2F10H],AX;AL → DS:2F10H ;AH → DS:2F11H 例3:MOV AX,ES:[2510H] ;将ES作为指定的段基址,以取替默认的段基址DS。 因属一般数据存取,允许有指定的段基址。 3 寄存器寻址 操作数放在某个寄存器中 源操作数与目的操作数字长要相同 寄存器寻址与段地址无关 例子 例: MOV AX, BX MOV [3F00H], AX MOV CL, AL 错误例: × MOV AX, BL ; 字长不同 × MOV ES: AX, DX ; 寄存器与段无关 4 寄存器间接寻址 操作数的偏移地址(有效地址EA)放在寄存器中,且寄存器必须在方括号里。 只有SI、DI、BX和BP可作间址寄存器 说明 如果指令中指定的寄存器是BX、SI、DI,则用DS寄存器的内容作为段地址,即操作数的物理地址为: 物理地址=(DS)×10H+(BX) 或 物理地址=(DS)×10H+(SI) 或 物理地址=(DS)×10H+(DI) 如指令中指定BP寄存器,则段地址在SS中,所以操作数的物理地址为: 物理地址=(SS)×10H+(BP) 例子 例: MOV AX, [BX] MOV CL, CS:[DI] 错误例 : × MOV

文档评论(0)

bm5044 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档