实验 基础汇编语言程序设计.docx

上传人:rrsccc 文档编号:8923896 上传时间:2021-01-25 格式:DOCX 页数:9 大小:146.57KB
返回 下载 相关 举报
实验 基础汇编语言程序设计.docx_第1页
第1页 / 共9页
实验 基础汇编语言程序设计.docx_第2页
第2页 / 共9页
实验 基础汇编语言程序设计.docx_第3页
第3页 / 共9页
实验 基础汇编语言程序设计.docx_第4页
第4页 / 共9页
实验 基础汇编语言程序设计.docx_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《实验 基础汇编语言程序设计.docx》由会员分享,可在线阅读,更多相关《实验 基础汇编语言程序设计.docx(9页珍藏版)》请在三一文库上搜索。

1、实验二 基础汇编语言程序设计实验目的:1学习和了解TEC-2000 十六位机监控命令的用法;2学习和了解TEC-2000 十六位机的指令系统;3学习简单的TEC-2000 十六位机汇编程序设计;实验内容:1使用监控程序的R 命令显示/修改寄存器内容、D 命令显示存储器内容、E 命令修改存储器内容;2使用A 命令写一小段汇编程序,U 命令反汇编刚输入的程序,用G 命令连续运行该程序,用T 命令单步运行并观察程序单步执行情况;实验要求在使用该教学机之前,应先熟悉其的各个组成部分,及使用方法。实验步骤1关闭电源,将大板上的COM1 口与PC 机的串口相连;2接通电源,在PC 机上运行PCEC.EXE

2、 文件,设置所用PC 机的串口为“1”, 其它的设置一般不用改动,直接回车即可;3置控制开关为00101(连续、内存读指令、组合逻辑、16 位、联机),开关拨向上方表示“1”,拨向下方表示“0”;4按一下“RESET ”按键,再按一下“START ”按键,主机上显示: TEC-2000 CRT MONITOR Version 2.0 April 2001 Computer Architectur Lab., Tsinghua University Programmed by He Jia 5用R 命令查看寄存器内容或修改寄存器的内容1)在命令行提示符状态下输入:R ;显示寄存器的内容注:寄存器

3、的内容在运行程序或执行命令后会发生变化。2)在命令行提示符状态下输入:R R0 ;修改寄存器R0 的内容,被修改的寄存器与所赋值之间可以无空格,也可有一个或数个空格主机显示: 寄存器原值:_ 在该提示符下输入新的值0036 再用R 命令显示寄存器内容,则R0 的内容变为0036 。6用D 命令显示存储器内容在命令行提示符状态下输入:D 2000 会显示从2000H 地址开始的连续128 个字的内容;连续使用不带参数的D 命令,起始地址会自动加128 (即80H )。 7用E 命令修改存储器内容在命令行提示符状态下输入:E 2000 屏幕显示: 2000 地址单元的原有内容:光标闪烁等待输入输入

4、 0000 依次改变地址单元20012005 的内容为:1111 2222 3333 4444 5555 注意:用E 命令连续修改内存单元的值时,每修改完一个,按一下空格键,系统会自动给出下一个内存单元的值,等待修改;按回车键则退出E 命令。用D 命令显示这几个单元的内容D 2000 可以看到这六个地址单元的内容变为0000 1111 2222 3333 4444 5555 。8.用A 命令键入一段汇编源程序,主要是向累加器送入数据和进行运算,执行程序并观察运行结果。1)在命令行提示符状态下输入:A 2000 ;表示该程序从2000H (内存RAM 区的起始地址)地址开始屏幕将显示:2000:

5、输入如下形式的程序:2000: MVRD R0,AAAA ;MVRD 与R0 之间有且只有一个空格,其他指令相同2002: MVRD R1,5555 2004: ADD R0,R1 2005: AND R0,R1 2006: RET ;程序的最后一个语句,必须为RET 指令2007: (直接敲回车键,结束A 命令输入程序的操作过程)若输入有误,系统会给出提示并显示出错地址,用户只需在该地址重新输入正确的指令即可。2)用U 命令反汇编刚输入的程序在命令行提示符状态下输入:U 2000 在相应的地址会得到输入的指令及其操作码注:连续使用不带参数的U 命令时,将接着从上一次反汇编的最后一条语句之后继

