西安交大微机原理第一次实验报告_第1页
西安交大微机原理第一次实验报告_第2页
西安交大微机原理第一次实验报告_第3页
西安交大微机原理第一次实验报告_第4页
西安交大微机原理第一次实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理第一次实验报告一实验目的(1)学习8086/8088指令系统中一些基本指令的用法和程序设计的基本方法。(2)熟悉PC机上建立、汇编、连接、调试和运行8086、8088汇编语言程序的全过程。(3)学习提示信息的显示及键盘输入字符的方法。(4)掌握分支程序的设计方法。二实验内容 (1) 设a,b,c,d四个数分别以单字节压缩BCD码形式存放在内存NUM开始的四个单元,计算(a+b)-(c+d)并将结果放在Y1单元中,将结果在屏幕上显示出来。在debug中不断改变a,b,c,d内容并查看结果。1. a=09, b=06, c=04, d=07 2. a=38, b=41, c=29, d=3

2、4 3. a=70, b=23, c=42, d=414. a=63, b=73, c=62, d=50 (2) 在提示信息下,从键盘输入原码表示的二位十六进制有符号数,当此数大于0时,屏幕上显示此数为正数;当此数小于0时,屏幕上显示此数为负数;当此数为0时,屏幕上显示此数为零。三实验调试过程 3.1 题目一调试过程C:=38H?,跳至FUSHU处执行 CMP AL,30H ;比较高位和30H的大小 JE ZERO ;若高位=30H?,跳至ZERO处执行ZHENGSHU: MOV DX,OFFSET MESS2 ;显示输出为正数 MOV AH,09H INT 21H JMP OVER FUSH

3、U: MOV DX,OFFSET MESS3 ;显示输出为负数 MOV AH,09H INT 21H JMP OVERZERO: MOV AL,STRING+1 ;显示输出为0 CMP AL,30H JNE ZHENGSHU MOV DX,OFFSET MESS4 MOV AH,09H INT 21H JMP OVER OVER: HLT CODE ENDS ;代码段结束 END START ;程序结束五实验结果5.1 题目一实验结果1 a=09, b=06, c=04, d=07时,计算结果为04 2. a=38, b=41, c=29, d=34时,计算结果为16 3. a=70, b=2

4、3, c=42, d=41时,计算结果为104. a=63, b=73, c=62, d=50时,计算结果为245.2 题目二实验结果 键盘输入c9,输出“THIS DATA IS-“ 键盘输入17,输出“THIS DATA IS +” 键盘输入00,输出”THIS DATA IS ZERO六必要的分析6.1 题目一分析1.压缩BCD码需要用到压缩BCD码的调整指令2.程序末尾显示要利用DOS功能调用3显示单个字符,要先将其转化为ASCII 码,再利用DOS功能调用的02H功能。6.2 题目二分析1实验中JZ,JGE,JNE等指令的使用是体现分支程序多分支特点的重要一环。 2.接收键入的字符,

5、要用DOS功能调用的0AH号功能。 3.此外,本程序中的宏指令,采用了DOS功能调用的02H号功能,显示一个字符并将回车符和换行符在显示屏上显示出来 4.接收在缓冲区的字符是用ASCII码表示的,对于原码表示的有符号数来说:大于0,高位字符第7位为0,即高位字符的ASCII码小于38H;小于0,高位字符第7位为1,即高位字符的ASCII码大于等于38H;等于0,必须两个字符都为30H。 七思考题 7.1 实验一思考题1用哪些DEBUG的命令可以查看、改变a、b、c、d的值? 答:-e命令用于查看并修改,-d命令用于查看2调试程序时,你将断点设置在什么位置?简要地予以说明。 答:我将断点设置在数

6、值有变化的位置,这样可以看到程序执行后寄存器里的值是否正确,如果正确说明无问题,便继续执行。否则就停下检查出现的问题。 3.若a=90,b=34,c=33,d=44或a=12,b=19,c=25,d=33设置合适的断点,观察结果,说明错误的原因,并改进程序使结果正确。 答:(1)当a=90,b=34,c=33,d=44时,a+b=124,执行(a+b)DAA调整后AL中存储内容显示为24H,而c+d未出现进位,执行(c+d)后响应的AL为77,因此执行(a+b)-(c+d)时需要使用带借位减法指,即将SUB CL,AL改为:SBB CL,AL即可,执行结果为47正确。 (2)当a=12,b=1

7、9,c=25,d=33时,(a+b)-(c+d)结果为负,这时候需要加入判断语句,比较CL,AL的大小,若为负则对调减数和被减数的位置,最后在显示前加入MOV DX,2DH ;INT 21H;显示负号即可。执行结果为-27正确。修改部分如下: MOV CL,AL MOV AL,NUM+2 ADD AL,NUM+3 DAA CMP CL,AL JB FU SUB CL,AL MOV AL,CL DAS JMP OVER FU: SUB AL,CL DAS MOV BL,AL MOV AH,02H MOV DL,- INT 21H MOV AL,BL JMP OVER OVER: MOV NUM+

8、4,AL AND AL,0F0H 7.2 实验二思考题1.在DEBUG跟踪某条分支的时候,断点应该下在什么位置?如何查看标志位的变化情况? 答:断点应该下在标志位或数据寄存器值有改变的语句之后,把断点设置到CMP语句的后一句之前,观察可以其标志位改变,标志位的内容在IP的值后面字符值显示。2.从键盘输入的数字在键盘缓冲区是怎样分布的?用图简单的示意,用哪条相关的DEBUG命令查看?答:键盘键入的数字从缓冲区的第三个字节开始放起。若键入两位字符则如下图所示,其中Char为数字分布处。DEBUG命令中-D,-E均能够查看。0302CharCharOD调试时输入数据为48,显示如下: 3.若输入的是非法字符而不是十六进制数,此程序会得到什么结果?如何改进?答:结果是输入的非法字符的高位,ASCII码大于38H,则输出为负;若小于38H则输出为正。改进可以考虑增加判断语句,确保输入的是十六进制数。八实验中遇到的困难及解决方法 实验中遇到的困难主要是在编写第一个程序时,计算结果高位始终正确,而低位错误毫无规律。起初,在a=13H,b=27H,c=11H,d=12H的测试环境下,预计结果是17H,而实际得出的结果为11H,恰好差了06H,当时一直认为是BCD码调整部分出错。后来debug一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论