供选择的答案
A:①直接
②运算器
③立即数
④指令
B:①直接
②间接
③堆栈
④内存
C:①直接
②寄存器
③寄存器间接
④变址
D:①23A0H
②4B00H
③2B3FH
④2EA0H
E:①23DFH
②4BFH
③23A0H
④203FH
【答案】A:③B:①C:③D:③E:①
【解析】本题考查指令系统常用的寻址方式。
所谓寻址方式是确定本条指令的数据地址及下一条要执行的指令地址的方法。它与计算机硬件结构关系极为密切,与高级语言的编译程序设计也同样密切。下面介绍题中涉及的几种寻址方式。
直接寻址。指令的地址码部分给出操作数的地址,就是直接寻址。
基址寻址。在计算机中设置一个专用的基址寄存器,或由指令指定一个通用寄存器为基址寄存器。这样操作数的地址由基址寄存器的内容和指令的地址码相加得到,这就是基址寻址。基址寻址主要用于解决程序在存储器中的定位和扩大寻址空间等问题。通常基址寄存器中的值只能由系统程序设定,由特权指令执行。
变址寻址采用的机制是,由指令地址码部分给出的地址和指定的变址寄存器的内容相加得到地址。
间接寻址即根据指令的地址码所取址的内容是操作数的地址或指令的地址,而非操作数或下一条要执行的指令。根据地址码指出的是寄存器地址还是内存地址,又可以把间接寻址分为寄存器间接寻址和存储器间接寻址。
相对寻址。把程序计数器PC的内容与地址码部分给出的位移量相加得到操作数地址或转移地址,这就是相对寻址,相对寻址主要用于转移指令。
了解以上概念,问题A、B、C的解答就很明确了。以上寻址方式在计算机中一般组合使用,但对于使用高级语言的程序员来说,考虑寻址方式是编译程序的事情。对于使用汇编语言开发程序的程序员来说,认真研究指令的寻址方式对于所开发程序的运行效率就有很大的影响了。
接着具体分析解答D、E。D采用相对寻址,把当前执行指令的地址与地址码部分给出的位移量之和作为操作数的地址,这里正好是2B00H+3M=2B3FH。E是基址与变址的组合寻址,实际地址应为:
基址寄存器内容+变址寄存器内容+指令地址码=2000H+03A0H+3FH=23DFH。