资源描述:
《汇编第五次实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验五直线程序设计一、 实验目的1、学习8086汇编语言程序的基本结构和程序设计的基本方法。2、熟悉在PC机上建立、汇编、链接、调试和运行8086汇编语言程序的全过程。二、 实验预习要求1、 认真阅读预备知识中汇编语言的上机步骤的说明,熟悉汇编程序的建立、汇编、连接、执行、调试的全过程。2、 复习BCD码运算的调整指令。3、根据本实验的编程提示和程序框架预先编写汇编语言源程序。4、有兴趣的同学请自行编写出后面的实验习题。三、 直线程序简介直线程序是控制流仅有一个走向的程序,它主要用于解决一些无
2、需进行判断分支,也无需循环简单的简单问题。四、 实验内容设a、b、c、d四个数分别以压缩的BCD码形式存放在内存NUM开始的四个单元,计算(a+b)-(c+d),然后把结果显示在屏幕上。代码如下:DSEGSEGMENT;定义数据段NUMDB09H,16H,04H,17H;定义a,b,c,dDSEGENDS;数据段定义结束CSEGSEGMENTASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEGMOVDS,AXMOVAL,[NUM]ADDAL,[NUM+1]DAAMOVCL,ALMO
3、VAL,[NUM+2]ADDAL,[NUM+3]MOVBL,ALDAAXCHGAL,CLSUBAL,CLDASMOVBL,ALANDAL,0F0HMOVCL,4SHRAL,CLADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVAL,BLANDAL,BLANDAL,0FHADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVAH,4CHINT21HCSEGENDSENDSTART改变a,b,c,d内容,然后重新汇编、连接并运行程序,检查其结果与手工计算是否相符。下面是几组实
4、验用的数据:1、a=09,b=16,c=04,d=171、a=38,b=41,c=29,d=342、a=70,b=23,c=42,d=414、a=63,b=73,c=62,d=50一、 调试提示源程序编制完后,先静态检查,无误后,对源程序进行汇编连接,生成可执行文件。先将程序在DOS下运行,如正确,则改变a,b,c,d的值反复验证,如不正确,则将程序调入TD中进行调试。二、 实验习题若改变a,b,c,d的值如下:1、a=90,b=34,c=33,d=442、a=12,b=19,c=25,d=33观察结
5、果,改进程序使结果正确。答:当a+b小于c+d的时候,程序运行结果错误。两小题的运行时截图如下:·有图中结果可知,第一小题的结果按照原来代码运行是正确的,第二小题是错误的。改正后的代码如下:DSEGSEGMENT;定义数据段NUMDB12H,19H,25H,33HDSEGENDS;数据段定义结束CSEGSEGMENT;定义代码段ASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEGMOVDS,AXMOVAL,[NUM]ADDAL,[NUM+1];AX=A+BDAA;将二进制加法运算结果调
6、整为BCDMOVCL,ALMOVAL,[NUM+2]ADDAL,[NUM+3];AX=C+DDAACMPAL,CL;比较AL和CLJNCNEG1;CF=0跳转,(C+D)>(A+B)跳转至FU程序段XCHGAL,CL;AX=A+B,CX=C+DJMPPOSNEG1:SUBAL,CL;AX=(C+D)-(A+B)DAS;将二进制减法运算结果调整为BCD码MOVBL,ALMOVDL,2DH;输出负号MOVAH,2;选择方式2INT21H;返回DOSMOVAL,BLANDAL,0F0H;取高四位MOVCL,4SH
7、RAL,CL;高四位右移到低四位ADDAL,30H;将BCD码转换为ASCII码MOVDL,AL;输出高位MOVAH,2INT21HMOVAL,BLANDAL,0FH;取第四位ADDAL,30H;将BCD码转换为ASCII码MOVDL,AL;输出低位MOVAH,2INT21HMOVAH,01HINT21HMOVAH,4CHINT21H;返回DOSPOS:SUBAL,CLDASMOVBL,ALMOVDL,2DHANDAL,0F0HMOVCL,4SHRAL,CLADDAL,30HMOVDL,ALMOVAH,2I
8、NT21HMOVAL,BLANDAL,0FHADDAL,30HMOVDL,ALMOVAH,2INT21HMOVAH,01HINT21HMOVAH,4CHINT21H;返回DOSCSEGENDS;代码结束ENDSTART;程序结束运行结果如下图所示:一、 实验报告要求1. 整理出完整的实验程序和使用不同实验数据时的运行结果,对结果进行解释。2. (选做)完成实验习题。3. 简要说明