偏移寻址

相对寻址. PC(Program Counter)

以程序计数器pc所指的地址作为起点

当前指令存放地址位1000

若当前指令字长=2B,则PC+2

若当前指令字长=4B,则PC+4

相对寻址:EA=(PC)+A,其中A是相对PC所指的位移量,可正可负,补码表示

优点:这段代码在程序内浮动时不用更改跳转指令的地址码

基址寻址. BR (Base Address Register)

以程序的起始存放地址作为起点

将cpu中基址寄存器(BR)内容加上指令格式中地址形式A

而形成的有效地址EA=(BR)+A

程序员是不能操作br的值的,因为程序员不知道应用程序放在内存的什么位置

当用户决定哪个寄存器作为基址寄存器后,其内容不可由程序员擅自修改,而是由操作系统决定

优点:可扩大寻址范围(基址寄存器的位数大于形式地址A的位数)用户不必考虑自己的程序位于主存的那一个空间区域,故有利于多道程序设计,以及可用于编制浮动程序。

变址寻址. IX(Index Register)

程序员自己决定从哪里作为起点

除了EA=(IX)+A之外,和基址寻址一模一样

变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可以由用户改变

![image-20250915164529326](/Users/tusier/Library/Application Support/typora-user-images/image-20250915164529326.png)

在数组处理过程中,可设定A为数字的首地址,不断改变编制寄存器的IX内容,便可很容易形成数组中任意数据的地址,特别适合编制循环程序。

优点:在数据处理过程中,可设定A位数组的首地址,不断改变编制寄存器IX的内容,便可很容易形成数组中任意数据的地址,特别适合编制循环程序

硬件是如何将两个数进行比较的

硬件视角:通过cmp指令 比较a和b,实际上是用a-b

相减的结果会记录在程序状态字寄存器中(PSW) 标志寄存器

PSW有几个比特位记录上次的运算结果,

进位/借位标志CF,最高位有进位/错位时CF=1

零标志ZF,运算结果为0时,ZF=1

符号标志SF,运算结果为负,SF=1

溢出标志OF,运算结果有溢出,OF=1

堆栈寻址. SP(Stack Pointer)

操作数存放在堆栈中,隐含使用sp作为操作数地址,sp指向栈顶元素

将数据弹出栈的时候使用:POP ACC

寻址方式 有效地址 访存次数(执行指令期间)
隐含寻址 程序指定 0
立即寻址 A即使操作数 0
直接寻址 EA=A 1
一次间接寻址 EA=(A) 2
寄存器寻址 EA=R_i 0
寄存器间接一次寻址 EA=(R_i) 1
相对寻址 EA=(PC)+A 1
基变寻址 EA=(BR)+A 1
变址寻址 EA=(IX)+A 1
堆栈寻址 入栈出栈时EA的确定方式不同 硬堆栈不访存,软堆栈访存一次
posted @ 2025-09-15 17:22  是我,米老鼠  阅读(17)  评论(0)    收藏  举报