《计算机接口技术及应用》课件-5.5 寻址方式之寄存器间接寻址和寄存器相对寻址_第1页
《计算机接口技术及应用》课件-5.5 寻址方式之寄存器间接寻址和寄存器相对寻址_第2页
《计算机接口技术及应用》课件-5.5 寻址方式之寄存器间接寻址和寄存器相对寻址_第3页
《计算机接口技术及应用》课件-5.5 寻址方式之寄存器间接寻址和寄存器相对寻址_第4页
《计算机接口技术及应用》课件-5.5 寻址方式之寄存器间接寻址和寄存器相对寻址_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

微机原理及应用第五章8086指令系统第五讲寻址方式之寄存器间接寻址和寄存器相对寻址下面我们来学习寻址方式中的寄存器间接寻址和寄存器相对寻址寻址方式之寄存器间接寻址和寄存器相对寻址首先来看寄存器间接寻址,寄存器间接寻址还是寻址的内存空间,我们将内存空间的偏移地址存放在寄存器中,然后将寄存器放到方括号中,这样得到的寻址方式叫寄存器间接寻址,放到方括号里的寄存器统称为间址寄存器,间址寄存器只有四种寄存器间接寻址寄存器间接寻址寻址的内存空间操作数的偏移地址(有效地址EA)放在寄存器中,且寄存器必须在方括号里方括号里的寄存器间址寄存器分别是BXBPSI和DI,其他八种寄存器是不能放到方括号里用作寄存器间接寻址的,既然寄存器被放入了方括号里,那么它就要有相应的段基址,寄存器间接寻址间址寄存器BXBPSIDI其他八种寄存器不能放到方括号里用作寄存器间接寻址寄存器被放入方括号里要有相应的段基址默认情况下,BX,SI,DI的段基址是DS,BP对应的段基址是SS,寄存器间接寻址间址寄存器BXBPSIDI其他八种寄存器不能放到方括号里用作寄存器间接寻址寄存器被放入方括号里要有相应的段基址DSSS[DS]×10H+[BX]

[DS]×10H+[SI]

