汇编第五次实验报告.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编第五次实验报告.doc

实验五 直线程序设计 ??? 实验目的 1、学习8086汇编语言程序的基本结构和程序设计的基本方法。 2、熟悉在PC机上建立、汇编、链接、调试和运行8086汇编语言程序的全过程。 ??? 实验预习要求 ? 认真阅读预备知识中汇编语言的上机步骤的说明,熟悉汇编程序的建立、汇编、连接、执行、调试的全过程。 ? 复习BCD码运算的调整指令。 3、根据本实验的编程提示和程序框架预先编写汇编语言源程序。 4、有兴趣的同学请自行编写出后面的实验习题。 ??? 直线程序简介 直线程序是控制流仅有一个走向的程序,它主要用于解决一些无需进行判断分支,也无需循环简单的简单问题。 ??? 实验内容 设a、b、c、d四个数分别以压缩的BCD码形式存放在内存NUM开始的四个单元,计算(a+b)-(c+d),然后把结果显示在屏幕上。 代码如下: DSEG SEGMENT ;定义数据段 NUM DB 09H, 16H, 04H, 17H ;定义a, b, c, d DSEG ENDS ;数据段定义结束 CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG START:MOV AX, DSEG MOV DS, AX MOV AL, [NUM] ADD AL, [NUM+1] DAA MOV CL, AL MOV AL, [NUM+2] ADD AL, [NUM+3] MOV BL, AL DAA XCHG AL, CL SUB AL, CL DAS MOV BL, AL AND AL, 0F0H MOV CL, 4 SHR AL, CL ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H MOV AL, BL AND AL, BL AND AL, 0FH ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H MOV AH, 4CH INT 21H CSEG ENDS END START 改变a,b,c,d内容,然后重新汇编、连接并运行程序,检查其结果与手工计算是否相符。下面是几组实验用的数据: a=09,b=16,c=04,d=17 a=38,b=41,c=29,d=34 a=70,b=23,c=42,d=41 4、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=44 2、a=12,b=19,c=25,d=33 观察结果,改进程序使结果正确。 答:当a+b小于c+d的时候,程序运行结果错误。两小题的运行时截图如下: 有图中结果可知,第一小题的结果按照原来代码运行是正确的,第二小题是错误的。改正后的代码如下: DSEG SEGMENT ;定义数据段 NUM DB 12H, 19H, 25H, 33H DSEG ENDS ;数据段定义结束 CSEG SEGMENT ;定义代码段 ASSUME CS:CSEG, DS:DSEG START:MOV AX, DSEG MOV DS, AX MOV AL, [NUM] ADD AL, [NUM+1] ;AX=A+B DAA ;将二进制加法运算结果调整为BCD MOV CL, AL MOV AL, [NUM+2] ADD AL, [NUM+3] ;AX=C+D DAA CMP AL, CL ;比较AL和CL JNC NEG1 ;CF=0跳转,(C+D)(A+B)跳转至FU程序段 XCHG AL, CL ;AX=A+B, CX=C+D JMP POS NEG1:SUB AL, CL ;AX=(C+D)-(A+B) DAS ;将二进制减法运算结果调整为BCD码 MOV BL, AL MOV DL, 2DH ;输出负号 MOV AH, 2 ;选择方式2 INT 21H ;返回DOS MOV AL, BL AND AL, 0F0H ;取高四位 MOV CL, 4 SHR AL, CL ;高四位右移到低四位 ADD AL, 30H ;将BCD码转换为ASCII码 MOV DL, AL ;输出高位 MOV AH, 2 INT 21H MOV AL, B

文档评论(0)

danli208 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档