- 605
- 0
- 约3.57千字
- 约 6页
- 2018-12-02 发布于天津
- 举报
TEC-XP+教学系统基础汇编语言程序设计实验.doc
TEC-XP+教学系统基础汇编语言程序设计实验
一、实验目的:
1.学习和了解TEC-2000十六位机监控命令的用法:
2.学习和了解TEC-2000十六位机的指令系统;
3.学习简单的TEC—2000十六位机汇编程序设计;
二、实验内容:
1.使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容;
2.使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T命令单步运行并观察程序单步执行情况;
三、实验要求
在使用该教学机之前,应先熟悉其的各个组成部分,及使用方法。
四、十六位教学机的汇编语言程序设计举例
【例1】设计一个小程序,在屏幕上输出显示字符‘6’。
A 2000 ;地址从16进制2000(内存RAM区的起始地址)开始
2000:MVRD R0,0036 ;把字符‘6’的ASCII码送入R0
2002:OUT 80 ;在屏幕上输出显示字符‘6’,80为串行接口地址
2003:RET ;每个用户程序都必须用RET指令结束
2004: ;(按回车键即结束输入过程)
这就建立了一个从主存2000h地址开始的小程序。在这种方式下,所有的数字都约定使用16进制数,故数字后不用跟字符h,每个用户程序的最后一个语句一定为RET汇编语句。因为监控程序是选用类似子程序调用方式使实验者的程序投入运行的,用户程序只有用RET语句结束,才能保证程序运行结束时能正确返回到监控程序的断点,保证监控程序能继续控制教学机的运行过程。
【例2】设计一个小程序,用次数控制在终端屏幕上输出’0’到’9’十个数字符
A 2020
2020 MVRD R2,000A ;送入输出字符个数
MVRD R0,0030 ;“0”字符的ASCII码送寄存器R0
OUT 80 ;输出保存在R0低位字节的字符
DEC R2 ;输出字符个数减1
JRZ 202E ;判10个字符输出完否,已完,则转到程序结束处
PUSH R0 ;未完,保存肋的值到堆栈中
2028 IN 81 ;查询接口状态,判字符串行输出完成否,
SHR R0
JRNC 2028 ;未完成,则循环等待
POP R0 ;已完成,准备输出下一字符并从堆栈恢复R0的值
INC R0 ;得到下一个要输出的字符
JR 2024 ;转去输出字符
202E RET
这个程序只使用基本汇编语句。理解中的一个难点,是程序当中判串行口是否完成一个字符的输出过程并循环等待的三个汇编语句。具体解释见有关串行接口讲解部分的内容。
该程序的执行码放在2020起始的连续内存区中。若送入源码的过程中有错,系统会进行提示,等待重新打入正确汇编语句。在输入过程中,在应打入语句的位置直接打回车则结束输入过程。
接下来可用G 2020命令运行该程序。
思考题:若要求在终端屏幕上输出‘A’到‘Z’共26个英文字母,应如何修改例1中给出的程序?请验证之。
将第五行实验代码改为“JRZ 210E”
【例3】从键盘上连续打入多个属于’0’到’9’的数字符并在屏幕上显示,遇非数字符结束输入过程。
A 2040
2040 MVRD R2,0030 ;用于判数字符的下界值
MVRD R3,003A ;用于判数字符的上界值
2044 IN 81 ;判键盘上是否按了一个键,
SHR R0 ;即串行口是否有了输入的字符
SHR R0
JRNC 2044 ;没有输入则循环测试
IN 80 ;输入字符到R0
MVRD R1,00FF
AND R0,R1 ;清零R0的高位字节内容
CMP R0,R2 ;判输入字符≥字符’0’否
JRNC 2053 ;为否,则转到程序结束处
CMP R0,R3 ;判输入字符≤字符’g’否
JRC 2053 ;为否,则转到程序结束处
OUT 80 ;输出刚输入的数字符
JMPA 2044 ;转去程序前边2044处等待输入下一个字符
2053 RET
思考题:本程序中为何不必判断串行口输出完成否?设计打入‘A’~‘Z’和‘0’~‘9’的程序,遇其它字符结束输入过程。
【例4】计算1到10
原创力文档

文档评论(0)