《计算机组成原理》实验一 TEC-XP汇编语言程序设计参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 TEC-XP汇编语言程序设计
(1)设计一个小程序,从键盘上接收一个字符并在屏幕上输出显示该字符。
A 2000 ↙
输入如下形式的程序:
2000: IN 81
2001: SHR R0
2002: SHR R0
2003: JRNC 2000
2004: IN 80
2005: OUT 80
2006:RET ↙
2007:↙
(2)设计一个小程序,用次数控制在终端显示器屏幕上输出‘0’到‘9’十个数字符。
提示:假设用R2存储字符个数,R0放第一个字符“0”,输出一个字符则R2减1,完成输出后R0加1 ,以准备下一个字符。
A 2020 ↙
2020 : MVRD R2 , 0A
MVRD R0 , 30
2024 : OUT 80
DEC R2
JRZ , 202E
PUSH R0
2028 : IN 81
2029 : SHR R0
202A : JRNC 2028
POP R0
INC R0
jr 2024
202E : RET
202F:↙
(3)从键盘上连续打入多个属于‘0’到‘9’的数字符并在屏幕上显示,遇到非数字字符结束输入过程。
验证:本程序中是否需要判别串行口输出完成否?为什么?
A 2040 ↙
2000 : MVRD R2 , 30
2002 : MVRD R3 , 39
2004 : IN 81 ;判断键盘上是否按了一个键
2005 : SHR R0
2006 : SHR R0
2007 : JRNC 2004 ;没有输入则循环测试
2008 : IN 80 ;输入字符放入R0的低8位
2009 : MVRD R1 , 00FF
200B : AND R0 , R1 ;清空R0的高八位
200C : CMP R0 , R2 ;输入字符>=‘0’
200D : JRNC 2013 ;否则,转到结束处
200E : CMP R3 , R0 ;输入字符<=‘9’
2010 : JRNC 2013 ;否则,转到结束处
2011 : OUT 80 ;输出字符
2012 : JMPA 2004
2013 : RET
(4)计算1到10的累加和。
A 2060 ↙
2060:MVRD R1,0000 ;存放累加和
MVRD R2, 000A ;最大加数
MVRD R3,0000
2066:INC R3
ADD R1,R3
CMP R3,R2
JRNZ 2066
RET
(5)设计一个有读写内存和子程序调用指令的程序,功能是读出内存中的字符,将其显示到显示器的屏幕上,转换为小写字母后再写回存储器原存储区域。
提示:假设被显示字符‘A’~‘F’,需先用E命令将其送入到内存20F0H开始的存储区域中。程序地址2080H,子程序完成转换为小写字母的功能,程序地址2100H。
第一步:
1.将被显示的6个字符‘A’-‘F’送入到内存20F0H开始的存储区中。
E 20F0↙
依次输入‘A’-‘F’的ASCII码
2. A 2080 ↙
2080:MVRD R3,0006 ;指定读数据的个数
MVRD R2,20F0;读写区域的首地址
2084:LDRR R0,[R2] ;读内存的第一个字符到R0寄存器
CALL 2100 ;调用子程序完成显示、转换等功能
DEC R3
JRZ 208B ;循环结束时
INC R2
JR 2084
208B: RET
3.从2100H开始输入下列程序:
2100:OUT 80 ;输出保存在R0中的字符
MVRD R1,0020
ADD R0,R1 ;将大写字母转换为小写字母
STRR [R2],R0 ;写R0中的字符到内存
2105: IN 81
SHR R0
JRNC 2105
RET;
第二步:
1.G 2080↙显示 ABCDEF
2.D 20F0↙
20F0H-20F5H内存单元的内容为:0061 0062 0063 0064 0065 0066