没有合适的资源?快使用搜索试试~ 我知道了~
模拟器与汇编程序设计.doc
0 下载量 181 浏览量
2023-07-05
23:16:54
上传
评论
收藏 398KB DOC 举报
温馨提示
试读
58页
模拟器与汇编程序设计.doc
资源推荐
资源详情
资源评论
华中科技大学计算机科学与技术学院 C 语言课程设计报告
I
华中科技大学计算机科学与技术学院
C 语言课程设计报告
题目: 模拟器与汇编程序设计
目 录
华中科技大学计算机科学与技术学院 C 语言课程设计报告
II
一、系统需求分析 ....................................................................................1
二、总体设计 ............................................................................................6
三、数据结构设计 ....................................................................................8
四、详细设计 ..........................................................................................10
五、系统实现 ..........................................................................................14
六、运行测试与结果分析 ......................................................................47
七、总结 ..................................................................................................49
八、参考文献 ..........................................................................................50
九、指导教师评语 ..................................................................................51
华中科技大学计算机科学与技术学院 C 语言课程设计报告
第 1 页 共 56 页
一、系统需求分析
本系统根据给出的指令集架构 ISA 编程实现一个模拟器和汇编程序,能够使
用汇编程序将由给定指令集和指令格式编写的汇编源程序翻译成目标程序,并能
够在模拟器上运行汇编后的目标程序,得到正确结果。
系统还包含两个汇编源程序,供汇编程序翻译成目标代码,即机器码。汇编
源程序 1 的功能是求出 1+2+3+…+100,并且正确输出运算结果。汇编源程序 2
的功能是将字符串“Simulator and Assembler”拷贝到另一个字符串中,并且输
出另一个字符串,源程序可以自动判断字符串尾部并结束拷贝以及结束输出而不
用考虑字符串长度的设定。
具体内容如下:
1. 用 C 语言编制汇编程序,将此简单计算机的汇编源程序翻译成目标代码,
即机器码。为了测试所编制汇编程序的正确性,需用以上介绍的指令集编写两个
汇编源程序,汇编源程序的功能要求为:
求 1+2+3+…+100,并输出运算结果。
② 求将“Simulator and Assembler”拷贝复制到新串并输出运算结果。
串并输出运算结果。
其中,32 条指令以及伪指令和它们的功能如下:
(1) 停机指令:HLT
功能:终止程序运行。
(2) 无条件转移指令:JMP label
功能:将控制转移至标号 label 处,执行标号 label 后的指令。
(3) 比较运算转移指令:CJMP label
功能:如果程序状态字中比较标志位 c 的值为 1(即关系运算的结果为真),
则将控制转移至标号 label 处,执行标号 label 后的指令;否则,顺序往下执行。
(4) 溢出转移指令:OJMP
功能:如果程序状态字中比较标志位 o 的值为 1(即算术运算的结果发生溢
出),则将控制转移至标号 label 处,执行标号 label 后的指令;否则,顺序往
下执行。
(5) 调用子程序指令:CALL label
功能:将通用寄存器 A~G、程序状态字 PSW、程序计数器 PC 中的值保存到
ES,然后调用以标号 label 开始的子程序,将控制转移至标号 label 处,执行标
华中科技大学计算机科学与技术学院 C 语言课程设计报告
第 2 页 共 56 页
号 label 后的指令。
(6) 子程序返回指令:RET
功能:将 ES 中保存的通用寄存器 A~Z、程序状态字 PSW 和程序字数器 PC 的
值恢复,控制转移到子程序被调用的地方,执行调用指令的下一条指令。
(7) 入栈指令:PUSH reg0
功能:将通用寄存器 reg0 的值压入堆栈 SS,reg0 可以是 A~G 和 Z 八个通用
寄存器之一。
(8) 出栈指令:POP reg0
功能:从堆栈 SS 中将数据出栈到寄存器 reg0,reg0 可以是 A~G 七个通用寄
存器之一,但不能是通用寄存器 Z。
(9) 取字节数据指令:LOADB reg0 symbol
功能:从字节数据或字节数据块 symbol 中取一个字节的数据存入寄存器
reg0,所取的字节数据在数据块 symbol 中的位置由寄存器 G 的值决定。用 C 的
语法可将此指令的功能描述为:
reg0 = symbol[G]
例如,假设用伪指令定义了以下字节数据块 num:
BYTE num[10] = {5,3,2,8,6,9,1,7,4,0}
如果要将字节数据块 num 中第 5 个单元的值(即下标为 4 的元素)取到寄存
器 C,指令如下:
LOADI G 5
LOADB C num
后面的指令 LOADW、STOREB 和 STOREW 在操作上与此指令类似。
(10) 取双字节数据指令:LOADW reg0 symbol
功能:从双字节数据或双字节数据块 symbol 中取一个双字节的数据存入寄
存器 reg0,所取的双字节数据在数据块 symbol 中的位置由寄存器 G 的值决定。
(11) 存字节数据指令:STOREB reg0 symbol
功能:将寄存器 reg0 的值存入字节数据或字节数据块 symbol 中的某个单元,
存入单元的位置由寄存器 G 的值决定。用 C 的语法可将此指令的功能描述为:
symbol[G] = reg0
(12) 存双字节数据指令:STOREW reg0 symbol
功能:将寄存器 reg0 的值存入双字节数据或双字节数据块 symbol 中的某个
单元,存入单元的位置由寄存器 G 的值决定。
华中科技大学计算机科学与技术学院 C 语言课程设计报告
第 3 页 共 56 页
(13) 取立即数指令:LOADI reg0 immediate
功能:将指令中的立即数 immediate 存入寄存器 reg0。立即数被当作 16 位
有符号数,超出 16 位的高位部分被截掉。例如:
LOADI B 65535
寄存器 B 的值为-1。
LOADI B 65537
寄存器 B 的值为 1。
(14) 空操作指令:NOP
功能:不执行任何操作,但耗用一个指令执行周期。
(15) 控制台输入指令:IN reg0 0
功能:从输入端口(即键盘输入缓冲区)取一个字符数据,存入寄存器 reg0。
(16) 控制台输出指令:OUT reg0 15
功能:将寄存器 reg0 的低字节作为字符数据输出到输出端口(即显示器)。
(17) 加运算指令:ADD reg0 reg1 reg2
功能:将寄存器 reg1 的值加上 reg2 的值,结果存入寄存器 reg0。如果结
果超过 16 位有符号数的表示范围,将发生溢出,使程序状态字的溢出标志位 o
置为 1;如果未发生溢出,则使程序状态字的溢出标志位 o 置为 0。
(18) 加立即数指令:ADDI reg0 immediate
功能:将寄存器 reg0 的值加上立即数 immediate,结果仍存入寄存器 reg0。
如果结果超过 16 位有符号数的表示范围,将发生溢出,使程序状态字的溢出标
志位 o 置为 1;如果未发生溢出,则使程序状态字的溢出标志位 o 置为 0。
(19) 减运算指令:SUB reg0 reg1 reg2
功能:将寄存器 reg1 的值减去 reg2 的值,结果存入寄存器 reg0。如果结
果超过 16 位有符号数的表示范围,将发生溢出,使程序状态字的溢出标志位 o
置为 1;如果未发生溢出,则使程序状态字的溢出标志位 o 置为 0。
(20) 减立即数指令:SUBI reg0 immediate
功能:将寄存器 reg0 的值减去立即数 immediate,结果仍存入寄存器 reg0。
如果结果超过 16 位有符号数的表示范围,将发生溢出,使程序状态字的溢出标
志位 o 置为 1;如果未发生溢出,则使程序状态字的溢出标志位 o 置为 0。
(21) 乘运算指令:MUL reg0 reg1 reg2
功能:将寄存器 reg1 的值乘以 reg2 的值,结果存入寄存器 reg0。如果结
果超过 16 位有符号数的表示范围,将发生溢出,使程序状态字的溢出标志位 o
剩余57页未读,继续阅读
资源评论
Mmnnnbb123
- 粉丝: 696
- 资源: 8万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功