6、续反汇编。3)用G 命令运行前面刚键入源程序G 2000程序运行结束后,可以看到程序的运行结果,屏幕显示各寄存器的值,其中R0 和R1 的值均为5555H ,说明程序运行正确。4)用P 或T 命令,单步执行这段程序,观察指令执行结果在命令行提示符状态下输入:T 2000 寄存器R0 被赋值为AAAAH T 寄存器R1 被赋值为5555H T 做加法运算,和放在R0,R0 的值变为FFFFH T 做与运算,结果放在R0,R0 的值变为5555H 用P 命令执行过程同上。注:T 总是执行单条指令,但执行P 命令时,则把每一个CALL 语句连同被调用的子程序一次执行完成。T、P 命令每次执行后均显示

7、所有通用寄存器及状态寄存器的内容,并反汇编出下一条将要执行的指令。7举例编写汇编程序, 用“A”命令输入,运行并观察结果1)例子1:设计一个小程序, 从键盘上接收一个字符并在屏幕上输出显示该字符。 在命令行提示符状态下输入:A 2000 ; 屏幕将显示:2000: 输入如下形式的程序:2000: IN 81 ;判键盘上是否按了一个键2001:SHR R0 ;即串行口是否有了输入的字符2002:SHR R0 2003:JRNC 2000 ;未输入完则循环测试2004:IN 80 ;接收该字符2005: OUT 80 ;在屏幕上输出显示字符6 2006: RET ;每个用户程序都必须用RET 指令

8、结束2007: ;(按回车键即结束输入过程)注:在十六位机中,基本I/O 接口的地址是确定的,数据口的的值为80,状态口的地址为81。 用“G”命令运行程序在命令行提示符状态下输入:G 2000执行上面输入的程序光标闪烁等待输入,用户从键盘键入字符后,屏幕会显示该字符。该例建立了一个从主存2000H 地址开始的小程序。在这种方式下, 所有的数字都约定使用16 进制数,故数字后不用跟字符H。每个用户程序的最后一个语句一定为RET 汇编语句。因为监控程序是选用类似子程序调用方式使实验者的程序投入运行的, 用户程序只有用RET 语句结束, 才能保证程序运行结束时能正确返回到监控程序的断点, 保证监控

9、程序能继续控制教学机的运行过程。2)例2:设计一个小程序, 用次数控制在终端屏幕上输出0 到9 十个数字符。 在命令行提示符状态下输入:A 2020 屏幕将显示:2020: 从地址2020H 开始输入下列程序: 2020:MVRD R2,00OA ;送入输出字符个数2022:MVRD R0,0030 ;“0”字符的ASCII 码送寄存器R0 2024:OUT 80 ;输出保存在R0 低位字节的字符2025:DEC R2 ;输出字符个数减1 2026:JRZ 202E ;判10 个字符输出完否,已完,则转到程序结束处2027:PUSH R0 ;未完,保存R0 的值到堆栈中2028:IN 81 ;

10、查询接口状态,判字符串行输出完成否, 2029:SHR R0 ; 202A:JRNC 2028 ;未完成, 则循环等待202B:POP R0 ;已完成, 准备输出下一字符并从堆栈恢复R0 的值202C:INC R0 ;得到下一个要输出的字符202D:JR 2024 ;转去输出字符202E:RET 202F: 该程序的执行码放在2020H 起始的连续内存区中。若送入源码的过程中有错, 系统会进行提示, 等待重新输入正确汇编语句。在输入过程中, 在应输入语句的位置直接打回车则结束输入过程。 用“G”命令运行程序在命令行提示符状态下输入:G 2020 执行结果为:0123456789 思考题: 类似

