数据寻址-偏移寻址(硬核)
\quad
\quad
\quad
\quad
\quad
\quad
\quad
一. 基址寻址
\quad
A就是偏移量
有的用通用寄存器来代替BR专用寄存器的功能
其中
R
0
R_0
R0?的位数是由通用寄存器的总数来判断的, 比如通用寄存器有8行, 那么
R
0
R_0
R0?就需要用3bit来指明
\quad
基址寻址的作用
那么如果地址不是从0开始的呢?
只需要更改基址就可以, 不用更改指令的地址码
永远让BR指向起始地址
\quad
\quad
我们写的应用程序到底被放到内存的什么位置, 这点是由操作系统来管理的, 我们决定不了,
而基址寄存器是指向应用程序的起始地址, 因此基址寄存器的内容显然是由操作系统来管理, 所以不由程序员控制, 但是程序员可以用汇编语言操作通用寄存器里的内容
\quad
二. 变址寻址
\quad
\quad
变址寻址和基址寻址很类似, 最大的不同是变址寄存器的内容程序员是可以修改的
而且通常我们把IX作为偏移量, A作为基址, 这点和基址寻址是相反的
\quad
变址寻址的作用
局限性: 若要从0加到100, 就要一直增加操作数和地址码, 很不方便
\quad
用变址寻址可以实现循环
在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器lX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序。
\quad
注:实际应用中往往需要多种寻址方式复合使用(可理解为复合函数)
\quad
三. 相对寻址
\quad
A可正可负, 用补码表示
\quad
注意: 取出指令后PC自动加"1", 字长2个字节就加2 , 字长4个字节就加4
\quad
相对寻址的作用
\quad
\quad
\quad
四. 硬件如何实现数的"比较"
\quad
若要实现比较a和b的大小, 其实就让两个数相减看结果为什么, 结果为0则相等
结果为正则a大, 结果为负则a小
这里是通过标志位来判断
\quad
关于条件跳转指令
jmp 2, (无条件跳转到地址2)
je 2, (jump when equal 若a和b相等则跳转到地址2)
jg 2, (jump when great 若a>b则跳转到地址2)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!