一、实验目的和要求:
实验目的
利用计算机控制系统,模拟实现子程序调用,理解程序调用的实现过程和实现原理。理解微程序控制器的工作原理。
实验要求
1.编写主程序、子程序并进行汇编形成机器码程序;
2.单微步运行程序,详细记录程序运行过程,理解指令与微程序的关系。
二、实验仪器设备(包括软硬件环境、配置):
硬件:pc,存储器,键盘,鼠标,微处理器…
软件:操作系统win10,仿真应用软件
三、实验过程(具体实验步骤,现象、数据):
(一)实验内容编写主程序、子程序,单微步运行调试程序。
(二)实验过程
1.编汇编语言
MOV A,#00H
LOOP:
CALL INC A
JMP LOOP
INC A:
ADD A,#2
RET //中断返回
END
MOV A,#08H
LOOP:
CALL INC A
JMP LOOP
INC A:
SUB A,#2
RET
END
2.将程序汇编成机器码,反汇编窗口显示出程序地址、机器
码、EM程序。
程序地址 | 机器码 | 反汇编指令 | 指令说明 |
00 | 7C00 | MOV A,#00H | 立即数00H存入累加器A |
02 | BC02 | CALL 06 | 调用子程序 |
04 | AC02 | JMP 02 | 跳转02地址,循环执行 |
06 | 1C02 | ADD A,#02H | 累加器A加2 |
08 | CC | RET | 子程序返回(中断返回) |
程序地址 | 机器码 | 反汇编指令 | 指令说明 |
00 | 7C00 | MOV A,#08H | 立即数08H存入累加器A |
02 | BC06 | CALL 06 | 调用子程序 |
04 | AC02 | JMP 02 | 跳转02地址,循环执行 |
06 | 3C02 | SUB A,#02H | 累加器A减2 |
08 | CC | RET | 子程序返回(中断返回) |
3.执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PCuPC如何工作。观察在调用子程序和从子程序返回时,堆栈的工作情况。
单微步运行程序,运行结果:
序号(单步)
PC | IR | ST | A | uPC | uM | |
1 | 00 | 00 | 00 | 00 | 00 | CBFFFF |
2 | 00 | 00 | 00 | 00 | 00 | CBFFFF |
3 | 01 | 7C | 00 | 00 | 7C | C7FFF7 |
4 | 02 | 7C | 00 | 00 | 7D | CBFFFF |
5 | 03 | BC | 00 | 00 | BC | EF7F7F |
6 | 03 | BC | 03 | 00 | BD | FFEF7F |
7 | 06 | BC | 03 | 00 | BE | D6BFFF |
8 | 07 | BC | 03 | 00 | BF | CBFFFF |
9 | 08 | 1C | 03 | 00 | 1C | C7FFEF |
10 | 08 | 1C | 03 | 02 | 1D | FFFE90 |
11 | 09 | 1C | 03 | 02 | 1E | CBFFFF |
PC | IR | ST | A | uPC | uM | |
1 | 00 | 00 | 00 | 00 | 00 | CBFFFF |
2 | 00 | 00 | 00 | 00 | 00 | CBFFFF |
3 | 01 | 7C | 00 | 08 | 7C | D7FFF7 |
4 | 02 | 7C | 00 | 08 | 7D | CBFFFF |
5 | 03 | BC | 00 | 08 | BC | EF7F7F |
6 | 03 | BC | 03 | 08 | BD | FFEF7F |
7 | 06 | BC | 03 | 08 | BE | D6BFFF |
8 | 07 | BC | 03 | 08 | BF | CBFFFF |
9 | 08 | 3C | 03 | 08 | 3C | C7FFEF |
10 | 08 | 3C | 03 | 06 | 3D | FFFE91 |
11 | 09 | 3C | 03 | 06 | 3E | CBFFFF |
四、实验分析:
通过此次试验我利用计算机控制系统,模拟实现了子程序调用,理解程序调用的实现过程和实现原理和理解微程序控制器的工作原理。指令与微指令的关系是每一条机器指令由若干微指令组成的微程序来解释执行。微程序入口地址是由机器指令的操作码字段即LOOP字段通过微地址形成部件产生该机器指令所对应的微程序的入口地址并送入微地址寄存器形成的。该实验是通过RET来实现子程序的调用和返回的
3.列举一条指令对应的微程序;
4.子程序调用和返回如何实现?Pc->ST,st->pc
5.若多重调用如何实现?(设想,与栈st的特点有关)