《汇编语言程序设计》.doc

《汇编语言程序设计》.doc

ID:57610112

大小:55.00 KB

页数:7页

时间:2020-08-29

上传者:笑似︶ㄣ無奈
《汇编语言程序设计》.doc_第1页
《汇编语言程序设计》.doc_第2页
《汇编语言程序设计》.doc_第3页
《汇编语言程序设计》.doc_第4页
《汇编语言程序设计》.doc_第5页
资源描述:

《《汇编语言程序设计》.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

计算机组成原理实验手册浙江广播电视大学计算机科学系《汇编语言程序设计》实验一实验目的:1.学习和了解TEC—3机监控命令的用法;2.学习和了解TEC—3机的指令系统:3.学习简单的解TEC—3机的汇编程序设计.实验内容:用教学机上已实现的指令编写汇编程序,运行并观察运行结果.使用监控程序的R命令显示/修改寄存器内容:使用D命令显示存储器内容,使用E修改存储器内容:使用A命令写-小段汇编程序,U命令反汇编刚输入的程序;用G命令连续运行该程序,用T,P命令单步运行并观察程序单步执行情况;实验要求在使用该实验台之前,应先熟悉实验台的各个组成部分及其使用方法。实验步骤1.确保两个红色微型开关左侧的短路子处于断开状态(短接子被拔下来);2.在关闭教学机电源情况下,将大板上的COM2口(左侧的一个)与PC机的串口相连;3.接电源,在pc上运行PCEC.EXE文件,设置所用pc机的串口为"1"或"2"。其它的设置一般不用改动,直接回车即可:4.置控制开关为000(连续、正常运行、助合逻辑),开关拨向上方表示“1”,拨向下方表示"0","X"表示任意.其它实验相同;5.按下重新设定了的同时按下步骤按钮,松开后再按一下步骤按钮,主机上显示:TEC—3MonitorVer3.1--byweiXiaoliangTsinghuaComputor中心,2001,C6.—>(教学计算机已处于正常运行状态,等待输入监控命令)6.用R命令查看寄存器内容或修改寄存器的内容l>在命令行提示符状态下输入:R↙:显示寄存器的内容执行后显示12个寄存器的内容及状态标志。例如,执行结果为:R0=2FFR1=FFR2=FFR3=FFR4=00R5=20R6=00R7=26R8=FFR9=FFR10=FFR1=FF州=00注:这些显示结果是初始化后的寄存器的内容,运行程序或执行命令后寄存器的内容会发生变化.2>在命令行提示行状态下输入:RR036↙;修改寄存器R0的内容,修改的寄存器与所赋值之间不能有空格,否则系统会给出错误提示再用R命令显示寄存器内容:则R0的内容变为367.用D命令显示存储器内容在命令行提示符状态下输入:7 计算机组成原理实验手册浙江广播电视大学计算机科学系D2000↙:会显示从2000地址开始的128个存储字的内容.连续的D命令,保证显示内容前后正确的连续关系,即每次执行D命令,会将默认的地址值加上128.8.用E命令修改存储器内容在命令行提示符状态下输入:E2000↙:用户可以从地址2000开始逐字节修改每个内存单元的内容按如下格式输入:2000:662001:772002:88用D命令显示着几个单元的内容D2000↙:可以看到这三个地址单元的内容变为66、77、889.用A命令键入教学计算机的一段汇编源程序,主要是向累加器送入数据和执行运算,执行程序并观察运行结果注意:在键入命令时,A,U,G,D,E,T,P命令与其后所接的地址之间要加一个(且只能一个)空格;在输入指令时也要注意这点,若输入有误,在没有按回车之前,只需要将光标移到出错的位置,重新输入正确内容;若已回车,则键入命令出错地址并回车,系统给出出错地址,在该地址重新输入。1)在命令行提示符状态下输入:A2000↙;表示该程序从16进制的2000(内存随机存取储存器区的起始地址)地址开始屏幕将显示:2000:之后输入如下形式的程序:2000:MVDR0AA;MVD与R0之间只有一个空格,其他指令相同2002:MVDR1,552004:ADDR0,R12005:ANDR0,R12006:RET;程序的最后一个语句,必须为RET指令2007:(直接敲回车键,结束A命令的输入程序的操作过程)2)用U命令反汇编刚输入的程序在命令行提示符状态下输入:U2000↙:在相应的地址会得到输入的指令及其操作码注:U命令一次反汇编十五条指令,接下来键入不带参数的U命令时,将接着从上一次反汇编的最后一条语句之后继续反汇编。3)用G命令运行前面刚键入源程序。G2000↙:程序运行结束后,可以看到程序的运行结果,屏幕显示各寄存器的值,其中R0和R1的值均为55,说明程序运行正确.4)用P或T命令,让这段程序单步执行,观察指令执行结果在命令行提示符状态下输入:T2000↙:寄存器R0技赋值为AAT↙:寄存器Rl被赋值为55T↙:做加法运算,和放在R0,R0的值变为FF7 计算机组成原理实验手册浙江广播电视大学计算机科学系T↙:做与运算,结果放在R0,R0的值变为55用P命令执行过程同上.注:T命令总是执行单条指令,但执行P命令时,则把每一个CAL上语句连同被调用的子程序一次执行完成。T,P命令每次执行后均显示所有通用寄存器及状态寄存器的内容,并反汇编出下一条将要执行的指令.举例编写汇编程序,用"A"命令输入,运行并观察结果例子1:设计一个小程序。在屏幕上输出显示字符‘6’.1)在命令行提示符状态下输入:A2000↙;表示该程序从16进制的2000(内存RAM区的起始地址)地址开始屏幕将显示:2000:之后输入如下形式的程序:2000:MVDR0,36↙;把字符‘6'的美国信息交换标准代码送入R02002:OUT00↙:输出字符‘6’到屏幕上,00为串行口的端口地址2003:RET↙;每个用户程序都必须用RET指令结束2004:↙;(按回车键即结束输入过程)2)用"G"命令运行程序在命令行提示符状态下输入:G2000↙执行上面输入的程序显示结果为:6R0=36R1=.......R11=:..STATE=:...2000:MVDRo,36该例建立了一个从主存2000h地址开始的小程序。在这种方式下,所有的数字都约定使用16进制数,故数字后不用跟字符h。每个用户程序的最后一个语句一定为RET汇编语句。因为监控程序是选用类似子程序调用方式使实验考的程序投入运行的,用户程序只有用RET语句结束,才能保证程序运行结束,才能正确返回到监控程序的断点,保证监控程序能继续控制教学机的运行过程。下面接着再给出几个小程序的例子.例子2:设计一个小程序,用次数控制在终端屏幕上输出,‘0’,到‘9’,十个数字符.1>在命令行提示符状态下输入:A2020↙屏幕将显示:2020,从地址2020开始输入下列程序:2020:MVDR2,0A;送入输出字符个数(十进制的数值10)2022:MVDR0,30;送'0'字符的ASCII码到R02024:0UT00;输出保存在R0中的字符2025:DECR2;输出字符个数减12026:JZ2031;判10个字符输出完否,已完,则转移到程序结束处2028:PUSHRo;未完,保存R0的值到堆栈中2029:IN01;查询接口状态,判字符串行输出完成否,7 计算机组成原理实验手册浙江广播电视大学计算机科学系202:SHRR0:2028:JNC,2029;未完成则循环等持202D:POPR0:已完成,准备继续输出下一字符,从堆栈恢复R0的值202E:INCRO;得到下一个要输出的字符202FJR2024;转回去继续输出字符2031:RET该程序的执行码放在2020起始的连续内存区中。若送入源码的过程中有错,系统会进行提示,等待重新打入正确汇编语句。在输入过程中,在应打入语句的位置直接打回车则结束输入过程.2>用"G"命令运行程序在命令行提示符状态下输入:G2020↙执行上面输入的程序执行结果为=0123456789R0:39R1=...R2=00R3=…2020:MVDR2,0A作业:当把IN01,SHRR0,JNC2029三个语句换成4个MOVRo,R0语句,该程序执行过程会出现什么现象?试分析并实际执行一次以观察运行结果。提示:该程序改变这三条语句后,若用T命令单条执行,会依次显示0,9十个数字。若用G命令运行程序,由于程序运行速度快,端口串行输出的速度很慢,这样新会丢失某些输出的字行;如,在命令行提示符状态下输入G2020命令后,屏幕可能的显示为059或069,而不是023456789全部的10个字符。作业:若要求在终端输出,‘A’,到‘Z’,共26个英文字.应如修改例1中给出的程序?请验证之。参考答案:1)在命令行提示持状态下输入:A2100↙屏幕将显示:2100:从地址2100开始输入下列程序:2100:MVDR2,1A;循环次数为26MVDR0,4l;字符"A"的值2104:OUT00:输出保存在R0低位字节的字符DECR2;输出字符个数减1JZ2111:判26个字符输出完否,已完,则转移到程序结束处PUSHR0;未完,保存R0的值到堆栈中2109:IN01;查询接口状态,判字符串行输出完成否SHRR0JNC2109;未完成,则循环等待POPR0;己完成,准备赖出下一字6。’从埃钱恢复则的值INCR0;得到下一个要输出的字符JNC2104:转去输出出字符2111:RET7 计算机组成原理实验手册浙江广播电视大学计算机科学系用G命令执行该程序,屏幂上显示“A”~“Z”26个英文字母.例子3:从键盘上连续打入多个属于’0’到’9’的数字符并在屏幕上显示,遇非数字符结束输入过程.1)在命令行提示符状态下输入:A2040↙屏幕将显示:2040:从地址2040开始输入下列程序:(2040)MVDR2,30;用于判数字符的下界值MVDR3,39;用于判数字19的上界值(2044)IN01;判键盘上是否按了一个键,SHRR0;即串行口是否有了输入的字符SHRR0JNC2044;没有的输入则循环测试IN00;输入字符到R0CMPR0,R2:判输入字符>=字符’0’否JNC2056;为否,则转到程序结束处CMPR3,R0;判输入字符<=字符’9’否JNC2056;为否,则转到程序结束处0UT00;输出刚输入的数字符MVDRB,20;转去程序前边2044处等待输入下一个字符MVDRA,44;这3个语句完全可以用JR2044替代JMP;此处要表明必须使用专用寄存器的JMP语句用法[2056]RET2)在命令行提示符状态下输入:G2040/光标闪烁等待键盘输入,若输入的是属于‘0’—‘9’中的一个数字符,则在屏幕上回显;若输入非数字符,屏幕不会显示该字符,并结束运行过程.其后显示的,是程序结束时的现场内容,即显示11个寄存器的内容和状态标志后。接着回显第一条指令.出现命令提示符,等待输入新的命令.作业:本程序中为什么不必判别串行口输出完成否?设计打入’A’一’Z’和’0’-‘9’,遇其它字符结束输入过程。例子4:计算1到10的累加和.1)在命令行提示符状态下输入:A2060↙屏幕将显示:2060:从地址2060开始输入下列程序:(2060)MYDR1,00;置累加和的初值为0MVDR2,0A;最大的加数.MVDR3,007 计算机组成原理实验手册浙江广播电视大学计算机科学系(2066)INCR3;得到下一个参加累加的数ADDRl,R3;累加计算CMPR3,R2;判是否累加完JNC2066:未完,开始下一轮累加RET2)在命令行提示符状态下输入:G2060↙运行过后,可以用R命令累加器的内容.Rl的内容为累加和。结果为:R1=37R2=OAR3=0A例子5:设计一个有读写内存和子程序调用指令的程序,功能是读出内存中的字符,将其显示到显示器的屏幕上,转换为小写字母后再写回存储器原存储单元。1)将被显示的6个字符‘A’~‘F’送入到内存20F0开始的存储区域中在命令行提示符状态下输入:E20FO↙屏幕将显示:20F0:按下列格式输入:20Fo:4120F1:4220F2:4320F3:4420F4:4520F5:452)在命令行提示符状态下输入A2080↙屏幕将显示:2080:从地址2080开始输入下列程序:(2080)MVDR3,06:指定技读数据的个数MVDR9,20:指定被读、写数据内存区首地址MVDR8,F0(2086)LODR0:使内存中的一个字符到R0寄存器MVDRB,21;指定于程序地址为2100MVDRA,00CALL;调用于程序,完成显示、转换并写回的功能DECR3;检查输出的字符个数JZ2092;完成输出则结束程序的执行过程INCR8;未完成,修改内存地址JR2086:转移到程序的2086处,循环执行规定的处理(2092)RETA2100输入用到的子程序到内存2100开始的存储区OUT00:输出保存在R0寄存器中的字符MVDR1,20:转换保存在R0中的大写字母为小写字母ADDR0,B1STOR0;写R0中的字符到内存,地址同LOD所用的地址7 计算机组成原理实验手册浙江广播电视大学计算机科学系(2105)IN01;测试串行接口是否完成输出过程SHRR0JNC2105;末完成输出过程则循环试RET:结束子程序执行过程,返回主程序3)在命令行提示符状态下输入:G2080↙屏幕显示运行结果为:ABCDEF11个寄存器内容及状态标志2080:MVDR3,064)在命令行提示符状态下输入:D20F0↙20F0—20F5内存单元的内容为:6l6263646566上述例子都是用监控程序的A命令完成输入源汇编程序的。在涉及到汇编语句标号的地众不能用符号表示,只能在指令中使用绝对地址。使用内存中的数据,也由程序员给出数据在内存中的绝对地址.显而易见,对这样的极短小程序矛盾并不突出,但很容易想到,对很大的程序,一定会有较大的困难.在用A命令输入汇编源语句的过程中,有一定用机经验的人,常常抱怨A命令中末提供适当的编辑功能,这并不是设计者的疏漏,因为我们并不准备在这种操作方式下支持设计较长的程序.这种工作应转到提供了交又汇编程序的PC机上去完成.相反的情况是,输入上述一些小程序,用监控程序的A命令完成,往往比用交又汇编完成更简捷.7

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