[DS]×10H+[DI]相应的内存单元的物理地址的计算公式是段基址后填0再跟寄存器的值相加寄存器间接寻址间址寄存器BXBPSIDI其他八种寄存器不能放到方括号里用作寄存器间接寻址寄存器被放入方括号里要有相应的段基址DS[SS]×10H+[BP]SS了解了寄存器间接寻址的含义,我们来看一下下面几条指令是否正确首先MOVax,[BX]这条指令判断下面几条指令是否正确MOVax,[BX]MOVCL,ES:[DI]MOVAX,[DX]MOVCL,[AX]BX作为间址寄存器被放在了方括号中,所以这条指令是寄存器间接寻址,BX作为4个间址寄存器之一是可以被放入方括号中的,所以这条指令是正确的,MOVax,[BX]寄存器间接寻址,BX作为4个间址寄存器之一是可以被放入方括号中✔×判断下面几条指令是否正确再看下一条,MOVCL,ES:[DI],这里方括号前面的ES加冒号是段超越前缀,可以将内存单元的段基址修改为ES,内存单元的偏移地址是DI的内容判断下面几条指令是否正确MOVax,[BX]MOVCL,ES:[DI]段超越前缀,将内存单元的段基址改为ES,内存单元的偏移地址是DI的内容再来下一条,MOVAX,[DX],这条指令将DX放入了方括号里面是不对的,DX不是间址寄存器不能放入方括号中,所以这条指令是错误的,判断下面几条指令是否正确MOVax,[BX]MOVCL,ES:[DI]MOVAX,[DX]DX不是间址寄存器不能放入方括号中下一条是MOVCL,[AX],同理,由于AX不是间址寄存器所以也不能放入方括号中,这条指令也是错误的判断下面几条指令是否正确MOVax,[BX]MOVCL,ES:[DI]MOVAX,[DX]MOVCL,[AX]AX不是间址寄存器不能放入[]中下面来举一个具体的例子,比如这条指令MOVax逗号SI,SI作为间址寄存器用来存放内存单元的偏移地址,它的值是1200h,所以内存单元的偏移地址是1200h,在默认情况下,SI的段基址是DS,DS的值是6000h,那我们可以基于SI和DS的值,计算内存单元的物理地址为61200hMOVAX,[SI]SI1200H60000H+1200H61200HDS6000H61200h这个单元存放的是44h,它的下一个单元61201h里面存放的是33h,通过move指令,将3344h这个数据传送到了ax中,44H33H…数据段33H44HAX61200HMOVAX,[SI]61201H这条指令执行完毕时,Ax的内容是3344h,其中33h存放到了ah中,44h存放到了al中44H33H…数据段33H44HAX61200HMOVAX,[SI]61201H指令执行完毕时,Ax的内容是3344h33h存放到ah中,44h存放到al中再来看寄存器相对寻址,在寄存器间接寻址的基础上再加上一个位移量就变成了寄存器相对寻址,所以在寄存器相对寻址中,内存单元的偏移地址由间址寄存器的值加上八位或16位的位移量来获得同样,这里的间址寄存器只能时BX,BP和SI,DI当间址寄存器为BX,SI和DI时,默认的段寄存器是ds当间址寄存器为BP时,默认的段寄存器是ss寄存器相对寻址常用于存取表格或者一维数据中的内容我们可以把位移量看成表格的起始地址,把间址寄存器的内容看成查询表格时的下标或者把间址寄存器的内容看成是表格的起始地址,把位移量看成查询表格时的下标寄存器相对寻址在寄存器间接寻址基础再加一个位移量内存单元的偏移地址由间址寄存器的值加上八位或16位的位移量获得寄存器相对寻址同样,这里的间址寄存器只能时BX,BP和SI,DI,间址寄存器BXBPSIDI寄存器相对寻址当间址寄存器为BX,SI和DI时,默认的段寄存器是ds,当间址寄存器为BP时,默认的段寄存器是ssBXBPSIDIDSSS寄存器相对寻址MOVAX,[BX+8]MOVCX,TABLE[SI]MOVAX,[BP]VAR默认段寄存器为SS寄存器相对寻址常用于存取表格或者一维数据中的内容,我们可以把位移量看成表格的起始地址,把间址寄存器的内容看成查询表格时的下标。寄存器相对寻址存取表格或一维数据中的内容表格的起始地址查询表格时的下标位移量间址寄存器的内容或者把间址寄存器的内容看成是表格的起始地址,把位移量看成查询表格时的下标寄存器相对寻址存取表格或一维数据中的内容表格的起始地址查询表格时的下标位移量间址寄存器的内容位移量可以放到方括号中,用一个加号跟间址寄存器连接或者放到方括号的前边或者后边都可以位移量放方括号中,用一个加号跟间址寄存器连接放方括号的前边或者后边寄存器相对寻址下面我们再举一个具体的例子,比如说moveax,data[bx]这条指令,在方括号的内部时间址寄存器,在方括号的外面还有位移量data,所以我们知道这是寄存器相对寻址,此时,我们要寻址的内存单元的偏移地址就是data与bx之和,Bx的值是1000h,data是2A00h,那么我们可以计算出来内存单元的偏移地址是3A00h,它默认的段基址是ds,我们拿ds和偏移地址一起计算出物理地址是63A00h,这条指令中目标操作数是AX,因此我们需要传送16位的数据16位的数据来自于物理地址是63A00h的单元和63A01h的单元也就是5566h其中55h会存放到ah中,66h会存放到al中BX1000H60000H+1200H63A00HDS6000Hmoveax,data[bx]DATA2A00H2A00H这条指令中目标操作数是AX,因此我们需要传送16位的数据。16

温馨提示

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

评论

0/150

提交评论