1. 1、本文档共111页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微型计算机原理与接口技术 第3章 80X86指令系统和汇编语言(1) 3.1 寻址方式 计算机是通过执行指令序列来解决问题的,指令一般由操作码字段和操作数字段组成,8086/8088带操作数字段指令一般格式为: 操作码 操作数 操作码 目的操作数,源操作数 操作码字段指示计算机所要执行的操作。 操作数字段指出指令执行操作的过程中所需的操作数。操作数字段可以是操作数本身,也可以是操作数地址,或是地址的一部分,还可以是指向操作数地址的指针或其它信息。根据操作数字段的个数一般分为一地址、二地址址指令。 单操作数指令是一地址指令,如INC BX。加法指令,除需要指出做加法外,还要提供加数和被加数,结果一般保存在目的操作数中,如ADD AX,BX指令表示BX的内容加AX的内容,和保存在AX中。操作数可以在寄存器、存储器或者I/O接口中。与数据有关的寻址方式用来说明指令中操作数如何存放以及寻找操作数的方法。另外有的指令不对数据操作,而是控制程序的执行顺序,如转移指令、调用子程序指令等。执行这些指令要改变程序的执行顺序。如何找到新的执行地址,称为与转移地址有关的寻址方式。8086/8088微处理器的寻址方式完全相同,80386及后续型号的微处理器寻址方式基本相同,分别介绍如下。 3.1.1 8086寻址方式 在与数据有关的寻址方式中,操作数一般可以存放在寄存器、存储器或者I/O接口中。寄存器或I/O接口寻址方式比较简单,存储器寻址方式比较多;与转移地址有关的寻址方式也涉及到存储器,寻址方式与存储器的相关的内容介绍如下。 1. 8086存储器地址空间及存储器编址 8086微处理器只有20条地址线,因此可寻址内存空间为1MB, 地址由00000-FFFFFH编码,也就是说,内存划分为1M个单元,每个单元分配一个地址,每个单元中可以存放一字节的信息。 指令对一个单元读出或者写入信息,必须给出这个单元的地址才可以。 若存取的信息是1字节,则指令中给出这个单元的地址就可以了。 若指令中一次存放的信息是字(16位二进制数),则将字的低字节存放在存储器的低地址,高字节存放在存储器的高地址,但是在指令中只要给出低地址就可以了,不必给出2个地址,而指令中含有标识存取的是字还是字节的信息。 内存地址空间存放数据的起始地址可以任意,但是字数据存放在偶数地址开始的存储器单元,读或者写时8086CPU只用1个总线周期;字数据存放在奇数地址开始的存储器单元,读或者写时8086CPU用2个总线周期,花费时间比较长。 内存地址空间存放数据的起始地址可以任意,但是字数据存放在偶数地址开始的存储器单元,读或者写时8086CPU只用1个总线周期;字数据存放在奇数地址开始的存储器单元,读或者写时8086CPU用2个总线周期,花费时间比较长。 1MB内存空间分通用和专用两个区域,00000~003FFH为专用区,存放中断向量表。FFFF0~FFFFFH也是专用区,机器启动以后从FFFF0H开始执行指令。其他区域为通用区。 8086有逻辑地址和物理地址的区分,逻辑地址由段基址和偏移地址两部分组成。程序员编写程序时只能使用逻辑地址,段基址是段寄存器CS、DS、ES和SS给出的段起始地址;偏移地址为存储单元在段内相对于段起始地址的偏移距离,也称为偏移量地址。段基址和偏移量都为16位。偏移量通常来自指令指针寄存器、基址寄存器、指针寄存器和变址寄存器,指令中间也可以指定偏移量,也可以由其中几个寄存器的内容组合而成。例如,CS:IP表示逻辑地址,表示程序执行的地址由代码段CS的内容和指令指针IP的内容(也就是偏移量)组成;另外DS:SI或者ES:DI或者1000:2000H这样的写法都表示逻辑地址。在逻辑地址中冒号前面表示的是段基址,冒号后面表示的是偏移地址。 物理地址是CPU与存储器进行数据交换时实际寻址所使用的地址。8086物理地址为20位。每个内存单元的物理地址都是唯一的,同一个物理地址可以由不同的逻辑地址来构成。由逻辑地址计算物理地址的方法是将逻辑地址中的段基址左移4位(相当于乘16),加偏移地址。例如, 假设段寄存器内容为1000H,偏移量为2000H,那么物理地址为12000H。如果段寄存器内容为1100H,偏移量为1000H,那么物理地址也是12000H。 一个程序可以有代码段、数据段、附加段和堆栈段,它们的段基址分

文档评论(0)

企业资源 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档