微型计算机原理及应用(第二版)第3章指令系统及汇编语言程序的设计.ppt

微型计算机原理及应用(第二版)第3章指令系统及汇编语言程序的设计.ppt

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

3.1 8088的寻址方式 3.2 8088(8086)的指令系统 3.3 汇编语言 3.4 汇编语言程序设计 习题;3.1.1 决定操作数地址的寻址方式   1.立即寻址   立即寻址方式所提供的操作数直接包含在指令中,它紧跟在操作码的后面,与操作码一起放在代码段区域中。在CPU从内存读出指令操作码后,在其下面的地址中可立即读出操作数。   立即寻址方式的操作叫做立即数。立即数可以是8位的,也可以是16位的。例如:   MOV AL, 05H   MOV DX,8000H;  2.直接寻址   直接寻址方式的操作数地址的16位段内偏移地址直接包含在指令中,与操作码一起存放在代码段区域中。操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位的段内偏移地址。例如:       MOV BX, DS:[2000H]   这种寻址方法以数据段的段地址为基础,故可在多达64?KB的范围内寻找操作数。   在本例中,取数的物理地址就是:DS的内容?×?16(即左移4位),变为20位,再在其低端16位上加上偏移地址2000H。偏移地址2000H是由指令直接给出的。;  3.寄存器寻址   寄存器寻址方式的操作数包含在CPU的内部寄存器中,例如AX、BX、CX、DX等。例如:      MOV DS,AX      MOV AL,BL   虽然操作数可存放在CPU内部任意一个通用寄存器中,而且它们都能参与算术或逻辑运算并存放运算结果,但是,AX是累加器,若将结果存放在AX中的话,通常指令的执行时间要短一些。;  4.寄存器间接寻址   在寄存器间接寻址方式中,操作数存放在存储器中,操作数的16位段内偏移地址存放在以下4个寄存器SI、DI、BP、BX之一中。由于上述4个寄存器所默认的段寄存器不同,故又可以分成两种情况:   (1) 若以BX、SI、DI这三个寄存器进行寄存器间接寻址,则操作数通常放在DS所决定的数据段中。此时数据段寄存器内容乘16加上SI、DI、BX中的16位段内偏移地址,即得操作数的地址。 ;  该指令中ES为段超越前缀,指令功能就是从ES?×?16?+?SI形成的物理地址及其下一个地址中取一个字放入AX中。   在指令中,默认段寄存器是可以缺省的,而段超越的前??是不能缺省的,必须明确指定。当使用段超越前缀时,指令代码增加一个字节,从而也增加了指令的执行时间。因此,能不用段超越时尽量不用。;  5.寄存器相对寻址   在寄存器相对寻址方式中,操作数存放在存储器中。操作数的地址是由段寄存器内容乘16加上SI、DX、BX、BP之一的内容,再加上由指令中所给出的8位或16位带符号的位移量而得到的。   在一般情况下,若用SI、DI或BX进行相对寻址时,默认数据段寄存器DS作为地址基准;而用BP寻址时,则默认堆栈段寄存器SS为地址基准。 ;  例如:      MOV BX, 3000H      MOV DS,BX      MOV SI,1000H      MOV AL,[SI-2]   则执行寄存器相对寻址指令时,操作数的物理地址为 DS?×?16?+?SI?-2?=?30000H?+?1000H?-2?=?30FFEH 即从地址30FFEH单元取一个字节放入AL。;  6.基址、变址寻址   在8088(8086)中,通常把BX和BP作为基址寄存器,而把SI和DI作为变址寄存器。将这两种寄存器联合起来进行的寻址就称为基址、变址寻址。操作数的地址应该是段寄存器内容乘16加上基址寄存器内容(BX或BP内容),再加上变址寄存器内容(SI或DI内容)而得到的。   同理,若用BX作为基地址,则操作数应放在数据段DS所决定的内存区域中;若BP作为基地址,则操作数应放在堆栈段SS所决定的内存区域中。 ;  例如:     MOV DX,8000H     MOV SS,DX     MOV BP,1000H     MOV DI,0500H     MOV AX,[BP][DI]   在执行基址变址指令时,就是从81500H和81051H单元分别取一个字节放入AL和AH中。;  7.基址、变址、相对寻址   这种方式实际上是第6种寻址方式的扩充。操作数的地址是由基址、变址方式得到的地址再加上由指令指明的8位或16位的相对偏移地址而得到的。例如:      MOV AX,DISP[BX][SI]   8.隐含寻址   在有些指令的指令码中,不仅包含有操作码信息,而且还隐含了操作数地址的信息。例如乘法指令MUL的指令码中只需指明一个乘数的地址,另一个乘数和积的地址是隐含固定的。再如DAA指令隐含对AL的操作。   这种将操作数的地址隐含在指令操作码中的寻址方式就称为

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档