指令和寻址方式

实验目的

熟悉实验调试软件;理解各种寻址方式;理解指令功能。

实验原理

实验CPU的指令系统包括各类传送类指令、算术逻辑运算类指令、移位类指令、转移类指令、子程序调用返回指令、输入输出类指令等。在寻址方式上采用最典型的寻址方式,分别是立即寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址、寄存器自增间接寻址、寄存器变址寻址、相对寻址8种。

实验任务

基本寻址方式

将下面的指令通过调试软件输入到模型机的主存,输入时注意根据指令的字长确定每条指令所在的主存地址。在开始运行之前向以下主存单元输入已知数据,使(0080H)= 0088H,(0088H)= 0081H,输入完成后以“指令单步”方式运行,并对运行结果进行分析。

MOV 0080H, 0081H
MOV #0080H, R0
MOV (0080H), R1
MOV 8(R0), 0082H
MOV (R1), R2

移位、条件转移指令和相对寻址

将下面汇编语言程序手工翻译成机器指令,填写在横线上,并输入到模型机的主存,以“指令单步”方式运行。

ORG 0030H
0030: ______ ______; MOV #0505,R1
0032: ______ ______; AND #0001,R1
0034: ______ ______; JNZ 1(PC)
0036: ______ ; HALT
0037: ______ ; ROL R1
0038: ______ ______; JMP 0032H

记录指令执行后的相关数据(如相关寄存器和PSW的变化),分析执行结果的意义(如程序是否转移,转移的目的地址是多少),直到运行到HALT指令。

入栈和出栈指令

将下面汇编语言程序输入到模型机的主存,以“指令单步”方式运行。观察堆栈指针SP、堆栈存储单元以及相关寄存器和内存单元的变化,理解堆栈的用法。

MOV #0041H,R0
PUSH R0
PUSH 0040H
POP (R0)
POP R1

子程序调用和返回

下面的程序将0038H单元的内容读入寄存器R1,调用子程序完成乘2,返回主程序后将结果保存到0039H单元。程序运行前需要先设置0038H单元的值。

ORG 0030H
0030: ______; MOV 0038H, R1
0031: ______
0032: ______; CALL 0040H
0033: ______
0034: ______; MOV R1, 0039H
0035: ______
0036: ______; HALT

ORG 0040H
0040: ______; ADD R1, R1
0041: ______; RET

将上面的程序输入到模型机,将机器码填入横线上。单步运行,观察子程序调用和返回前后的堆栈变化。