寻址方式
- 格式:ppt
- 大小:254.00 KB
- 文档页数:19
计算机指令系统
1.寻址方式:指CPU指令中规定的寻找操作数所在的地址的方式。
操作数:MOV AL , 05H 操作码目的操作数,源操作数操作数引用时的字节顺序:若存放的信息是字节,则按顺序存放若存放的信息是字,则将字的低位字节存放在低地址,高位字节存放在高地址注:如果没有特别说明,寻址方式是指源操作数的寻址方式。
2.寻址方式之一:立即寻址操作数作为立即数直接存在指令中,可为字节或字。
3.寻址方式之二:寄存器(直接)寻址操作数包含在指令规定的8位、16位寄存器中。
寄存器寻址由于无需从存储器中取操作数,故执行速度快。
4.寻址方式之三:直接寻址在指令的操作码后面直接给出操作数的16位偏移地址。
这个偏移地址也称为有效地址EA。
操作数默认在DS段中。
如果操作数在DS以外的其他段(CS,SS,ES)中,指令中必须指明段寄存器(段超越)。
5.寻址方式之四:寄存器间接寻址操作数地址的偏移量(有效地址EA)存放在寄存器中。
以SI,DI, BX间接寻址,默认操作数在DS段中;以BP间接寻址,默认操作数在SS段中。
6.寻址方式之五:基址寻址基址寻址将规定的基址寄存器的内容加上指令中给出的偏移量,即可得到操作数的有效地址。
基址寄存器包括基址寄存器BX和基址指针寄存器BP。
7.寻址方式之六:变址寻址变址寻址将规定的变址寄存器的内容加上指令中给出的偏移量,即可得到操作数的有效地址。
变址寄存器包括源变址寄存器SI和目的变址寄存器DI。
8.寻址方式之七:基址-变址寻址指令中规定一个基址寄存器和一个变址寄存器,同时还给出一个8位或16位偏移量,将三者的内容相加得到操作数的有效地址。
第3章 8086/8088指令系统寻址方式寻址方式:包含数据寻址方式和转移地址寻址方式。
这里指数据寻址方式。
它是指取得指令操作数地址的方式。
(1)立即寻址方式(2)直接寻址方式(3)寄存器寻址方式(4)寄存器间接寻址方式(5)寄存器相对寻址方式(6)基址变址寻址方式(7)相对基址变址寻址方式寻址方式:包含数据寻址方式和转移地址寻址方式。
这里指数据寻址方式。
它是指取得指令操作数地址的方式。
(1)立即寻址方式(2)直接寻址方式(3)寄存器寻址方式(4)寄存器间接寻址方式(5)寄存器相对寻址方式(6)基址变址寻址方式(7)相对基址变址寻址方式1 寄存器间接寻址方式微机原理寄存器间接寻址:操作数的有效地址是寄存器的内容,结合对应段寄存器的内容计算出操作数的物理地址,存储器中对应物理地址的内容即是操作数。
1 寄存器间接寻址方式微机原理例: MOV AX,[BX]假设DS寄存器的内容为 1000HBX寄存器的内容为 3600H那么源操作数的存储器的物理地址为1000H*16+3600H=13600H由于是16位的操作数,所以从13600H、13601H 2个单元读出内容送至AX。
1 寄存器间接寻址方式微机原理2 寄存器相对寻址方式微机原理寄存器相对寻址:操作数的有效地址由SI、DI、BX或BP之一的内容,加上指令中8位或16位相对地址构成。
例:MOV AX,[BX+0D8H]假设DS寄存器的内容为 6000HBX寄存器的内容为 4500H那么源操作数的存储器的物理地址为6000H*16+4500H+0D8H=645D8H有效地址2 寄存器相对寻址方式微机原理基址变址寻址:操作数的有效地址等于一个基址寄存器的内容和一个变址寄存器的内容之和。
基址寄存器:BX、BP 变址寄存器:SI 、DI例: MOV AL,[BX+DI]可以记成 MOV AL,[BX][DI]或记成 MOV AL ,[BX]+[DI]例:MOV AL,[BX] [DI]假设DS寄存器的内容为 6000HBX寄存器的内容为 4500HDI寄存器的内容为 1600H那么源操作数的存储器的物理地址为6000H*16+4500H+1600H=60000H+5B00H=65B00H有效地址3 基址变址寻址方式微机原理相对基址变址寻址:操作数的有效地址等于一个基址寄存器的内容、一个变址寄存器的内容以及一个偏移量之和。
七种寻址⽅式在存储器中,操作数和指令字写⼊或读出的⽅式,有地址指定的⽅式,相联存储⽅式和堆栈存取⽅式,⼏乎所有的计算机,在内存中都采⽤地址指定⽅式,当采⽤地址指定⽅式的时候,形成操作数或指令地址的⽅式称为寻址⽅式,寻址⽅式分为两类,即为指令寻址⽅式和数据寻址⽅式,在传统⽅式设计的计算机中,内存中指令的寻址与数据的寻址是交替进⾏的⽴即数寻址⽅式:将操作数放在操作码的后⾯。
⼀起放在指令代码段中,在程序运⾏的过程中,程序直接调⽤该操作数,⽽不⽤到其他的地址的单元中去取得相应的操作数。
上述中的操作数也被称为⽴即数。
可以有不同的进制寄存器寻址⽅式:指令所要的操作数已经存储在某个寄存器中,或把⽬标操作数存⼊寄存器中,把在指令中指出所⽤的寄存器(寄存器助忆符)的寻址⽅式称为寄存器寻址⽅式寄存器寻址⽅式是⼀种简单快捷的寻址⽅式,源和⽬的操作数都可以是寄存器直接寻址⽅式:在指令格式的地址字段中直接指出操作数在内存中的地址id。
⼀般情况下数据放在数据段中,所以物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使⽤段超越前缀,那么操作数可存放在其他段直接寻址⽅式常⽤于处理内存单元的数据,操作数是内存变量的值,指令中直接给出操作数地址(DIR)的寻址⽅式称为直接寻址⽅式,寻址的对象为:1内存数据存储器,指令中直接地址表⽰2、特殊功能的寄存器SFR,在指令中⽤寄存器名称表⽰寄存器间接寻址⽅式:是指将指定的寄存器内容为地址,由该地址所指定的单元内容作为操作数,MCS-51规定R0或R1为间接寻址寄存器,他可寻址内部RAM低地位的12个字节单元内容,还可以采⽤数据指针(DPTR)作为直接寻址寄存器,寻址外部数据存储器的64k字节空间,但不能⽤本寻址⽅式寻址特殊功能寄存器寄存器的间接寻址需要以寄存器符号的形式来表⽰,并且在寄存器名称前⾯加上间接寻址符号“@”。
例如指令MOV A,@RO就使⽤了寄存器间接寻址⽅式,这条指令的意义就是将地址指针RO指向内部数据存储单元中的数据送⼊累加器A中。
数据寻址的常见方式:1、隐含寻址这种类型的指令,不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址。
例如单地址指令格式,就不给出第二操作数的地址,而是规定累加器ACC作为第二操作数的地址,指令中只是明显指出第一操作数。
隐含寻址的优点是有利于缩短指令字长,缺点是需要增加存储操作数的硬件和存储隐含地址的硬件。
2、立即(数)寻址这种类型的指令的地址码字段指出的不是操作数的地址,而是操作数本身,又叫立即数。
数据采用补码的形式存放。
立即寻址的优点是指令在执行阶段不访问主存,指令执行的时间最短,缺点是A的位数限制了立即数的范围。
(在定长指令码格式下,所有指令的长度都是一样的,这时候取每条指令的时间都一样,执行指令时立即数寻址最快,但是如果在变长指令码下,受到形式地址位数的限制,如果操作数比较大,那立即寻址方式在取指令的时间上要用时更多一点)3、直接寻址这种类型的指令的地址码字段的形式地址就是操作数的真实地址,取数操作直接取地址里面的内容,它的有点是简单,只需要访问一次主存,不需要专门计算操作数的地址,缺点是A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改,相对于立即寻址,直接寻址缩短了指令的长度。
4、间接寻址这种类型的指令是相对于直接寻址而来的,在直接寻址中,形式地址就是真实地址,在间接寻址中,形式地址是操作数地址的地址,即EA=(A),间接寻址可以是一次间接,也可以是多次间接。
它的优点是可以扩大寻址范围,因为EA的位数大于A的位数,便于编制程序,可以方便地实现子程序的返回,缺点是在执行使需要多次访问内存,访问速度慢。
这种寻址方式并不常用。
一般扩大寻址范围都采用寄存器间接寻址。
毕竟访问寄存器更快一点。
5、寄存器寻址这种类型的指令是直接给出操作数所在的寄存器的编号,EA=Ri,操作数就在Ri内存放。
寄存器寻址的优点是指令在执行阶段不访问主存,只访问寄存器,因此执行速度快,因为寄存器数量少,所以寄存器编号所占的位数也少,指令字长也比较短。
七种寻址方式一、立即寻址方式操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。
立即数可以是8位、16位或32位,该数值紧跟在操作码之后。
如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。
例如:MOV AH,80H ADD AX,1234H MOV ECX,123456HMOV B1,12H MOV W1,3456H ADD D1,32123456H其中:B1、W1和D1分别是字节、字和双字单元。
以上指令中的第二操作数都是立即数,立即数寻址方式通常用于对通用寄存器或内存单元赋初值。
二、寄存器寻址方式指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。
把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。
指令中可以引用的寄存器及其符号名称如下:8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。
寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。
1、源操作数是寄存器寻址方式如:ADD VARD,EAX ADD VARW,AX MOV VARB,BH等。
其中:VARD、VARW和VARB是双字,字和字节类型的内存变量。
在第4章将会学到如何定义它们。
2、目的操作数是寄存器寻址方式如:ADD BH,78h ADD AX,1234h MOV EBX,12345678H等。
3、源和目的操作数都是寄存器寻址方式如:MOV EAX,EBX MOV AX,BX MOV DH,BL等。
三、直接寻址方式指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。
在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。
寻址方式:1.立即寻址:操作数直接出现在指令中,紧跟在操作码的后面,作为指令的一部分于操作码一起存放在程序储存器中,可以立即得到并执行,不需要经过别的途径去寻找,在数前常冠以#作为前缀。
2.寄存器寻址:在指令选定的某寄存器中存放或读取操作数3,寄存器间接寻址:由指令指出某一寄存器的内容,常有@前缀。
4,直接寻址:指令中直接给出操作数所在的存储器地址。
5,变址寻址:基址寄存器加变址寄存器间接寻址,MOVC A,@A+DPTR.6,相对寻址:以当前程序计数器PC值加上指令中给出的偏移量rel而构成实际操作数地址的寻址方法,它用于访问程序存储器,常出现在相对转移指令中。
7,位寻址:在位操作指令中直接给出位操作数的地址可以对片内RAM中128个位和特殊功能寄存器SFR中的93个位进行寻址。
数据传送类指令:一、以累加器为目的操作数的指令MOV A, Rn ; (Rn)→A,n=0~7MOV A, @Ri ; ((Ri))→A,i=0,1MOV A, direct ;(dir ect)→AMOV A, #data ; #data→A二、以Rn为目的操作数的指令MOV Rn, A ; (A)→Rn, n=0~7MOV Rn, direct ;(direct)→Rn, n=0~7MOV Rn, #data ; #data→Rn, n=0~7三、以直接地址direct为目的操作数的指令MOV direct, A ; (A)→directMOV direct, Rn ;(Rn)→direct, n=0~7MOV direct1, direct2;MOV direct, @Ri ;((Ri))→directMOV direct, #data ; #data→direct四、以寄存器间接地址为目的操作数的指令MOV @Ri, A ;(A)→((Ri)),i=0,1MOV @Ri, direct ;(direct)→((Ri))MOV @Ri, #data ; #data→((Ri))五、16位数传送指令MOV DPTR, #data16 ; #data16→DPTR唯一的16位数据的传送指令,立即数的高8位送入DPH,立即数的低8位送入DPL。