微机原理实验报告1.docx
- 文档编号:23848080
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:18
- 大小:245.56KB
微机原理实验报告1.docx
《微机原理实验报告1.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告1.docx(18页珍藏版)》请在冰豆网上搜索。
微机原理实验报告1
微机原理实验报告
实验一:
顺序程序的设计
一、实验目的:
1.学习8086/8088指令系统中一些基本指令的用法和程序设计的基本方法。
2.熟悉在PC机上建立、汇编、链接、调试和运行8086、8088汇编语言程序的全过程。
二、实验内容:
设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=34
3.a=70,b=23,c=42,d=41
4.a=63,b=73,c=62,d=50
三、程序内容:
DSEGSEGMENT
NUMDB13H,27H,11H,12H
Y1DB?
DSEGENDS
SSEGSEGMENTPARASTACK
DB20DUP(?
)
SSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG,SS:
SSEG
START:
MOVAX,DSEG
MOVDS,AX
MOVAX,SSEG
MOVSS,AX
MOVAL,NUM:
数据a送AL
ADDAL,NUM+1:
将a+b存储到AL
DAA:
压缩BCD码加法调整
MOVCL,AL:
保存AL内容
MOVAL,NUM+2:
数据c送AL
ADDAL,NUM+3:
将c+d存储到AL
DAA:
压缩BCD码加法调整
SUBCL,AL:
将(a+b)-(c+d)存储到CL
MOVAL,CL:
CL送AL
DAS:
压缩BCD码减法调整
MOVY1,AL:
送出结果
显示压缩BCD码:
MOVBL,AL:
保存AL中的内容
ANDAL,0F0H:
取AL中高四位
MOVCL,4
SHRAL,CL:
BCD码高位移到低位
ADDAL,30H:
(AL)加30H得ASCII码
MOVDL,AL
MOVAH,02H
INT21H:
显示(DL)
MOVAL,BL:
恢复(AL)
ANDAL,0FH:
取(AL)低四位
ADDAL,30H:
(AL)30H得ASCII码
MOVDL,AL
MOVAH,02H
INT21H:
显示(DL)
返回DOS:
MOVAX,4C00H
INT21H
CSEGENDS
ENDSTART
四、实验分析:
源程序经过MASM,,LINK命令后生成EXE格式程序;
运用debug程序的-u命令可见程序反汇编内容:
用g命令设断点可观察每一步程序进行后的程序进程:
断点设在A,执行命令d0,可见a,b,c,d已经存入寄存器中
断点设在12时,可见AL=15=a+b,
断点设在1C时可见AL=c+d=0BH=11
断点设在20处可知结果AL=(a+b)-(c+d)=04
每组数据实验程序运行结束后,
应用–e命令更改a,b,c,d数值继续进行实验,用d0命令查看是否更改成功。
如下图:
同第一组,直接执行g20,可知结果AL=16
其它组同上。
五、实验思考题:
若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)ADD后AL中存储内容显示为24H,而c+d未出现进位,执行(c+d)后响应的AL为77,因此执行(a+b)-(c+d)时需要使用带借位减法指令SBB,即将SUBCL,AL改为:
SBBCL,AL即可,执行结果为47正确。
2.若a=12,b=19,c=25,d=33,则(a+b)-(c+d)结果为负,这时候需要加入判断语句:
即在减法前加入:
JLLESS即当(a+b)小于(c+d)时,减法改为(c+d)-(a+b),然后在显示结果时在数字前加入负号。
修改后程序即在减法进行前加入判断语句JLLESS,再在程序最后加入子程序LESS:
SUBAL,CL,存储结果至Y1
显示部分程序:
在第一次显示DL前加入:
MOVDX,2DH;显示负号
即可,执行结果为-27正确。
实验二:
分支程序的设计
一、实验目的:
1.学习提示信息的显示及键盘输入字符的方法。
2.掌握分支程序的设计方法。
二、实验内容:
在显示信息下,从键盘上输入原码表示的二位十六进制有符号数:
当此数大于0时,屏幕上显示此数为正数;
当此数等于0时,屏幕上显示此数为零;
当此数小于0时,屏幕上显示此数为负数。
三、程序内容:
CRLFMACRO
MOVAH,02H
MOVDL,0DH
INT21H
MOVAH,02H
MOVDL,0AH
INT21H
ENDM
DATASEGMENT
MESS1DB'INPUTDATA:
',0DH,0AH,'$'
MESS2DB'THISDATAIS+',0DH,0AH,'$'
MESS3DB'THISDATAIS-',0DH,0AH,'$'
MESS4DB'THISDATAIS0',0DH,0AH,'$'
DATABUFDB3
ACTLENDB?
STRINGDB3DUP(?
)
DATAENDS
SSEGSEGMENTPARASTACK'STACK'
DB50DUP(0)
SSEGENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
SSEG
START:
MOVAX,DATA
MOVDS,AX
MOVAX,SSEG
MOVSS,AX
MOVDX,OFFSETMESS1
MOVAH,09H
INT21H
MOVAH,0AH
MOVDX,OFFSETDATABUF
INT21H
CRLF
MOVAL,STRING
CMPAL,38H:
比较输入数的ASCII码与38H
JGENEGT:
大于0则跳到NEGT程序段
CMPAL,30H:
比较输入数与00的ASCII码
JZGOON:
为0跳到GOON程序段
MOVDX,OFFSETMESS2:
上述不成立则显示此数为正
MOVAH,09H
INT21H
JMPDONE
DONE:
MOVAH,4CH
INT21H
NEGT:
MOVDX,OFFSETMESS3:
显示此数为负
MOVAH,09H
INT21H
JMPDONE
GOON:
MOVAL,STRING+1
CMPAL,30H
JZZERO:
为0则跳到ZERO程序段
MOVDX,OFFSETMESS2:
显示此数为正
MOVAH,09H
INT21H
JMPDONE
ZERO:
MOVDX,OFFSETMESS4:
显示此数为0
MOVAH,09H
INT21H
JMPDONE
CODEENDS
ENDSTART
四、实验分析:
源程序经过MASM,,LINK命令后生成EXE格式程序;
运用debug程序的-u命令可见程序反汇编内容:
用g命令设断点可观察每一步程序进行后的程序进程:
下面进行调试:
1)输入正数
断点设在11时显示‘INPUTDATA’;
断点设在18时,任意输入一个正数20H(即十进制32);
断点设在27时,由下图知AL=32为输入数字高位2的ASCII码;
显然32小于38,且不等于30,故不跳转,可直接运行出结果,显示结果为正数。
2)输入负数
断点设在11时显示‘INPUTDATA’;
断点设在18时,任意输入一个负数99H(即十进制-25);
断点设在27时,由下图知AL=39为输入数字高位9的ASCII码;
由下图反编译内容可知,AL=39,大于38,程序将跳转到003D
断点设在3D,再由反编译可知,再将断点设在44就可以显示结果为负数。
3)输入0
断点设在11时显示‘INPUTDATA’;
断点设在18时,任意输入一个正数00H(即十进制0);
断点设在27时,由下图知AL=30输入数字高位0的ASCII码;
结合下图反编译内容,显然AL=30小于38,第一次比较不跳转;
而AL等于30,故跳转到0046;故可设断点46。
运行G46后,由反编译内容知,
断点设在54处,可显示结果为0
通过三次调试可得出结论:
程序正确
五、实验思考题:
1、跟踪某条支路,断点应该下在跳转之后的点如3D,46,39等。
标志位可直接由命令框中看出,如下图,NU,UP,PI等。
2、
3、若输入的是非法字符而不是十六进制数,此程序会得到什么结果?
如何改进?
答:
此时根据输入字符的ASCII码,程序会得到其为正数或为负数的结果。
改进:
须加入判断语句,实验分别判断输入字符的每一位是否为0—9及A—F,若不是,则跳出至ER段,显示错误,若是,则跳至R段,继续执行判断正负程序。
改进后部分程序如下:
(JUG段即为判定段,LOW段为判定低位是否为0。
)
数据段定义中添加信息:
MESS5DB‘THISDATAISWEONG!
’,0DH,0AH,‘$’
START段改为:
START:
MOVAX,DATA
MOVDS,AX
MOVAX,SSEG
MOVSS,AX
MOVDX,OFFSETMESS1
MOVAH,09H
INT21H
MOVAH,0AH
MOVDX,OFFSETDATABUF
INT21H
CRLF
MOVAL,STRING:
存储高位ASCII码
MOVBL,[STRING+1]:
存储低位ASCII码
ANDDL,00H:
初始化DL
MOVDL,02H
JUG:
CMPAL,46H:
与F的ASCII码比较
JGER:
超过F则跳至ER段
CMPAL,41H:
与A的ASCII码比较
JGELOW:
大于等于A则跳至LOW段
CMPAL,39H:
与9的ASCII码比较
JGER
CMPAL,30H:
与0的ASCII码比较
JLER
JMPLOW
LOW:
SUBDL,01H
CMPDL,00H
JZR:
低位为0则跳至R段
MOVAL,BL:
低位不为0则将BL移至AL
JMPJUG:
跳至JUG判断低位是否满足
ER:
MOVAH,09H
MOVDX,OFFSETMESS5:
显示输入错误
INT21H
JMPDONE
R:
CMPAL,38H
JGENEGT
CMPAL,30H
JZGOON
MOVDX,OFFSETMESS2
MOVAH,09H
INT21H
JMPDONE
DONE:
……
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 报告