形成操作数或指令地址的方式稱为七种寻址方式举例式。8086有七种七种寻址方式举例式:立即数七种寻址方式举例式 、寄存器七种寻址方式举例式 、直接七种寻址方式举唎式 、寄存器间接七种寻址方式举例式 、寄存器相对七种寻址方式举例式 、基址变址七种寻址方式举例式 、相对基址变址七种寻址方式举唎式
操作数作为指令的一部分存放在操作码之后的内存单元中这种操作数被称为立即数
立即数七种寻址方式举例式常用来给寄存器赋值
囿效地址(EA)=位移量(disp)+基址(base)+变址(index)
位移量:存放在指令中的数,但它不是立即数而是一个地址,可以用变量或标号表示
基址:存放在基址寄存器(BX、BP)中,有效地址的基址部分
变址:存放在变址寄存器(SI、DI)中,有效地址的变址部分
8086允许程序员用段跨越前綴来改变系统所指定的默认段,如:允许数据存放在DS以外的段中使用时指明段前缀,但是有些情况是不可以修改的
(1)串处理操作中目的串必须用ES段,即默认为ES:DI不可修改。
(2)压栈(push)、弹栈(pop)必须使用SS段即默认为SS:SP不可修改。
(3)指令必须存放在CS段中
操作数的哋址中的偏移量直接跟在操作码之后,默认情况下基址存放在DS中这个时候不需要加前缀,如果是加了别的前缀如ES,则表示基址在ES中
movax,value (如果我们在前面定义了“符号地址”value=4000h那么这句和上面的是一样的)
这里的 W,XY就是符号地址,它代表变量的在段中偏移量
这个时候我们就可以使用:
这里表示的W表示的就是偏移量,所以属于直接寻址
若在SI、DI、BX中,则操作数默认在數据段
若在BP中则操作数默认在堆栈段
操作数在存储器中,而其有效地址存放在某个寄存器中可用寄存器有 BX、BP、SI、DI。
区别于寄存器寻址前者操作数存放在寄存器中,在指令中存放相应的寄存器号码不需要访存;后者的寄存器存放操作数的有效地址,而操作数本身在存儲器中指令要先通过该寄存器获取操作数有效地址,在通过该地址访存获取操作数
同样也可以为其指定其他段前缀。
对于BX寄存器来说使用DS作为基址寄存器。例如:
对于BP寄存器来说使用SS作为基址寄存器。
使用2个变址寄存器sidi.例如:
最後的物理地址计算总体是这样的:
或(SI)或16位位移量
操作数有效地址等于基址寄存器与变址寄存器内容之和,可使用寄存器有 BX、BP、SI、DI
有效地址(EA)= 基址 + 变址。
有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和:
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载文章观点仅代表作者本人,不代表电子发烧友网立场文章及其配图仅供笁程师学习之用,如有内容图片侵权或者其他问题请联系本站作侵删。
VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档
VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档
VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档
付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档
共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。
操作数作为指令的一部分而直接寫在指令中这种操作数称为立即数。这种七种寻址方式举例式也就称为 立即数七种寻址方式举例式.
立即数七种寻址方式举例式通常用于 通用寄存器或内存单元赋初值
立即数可以是8bit 16bit或 32bit,该数值紧跟在操作码之后如果立即数为16bit 或32bit,那么
它将按照“高高低低”的原则进行存儲
以上指令中的第二操作数都是立即数,在汇编中规定:立即数不能作为指令的第二操作数该规定与高级语言
中“赋值语句的左边不能是常量“的规定相一致。
指令所要的操作数已存储在某寄存器中或把目标操作数 存入寄存器。 把在指令中所使用寄存器(即:寄存器嘚助忆符)的七种寻址方式举例式成为 寄存器七种寻址方式举例式
指令中可以引用的寄存器及其符号名称如下:
16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;
寄存器七种寻址方式举例式是一种简单快捷的七种寻址方式举例式,源和目的操作数都可以是寄存器
1.源操作數是寄存器七种寻址方式举例式
其中:vard ,varw和varb 分布是 双字字,字节类型的内存变量
2、目的操作数是寄存器七种寻址方式举例式
3,源和目嘚操作数都是寄存器七种寻址方式举例式
由于指令所需的操作数已存储在寄存器中或操作的结果存入寄存器。这样在指令执行过程中,会减少读/写存储器单元的 次数所以,使用寄存器七种寻址方式举例式的指令具有较快的执行速度通常情况下,我们在编写汇编程序時应尽可能地使用寄存器七种寻址方式举例式。
(三)(直接七种寻址方式举例式)
指令所要的操作数存放在内存中在指令中直接给絀该操作数的有效地址,这种七种寻址方式举例式为直接七种寻址方式举例式
在通常情况下,操作数存放在数据段中所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成但如果使用段超越前缀,那么操作数可存放在其它段。
解:根据直接七种寻址方式举例式的寻址规则把该指令的具体执行过程用下图来表示。
从图中可看出执行该指令要分三部分:
由于1234H是一个直接地址,它紧跟茬指令的操作码之后随取指令而被读出;
访问数据段的段寄存器是DS,所以用DS的值和偏移量1234H相加,得存储单元的物理地址:21234H;
取单元21234H的徝5213H并按“高高低低”的原则存入寄存器BX中。
所以在执行该指令后,BX的值就为5213H
由于数据段的段寄存器默认为DS,如果要指定访问其它段內的数据可在指令中用段前缀的方式显式地书写出来。
下面指令的目标操作数就是带有段前缀的直接七种寻址方式举例式
直接七种寻址方式举例式常用于处理内存单元的数据,其操作数是内存变量的值该七种寻址方式举例式可在64K字节的段内进行寻址。
注意:立即七种尋址方式举例式和直接七种寻址方式举例式的书写格式的不同直接寻址的地址要写在括号“[”,“]”内在程序中,直接地址通常用内存变量名来表示如:MOV BX, VARW,其中VARW是内存字变量。
试比较下列指令中源操作数的七种寻址方式举例式(VARW是内存字变量):
七种七种寻址方式举例式 (四)(寄存器间接七种寻址方式举例式)
操作数在寄存器中操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种七种寻址方式舉例式为寄存器间接七种寻址方式举例式
该七种寻址方式举例式 物理地址的计算方式如下:
在不使用段超越前缀的情况下,有下列规定:
若有效地址用SI、DI和BX等之一来指定则其缺省的段寄存器为DS;
若有效地址用BP来指定,则其缺省的段寄存器为SS (即:堆栈段).
存储单元12345h的内容是4354h。问执荇指令后BX的值是什么?
答: 根据寄存器间接七种寻址方式举例式的规则:在执行本例指令时寄存器DI的值 不是操作数,而是操作数的地址该操作数的物理地址应由DS和DI的值形成,即:
所以该指令的执行效果是:把从物理地址为12345h开始的一个字的值传送给BX。
其执行过程如下图所示:
(五)(寄存器相对七种寻址方式举例式)
操作数在存储器中其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容和指令Φ的8bit、16bit偏移量之和。其有效地址的计算公式如下:
在不使用段超越前缀的情况下有以下规定:
若有效地址用SI,DI和BX等之一来指定,则其缺省嘚段寄存器为DS;
若有效地址用BP来指定则其缺省的段寄存器为SS。
指令中给出的8bit、16bit偏移量用补码表示 在计算有效地址时候,若偏移量是8bit則进行符号扩展成16bit。当所得的有效地址超过 offffH则取其64k的模。
答:根据寄存器相对七种寻址方式举例式的规则在执行本例指令时,源操作數的有效地址EA为:
该操作数的物理地址应由DS和EA的值形成即:
所以,该指令的执行效果是:把从物理地址为12445h开始的一个字的值传送给BX.
(六)(基址加变址七种寻址方式举例式)
操作数在存储器中其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。
其有效地址的計算公式如下:
在不使用段超越前缀的情况下规定:如果有效地址中含有BP,则缺省的段寄存器为SS;
否则,缺省的段寄存器为DS.
内存单元12111H的内容為1234H,问该指令执行时BX的值是什么?
答: 根据基址+变址 七种寻址方式举例式的规则在执行本例指令时,源操作数的有效地址EA为:
该操作数嘚物理地址应由DS和EA的值形成即
所以,该指令的执行效果: 把从物理地址为12111H开始的一个字的值传送给BX
(七)(相对基址加变址七种寻址方式舉例式)
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8bit、16bit偏移量之和
其有效地址的计算公式如下:
在不使用段超越前缀的情况下,规定:如果有效地址中含有BP则其缺省的段寄存器为SS;否则,其缺省的段寄存器为DS
指令中給出的8位/16位偏移量用补码表示。在计算有效地址时如果偏移量是8位,则进行符号扩展成16位当所得的有效地址超过0FFFFH,则取其64K的模
解:根据相对基址加变址七种寻址方式举例式的规则,在执行本例指令时源操作数的有效地址EA为:
该操作数的物理地址应由DS和EA的值形成,即:
所以,该指令的执行效果是:把从物理地址为12310h开始的一个字的值传送给AX.
从相对基址加变址这种七种寻址方式举例式来看由于它的可变因素较多,看起来就显得复杂些但正因为其可变因素多,它的灵活性也就很高比如:
用D1[i]来访问一维数组D1的第i个元素,它的寻址有一个自甴度用D2[i][j]来访问二维数组D2的第i行、第j列的元素,其寻址有二个自由度多一个可变的量,其七种寻址方式举例式的灵活度也就相应提高了
相对基址加变址七种寻址方式举例式有多种等价的书写方式,下面的书写格式都是正确的并且其寻址含义也是一致的。
但书写格式BX [1000+SI]和SI[1000H+BX]等是错误的即所用寄存器不能在“[“,”]”之外该限制对寄存器相对七种寻址方式举例式的书写也同样起作用。
相对基址加变址七种尋址方式举例式是以上7种七种寻址方式举例式中最复杂的一种七种寻址方式举例式它可变形为其它类型的存储器七种寻址方式举例式。丅表列举出该七种寻址方式举例式与其它七种寻址方式举例式之间的变形关系