《计算机系统平台》tec-2000汇编程序设计实验

tech2022-10-01  118

计算机系统平台实验

——完成如下汇编程序设计题目

【十进制转二进制的小工具】用教学及的指令结构,设计一个程序,实现从键盘读入无符号的十进制整型数据,到计算机内转换成二进制数并保存在累加器R15中(也可以自行存储在其他寄存器中。但要特别注意,编写程序的过程中不允许使用R4和R5寄存器,他们在该教学机的设计中有特殊的用途),并将该数以二进制的方式输出。要求有适当的检查各种操作错误的能力。最终程序实现效果如下图所示: 问题分解:从键盘输入一个4位的十进制数据,要求程序只能够接收‘0’到‘9’范围内的键盘输入,如果正确则将字符显示在屏幕上,如果输入其他字符则没反应,直到输入四位数字之后,程序自动退出。

MVRD R2,0030 //定义输入的字符下界‘0’ MVRD R3,0039 //定义输入的字符上界‘9’ MVRD R6,0004 //设置计数器“字符个数为4” (adr1) IN 81 //检查串行输入口是否有按键被按下 SHR R0 SHR R0 RNC adr1 //没有按键按下就回到adr1处,循环检查 IN 80 //将串行输入口的数据存入R0 MVRD R1,00FF //清空R0高八位的字节内容 AND R0,R1 CMP R0,R2 //如果输入的字符ASCII码比0小, JRNC (adr1) //回到adr1处,重新等待输入 CMP R3,R0 //如果输入的字符ASCII码比9大, JRNC (adr1) //回到adr1处,重新等待输入 OUT 80 //输出读入的字符 DEC R6 //输出字符个数减一 JRNZ (adr1) //输出未完成,程序跳转,继续循环 RET //程序结束

程序效果图:

设计程序,将某个寄存器的值以16个二进制位的形式显示在屏幕上。 例如,当前寄存器R15的内容为“2F7B”,那么运行你设计的程序之后,屏幕上输出“0010111101111011”

MVRD R15, 2F7B //将R15寄存器里的值设置为2F7B MVRD R1, 0010 //用来进行循环次数控制 (adr4) SHL R15 //将R15里的值左移一位,最左边的值保存在标志位C中,如 JRC adr1 //果产生进位,即:操作数的最左边一位为1,程序跳转输出1 MVRD R0, 0030 //将R0的值设为字符‘0’ OUT 80 //将R0里的值输出到屏幕上 (adr2) IN 81 SHR R0 //循环等待,判断是否输出结束 JRNC adr2 DEC R1 //循环次数减一 JRZ adr3 //如果循环完成,程序跳转结束 JR adr4 //循环未完成,程序跳转继续循环 (adr1) MVRD R0, 0031 //将R0的值设为字符‘1’ OUT 80 //将R0中的字符输出到屏幕上 JR adr2 //程序跳转,循环等待。。。 (adr3) RET

有点懒了,后面的不想写了。直接贴完整代码吧。

完整代码如下 之前的实验报告我上传了,有需要的可以去下载(实验报告里比较详细,注释有每一步代码的意义,还有我遇到的问题以及上课老师给的例题理解)

PDF版->计算机系统平台汇编程序设计实验报告 word版->计算机系统平台汇编程序设计实验报告

最新回复(0)