基础汇编语言程序设计实验指导
更新时间:2023-06-10 22:39:01 阅读量: 实用文档 文档下载
基础汇编语言程序设计
实验目的:
1. 学习和了解 TEC-2000 十六位机监控命令的用法;
2. 学习和了解 TEC-2000 十六位机的指令系统;
3. 学习简单的 TEC-2000 十六位机汇编程序设计;
实验内容:
1. 使用监控程序的 R 命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容;
2. 使用 A 命令写一小段汇编程序,U 命令反汇编刚输入的程序,用 G 命令连续运行该程序,用 T命令单步运行并观察程序单步执行情况;
3、执行下面程序,查看执行过程。
4、编写汇编语言程序,编写汇编语言程序,实现10(十进制)以内一位数的乘法运算,例如输入“8*9=”同步显示8*9=后接着显示72,即“8*9=72”。或实现100(十进制)以内两位数的乘法运算,例如输入“8*9=”同步显示8*9=后接着显示72,即“8*9=72”;如果输入“12*12=”则显示“12*12=144”。
实验要求
在使用该教学机之前,应先熟悉其的各个组成部分,及使用方法。
十六位教学机的汇编语言程序设计举例
例子 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
MVRD R2,000A ;送入输出字符个数
MVRD R0,0030 ; “0”字符的 ASCII 码送寄存器 R0
OUT 80 ;输出保存在 R0 低位字节的字符
DEC R2 ;输出字符个数减 1
JRZ 202E ;判 10 个字符输出完否,已完,则转到程序结束处
PUSH R0 ;未完,保存 R0 的值到堆栈中
(2028)IN 81 ;查询接口状态,判字符串行输出完成否,
SHR R0 ;
JRNC 2028 ;未完成, 则循环等待
POP R0 ;已完成, 准备输出下一字符并从堆栈恢复 R0的值
INC R0 ;得到下一个要输出的字符
JR 2024 ;转去输出字符
(202E) RET
这个程序只使用基本汇编语句。理解中的一个难点, 是程序当中判串行口是否完成一个字符的输出过程并循环等待的三个汇编语句。具体解释见有关串行接口讲解部分的内容。
该程序的执行码放在 2020 起始的连续内存区中。若送入源码的过程中有错, 系统会进行提示, 等待重新打入正确汇编语句。在输入过程中, 在应打入语句的位置直接打回车则结束输入过程。接下来可用 G 2020 命令运行该程序。
思考题: 当把 IN 01, SHR R0, JNC, 2029 三个语句换成 4 个 MVRR R0,R0 语句, 该程序执行过程会出现什么现象? 试分析并实际执行一次。
类似的, 若要求在终端屏幕上输出'A'到'Z'共 26 个英文字母, 应如何修改例 1 中给出的程序? 请验证之。
例子3: 从键盘上连续打入多个属于'0'到'9'的数字符并在屏幕上显示, 遇非数字符结束输入。
A 2040
(2040)MVRD R2, 0030` ; 用于判数字符的下界值
MVRD R3, 0039 ; 用于判数字符的上界值
(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 ; 判输入字符≤字符'9'否
JRC 2053 ; 为否, 则转到程序结束处 ,想一想做这步有什么用!!
OUT 80 ; 输出刚输入的数字符
JMPA 2044 ; 转去程序前边 2044 处等待输入下一个字符
(2053) RET
思考题, 本程序中为什么不必判别串行口输出完成否? 设计打入'A'~'Z'和'0'~'9'的程序, 遇其它字符结束输入过程。
从地址 2040开始输入下列程序:
例子 4: 计算 1 到10 的累加和。
A 2060
(2060)MVRD R1, 0000 ; 置累加和的初值为 0
MVRD R2, 000A ; 最大的加数
MVRD R3, 0000
(2066)INC R3 ; 得到下一个参加累加的数
ADD R1, R3 ; 累加计算
CMP R3, R2 ; 判是否累加完
JRNZ 2066 ; 未完, 开始下一轮累加
RET
运行过后, 可以用 R 命令看 R1 中的累加结果。
例子 5: 设计一个有读写内存和子程序调用指令的程序,功能是读出内存中的字符,将其显示到显示器的屏幕上,转换为小写字母后再写回存储器原存储区域。
E 20F0 (送入将被显示的 6 个字符‘A’~‘F’到内存 20F0开始的存储区域中) 0041 0042 0043 0044 0045 0046
A 2080
(2080)MVRD R3, 0006 ;指定被读数据的个数
MVRD R2, 20F0 ;指定被读、写数据内存区首地址
(2084)LDRR R0,[R2] ;读内存中的一个字符到 R0 寄存器
MVRD R8, 2100 ;指定子程序地址为2100 *此条指令与下一条指令可以改为CALA CALR R8 ;调用子程序,完成显示、转换并写回的功能
DEC R3 ;检查输出的字符个数
JRZ 208C ;完成输出则结束程序的执行过程
INC R2 ;未完成,修改内存地址
JR 2084 ;转移到程序的 2086 处,循环执行规定的处理
(208C)RET
A 2100 ; 输入用到的子程序到内存 2100 开始的存储区
(2100)OUT 80 ;输出保存在 R0 寄存器中的字符
MVRD R1,0020
ADD R0,R1 ;将保存在 R0 中的大写字母转换为小写字母
STRR [R2],R0 ;写 R0 中的字符到内存,地址同 LOD 所用的地址
(2105)IN 81 ;测试串行接口是否完成输出过程
SHR R0
JRNC 2105 ;未完成输出过程则循环测试
RET ;结束子程序执行过程,返回主程序
运行过程中,可以直接看到屏幕上显示的内容,运行过后, 再用 D 20F0 看内存的 20F0 区 域中保存的运行结果:
0061 0062 0063 0064 0065 0066
上述 5 个例子, 都是用监控程序的 A 命令完成输入源汇编程序的。在涉及到汇编语句标号的地方, 不能用符号表示, 只能在指令中使用绝对地址。使用内存中的数据, 也由程序员给出数据在内存中的绝对地址。显而易见, 对这样的极短小程序矛盾并不突出, 但很容易想到,对很大的程序, 一定会有较大的困难。
在用 A 命令输入汇编源语句的过程中, 有一定用机经验的人, 常常抱怨 A 命令中未提供适当的编辑功能, 这并不是设计者的疏漏, 因为我们并不准备在这种操作方式下支持设计较
长的程序, 这种工作应转到提供了交叉汇编程序的 PC 机上去完成。相反的情况是, 输入上述一些小程序, 用监控程序的 A 命令完成, 往往比用交叉汇编完成更简捷。
正在阅读:
基础汇编语言程序设计实验指导06-10
2012年上体考研内部练习真题02-27
宝钢1#高炉三电控制系统配置及其特点05-31
少先队入队仪式活动流程03-20
郭明义电影观后感04-02
行政法学作业一11-28
【人教版】语文选修中国古代诗歌散文欣赏-课时训练1504-14
《冬去春来》观后感12-11
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 汇编语言
- 程序设计
- 指导
- 实验
- 基础
- 全国各省1998——2011GDP统计数据
- 吉林大学博士、硕士学位论文答辩工作安排的通知及论文写作要求
- 浅谈事业单位固定资产管理
- HTTP协议详解(真的很经典)
- 基于FPGA的交通灯控制器的设计
- 仁爱英语七年级上册说课稿_Unit2_Topic1_SectionA
- 椭圆及其标准方程 同步作业2020-2021学年高二上学期数学人教A版(2019)选择性必修第一册
- 1.1.3可线性化的回归分析课时作业2020-2021学年高二下学期数学北师大版选修1-2第一章
- 中学语文教师继续教育工作总结范文
- 关于监理公司的考核管理制度fa
- 世界十大女装品牌
- 《实用网络技术》练习测试题参考答案
- 小学生语文预习要求
- Module 9商务英语 初级
- 河北省长途客车文明服务规范
- 浅谈石灰稳定土基层路拌法施工
- 中油碧辟绩效管理的借鉴作用
- 河北省基金从业资格:私募股权投资基金结构试题.doc
- 全新版大学英语第二版综合教程3问题详解Unit1 Unit8
- 消费者行为学案例