11、的, 若要求在终端屏幕上输出A 到Z 共26 个英文字母,应如何修改例1 中给出的程序? 请验证之。A 20202020:MVRD R2,001A ;送入输出字符个数262022:MVRD R0,0041 ;“A”字符的ASCII 码送寄存器R0 2024:OUT 80 ;输出保存在R0 低位字节的字符2025:DEC R2 ;输出字符个数减1 2026:JRZ 202E ;判26 个字符输出完否,已完,则转到程序结束处2027:PUSH R0 ;未完,保存R0 的值到堆栈中2028:IN 81 ;查询接口状态,判字符串行输出完成否, 2029:SHR R0 ; 202A:JRNC 2028

12、;未完成, 则循环等待202B:POP R0 ;已完成, 准备输出下一字符并从堆栈恢复R0 的值202C:INC R0 ;得到下一个要输出的字符202D:JR 2024 ;转去输出字符202E:RET 202F: 例子3: 从键盘上连续打入多个属于0到9的数字符并在屏幕上显示, 遇非数字符结束输入过程。 在命令行提示符状态下输入:A 2040屏幕将显示:2040:从地址2040H 开始输入下列程序: (2040)MVRD R2, 0030 ; 用于判数字符的下界值MVRD R3, 0039 ;用于判数字符的上界值(2044) IN 81 ; 判键盘上是否按了一个键, SHR R0 ; 即串行口

13、是否有了输入的字符SHR R0JRNC 2044 ; 没有输入则循环测试IN 80 ; 输入字符到R0 MVRD R1,00FFAND R0,R1 ;清零R0 的高位字节内容CMP R0, R2 ; 判输入字符字符0 否JRNC 2053 ; 为否, 则转到程序结束处CMP R3, R0 ; 判输入字符字符9 否JRNC 2053 ; 为否, 则转到程序结束处OUT 80 ; 输出刚输入的数字符JMPA 2044 ; 转去程序前边2044 处等待输入下一个字符 (2053) RET 在命令行提示符状态下输入:G 2040 光标闪烁等待键盘输入,若输入0-9 十个数字符,则在屏幕上回显;若输入非

14、数字符,则屏幕不再显示该字符,出现命令提示符,等待新命令。思考题, 本程序中为什么不必判别串行口输出完成否? 设计打入AZ和09 的程序, 遇其它字符结束输入过程。A 2040(2040)MVRD R2, 0041 ; 用于判字母符的下界值MVRD R3, 005A ;用于判字母符的上界值MVRD R4,0030;用于判数字符的下界值MVRD R5,0039;用于判数字符的下界值MVRD R6, 0061 ; 用于判字母符的下界值MVRD R7, 007A ;用于判字母符的上界值(204C) IN 81 ; 判键盘上是否按了一个键, SHR R0 ; 即串行口是否有了输入的字符SHR R0JR

15、NC 204C ; 没有输入则循环测试IN 80 ; 输入字符到R0 MVRD R1,00FFAND R0,R1 ;清零R0 的高位字节内容(2054)CMP R0, R2 ; 判输入字符字符A 否JRNC 205A ; 为否, 则转到程序结束处CMP R3, R0 ; 判输入字符Z字符 否JRNC 205A ; 为否, 则转到程序结束处JMPA 2064(205A)CMP R0, R6 ; 判输入字符字符A 否JRNC 2060 ; 为否, 则转到程序结束处CMP R7, R0 ; 判输入字符Z字符 否JRNC 2060 ; 为否, 则转到程序结束处JMPA 2064(2060)CMP R0

16、, R4 ; 判输入字符字符0 否JRNC 2067 ; 为否, 则转到程序结束处CMP R5, R0 ; 判输入字符字符9 否JRNC 2067 ; 为否, 则转到程序结束处(2064)OUT 80 ; 输出刚输入的数字符JMPA 204C ; 转去程序前边204C 处等待输入下一个字符(2067) RET8设计一个小程序, 计算1 到100 的累加和。A 2060(2060)MVRD R1,0000;累加和R1初值为0MVRD R2,0064;最大值为100MVRD R3,0000;累加第一个数R3(2066)INC R3;R3自增ADD R1,R3CMP R3,R2;判断R3=R2JRNZ 2066;否,跳至2066RET

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1