下面小编为大家整理5个寄存器寻址的建议,具有很好的参考价值。
在寄存器间接寻址方式下,操作数在()中。A.通用寄存器B.I/O口C.存储单元D.段寄存器
C.存储单元
在寄存器间接寻址方式中,操作数的地址存储在寄存器中,而不是操作数本身,即操作数是通过寄存器间接获取的,所以称为寄存器间接寻址。操作数放在RAM的一个存储单元中,该单元的地址放在寄存器R0或R1中。
如果要进行算术运算,可以计算每个班级学生每个科目的平均成绩,可以编写一个求平均成绩的通用程序,将每个学生的成绩送入内存的各个单元,此时可以采用直接寻址,因此寻址方式越多,编程越方便灵活,适用范围也越广。
扩展数据
操作数的分类
1、立即数操作数
指令要操作的数据以常量形式出现在指令中,称为立即数,只能作为源操作数使用。
2,寄存器操作数
该指令要操作的数据存放在CPU中的寄存器中,指令中可以给出寄存器名称。
3,内存操作数
该指令要操作的数据存放在内存的某些单元中。内存单元的物理地址在指令中给出。实际上指令中只给出了偏移地址,段地址是隐式给出的。使用跨段方式指出当前段地址。
参考来源:百度百科-操作数
参考来源:百度百科-寄存器间接寻址
七种寻址方式示例
的七种寻址方式示例为:
1,立即数寻址方式:
指令:MOVAX,1234H
:AX=1234H
2,寄存器寻址方式:
for16bitsOperands,寄存器可以不同类型:AX、BX、CX、DX、SI、DI、并联SP和BP等。
3,直接寻址方式:
MOVAX,[8054]
例如(DS)=2000H,
,执行结果为(AX)=3050H
4,寄存器间接寻址方式:54088
MOVAX,[SI]
if(ds)=5000H(SI)=1234H
,则物理地址=50000+1234=51234H54088
51234H地址为:6789H
执行这条命令后,(AX)=6789H
5,寄存器相对寻址方式:
MOVAX,[DI+1223H]
假设,(DS)=5000H,(DI)=3678H
,则物理地址=50000+3678+1233=5489BH
5489BH地址:5AH
执行这条指令后,AX=5AH
6,基地址加变址寻址方式:
MOVAX,[BX][DI]
7,相对基地址加变址寻址方式:
MOVAX,[BX+DI-2]
假设,(DS)=5000H,(BX)=1223H,DI=54H,(51275)=54H,(51276)=76H
物理地址=50000+1223+0054+FFFE(-2的一位取反加1)=51275H
执行完这条指令(AX)=7654H
寄存器寻址与寄存器间接寻址的区别
寄存器(直接)寻址:指令表示暂存操作数的寄存器。寄存器的内容是操作数。例如:ax中放入1,bx中放入2,addax,bx的结果为ax=3。
寄存器是间接寻址,指令指的是存放操作数偏移地址的寄存器。即把操作数放在内存空间的某个地方,这个地方的地址是由段地址和寄存器指示的偏移量计算出来的。段地址是根据某些约定给出的。如果指令中指出bx、si或di寄存器(附加段未定义),则表示操作数在数据段,物理地址先由ds的值和名册;如果指令中指出了bp,说明操作数在栈段,选择ss的值和寄存器的内容合成物理地址;如果定义了附加段,并且在指令中指定了di寄存器,则选择es和di合成物理地址;如果指令中有超出段的前缀,则选择指令中指出的段寄存器值和寄存器的内容合成物理地址。
如:mov
ax,[bx]
操作数[bx]为寄存器间接寻址方式。
如果ds=4000h,bx=100h,存储单元(40100h)=3256h
物理地址=16*ds+bx=40000h+100h=40100h
执行后ax=3256h
简单来说,直接寻址,操作数在寄存器中;间接寻址,操作数在一个存储单元中,存储单元的地址由段地址寄存器和偏移地址寄存器决定。
寄存器直接寻址和间接寻址有什么区别???
1.方法不同
1.直接找旧地址:直接在指令格式的地址域中指出操作数在内存中的地址。
2、间接寻址:指令地址域的形式地址D不是操作数的真实地址,而是操作数地址的指示符,或者D单元的内容是操作数的地址。
2.不同的特点
1.直接寻址:直接给操作数地址,不作任何变换,指令中直接给定参与运算的操作数和存放运算结果的主存地址,即地址在指令中直接给出。
2.间接寻址:需要用寄存器符号的形式表示,在寄存器名前加间接寻址符号“@”。
3.原理不同
1.直接寻址:操作数存放在数据段中,因此其物理地址将直接由数据段寄存器DS和指令中给出的地址组成,但如果段超过前缀,则操作数据可以存储在其他段中。
2.间接寻址:建立在直接寻址的基础上,即直接寻址得到的数据是一个地址,通过这个地址找到最终的数据,即两次寻址,次是Address,次是目标数据。
参考来源:百度百科-间接寻址
参考来源:百度聚民百科-直接寻址
寻址方式
寻址方式(或寻址方式)是指确定本条指令的数据地址和下一条要执行的指令的地址的方法。所需的操作数由指令的地址码部分直接给出,称为立即数(直接数)寻址方式。
特点:
取指令时,同时取操作码和一个操作数,减少了访问内存的次数,提高了指令的执行速度。但只适用于操作数固定的情况。
计算机的处理器一般都装有一定数量的通用寄存器,用来存放操作数、操作数地址或中间结果。通用寄存器的个数一般在几个到几十个之间,远少于存储单元,所以地址码短,节省存储空间,提高指令的执行速度,从寄存器访问数据比访问数据快从记忆中很多。
是最直观的方式。指令的地址码部分给出了操作数在内存中的地址,指令的寻址方式用操作码来表示。
有时根据指令的地址码取出的不是操作数,也不是下一条要执行的指令,而是操作数的地址或指令的地址。这种方法称为间接寻址(indirectaddressing)(次读取操作数的地址,次读取操作数)。大多数计算机只允许间接访问一次。
间接寻址可分为寄存器间接寻址和内存间接寻址两种。
在计算机中设置一个特殊的基地址寄存器,或通过该指令指定一个通用寄存器作为基地址寄存器。操作数的地址由基址寄存器的内容和指令的地址码A相加得到。地址码A通常称为位移量(disp)。
操作数的地址由指令地址码部分给定的地址码A和指定变址寄存器的内容通过加法器相加得到。这是几乎所有计算机都使用的寻址方式。
计算机中有基地址寄存器时,还要加上基地址寄存器的内容。
用程序计数器PC的内容(即当前执行指令的地址)加上指令地址码部分给出的位移量(Disp)之和作为操作数的地址或传送地址。
相对寻址主要用于传输指令。执行该指令后,将转移到(PC)+Disp。
特点:
转账地址不固定。
位移可正可负,一般用补码表示。