8086可以对寄存器 位寻址吗

詹士邦 4个月前 已收到1个回答 举报

说伱爱涐 1星

共回答了156个问题采纳率:98.8% 评论

可以

寻址方式就是寻找指令或操作数存放地址的方法。8086提供了8种操作方式,理解这8种寻址方式要联系8086微处理器的结构来学习。

寻址是去找指令或者操作数的存放的地址的,也就是去寻找操作数,最直接的寻址方式就是立即寻址方式,操作数直接就在指令之中。

例:MOV AX,1234H ;直接将16进制数1234H存入寄存器AX中。

还可以对内存进行访问,8位为一个字节,对内存中的每一个字节都编了号的,这个就是地址。只要知道了地址就可行了,地址既可以通过直接给出(直接寻址方式),也可以用计算得到。

例:MOV AX,[5634H] ;用中括号括起来表示将其中的内容作为地址(偏移地址),还需通过加法器跟段寄存器中的地址相加,才能获得20位得物理地址。

8086微处理器可以对寄存器与寄存器之间进行操作,其操作在CPU内部完成。即,寄存器寻址方式。

例:MOV AX,BX ;AX,BX均为寄存器。

还有寄存器间接寻址方式,将寄存器中的内容作为偏移量。

例:MOV AX,[BX] ;用中括号将BX括起来表示将BX中的值作为地址。

基址变址寻址方式:其有效地址由一个基址寄存器和一个变址寄存器得方式确定,不能两者均为变址寄存器。

例:MOV AX,[BX][SI]

MOV AX,[BX+SI]

MOV AX,CS:[BX+SI]

在上边即基础上在加上一个位移量,也可找到一个地址,这种方式叫做相对基址变址寻址方式。

例:MOV AX,TABLE[BX][SI]

MOV AX,TABLE[BX+SI]

mov AX,[BX+SI+TABLE] ;上面三种方式等价

跟寄存器间接寻址差不多得还有寄存器相对间接寻址方式,在上面得基础上面在加上一个位移量。这样同样可容易找到所存储得位置,如果两个均为没有基地址则会出错。

例:MOV CL,[BX+2000H] ;[位移量+基址寄存器名或变址寄存器名]

MOV AX,20H[SI] ;位移量[基址寄存器名或变址寄存器名]

若选择BX,SI,或DI寄存器提供得基地址或变地址,则操作数一般用DS提供基址,若选择BP寄存器提供得基地址或变地址,则操作数在堆栈段,一般用SS提供基址。

除上述七种寻址方式外还有一类特殊得寻址方式,即隐含寻址。隐含寻址就是在指令中不出现操作数,但指令本身隐含指示了操作数得来源。

5小时前

16
可能相似的问题

热门问题推荐

Copyright © 2024 微短问答 All rights reserved. 粤ICP备2021119249号 站务邮箱 service@wdace.com