- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验一 顺序程序的设计
实验一顺序程序的设计实验目的学习8086/8088指令系统中一些基本指令的用法和程序设计的基本方法;熟悉在PC机上建立、汇编、连接、调试和运行8086、8088汇编语言程序的全过程。实验内容设a、b、c、d四个数分别以单字节压缩BCD码形式存放在内存NUM开始的四个单元。计算(a+b)-(c+d)并将结果放在Y1单元,将结果在屏幕上显示出来。这里给出了几组数据:a=09,b=06,c=04,d=07a=38,b=41,c=29,d=34a=70,b=23,c=42,d=41a=63,b=73,c=62,d=50实验原理这类程序完全按照顺序执行的指令序列,往往用于解决一些简单的算术逻辑运算,无需机器进行判断,需恰当地选择计算方法,使程序设计简练。四.代码展示DSEG SEGMENTNUM DB 01H,01H,01H,01H //初始化Y1 DB ?DSEG ENDSSSEG SEGMENT PARA STACKDB 20 DUP(?)SSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART: MOV AX,DSEGMOV DS,AXMOV AX,SSEGMOV SS,AX//计算a+bMOV AL,NUMADD AL,NUM+1DAAMOV CL,AL//计算c+dMOV AL,NUM+2ADD AL,NUM+3DAA//计算(a+b)-(c+d)SUB CL,ALMOV AL,CLDASMOV NUM+4,AL//输出数值部分MOV BL,ALAND AL,0F0HMOV CL,4SHR AL,CLADD AL,30HMOV DL,ALMOV AH,02HINT 21HMOV AL,BLAND AL,0FHADD AL,30HMOV DL,ALMOV AH,02HINT 21HMOV AX,4C00HINT 21HCSEG ENDSEND START实验思考题用哪些DEBUG的命令可以查看、改变a,b,c,d的值?用于修改存储单元内容的命令E(Enter Command)可以用于修改a,b,c,d,修改方式:E DS:0000 {0}H {1}H {2}H {3}H调试程序时,你将断点设置在什么地方?简要地予以说明。将断点设置在初始化结束后,计算c+d后,以及计算(a+b)-(c+d)后。以第二题为例1.初始化结束后的断点可以看到此时地址位NUM—NUM+4的存储器单元已被初始化为01,01,01,01此时,将我们想要输入的a,b,c,d用第一题的方法输入进去可以看到a,b,c,d已经输入进去。2.观察计算c+d后的断点在这个断点中,我们可以同时观察a+b(CL),c+d(AL)的值是否正确,可以看出,这两个值都是正确的。3.观察计算(a+b)-(c+d)后的断点这个时候,AL、CL均为(a+b)-(c+d)的值,计算无误。之后输出数据。若a=90,b=34,c=33,d=44a=12,b=19,c=25,d=33设置合适的断点,观察结果,说明错误的原因,并改进程序使结果正确。运行第一组数据时并没有出错,但运行第二组数据时,输出结果与预期结果不同。按照第二题中所设置的断点检查初始化是否正确检查a+b(CL),c+d(AL)是否计算正确检查(a+b)-(c+d)的值是否正确可以看到这里的计算结果并不正确,观察CL可知,由于使用的是无符号数,DOS并没有正确的显示负数。稍微修改了一下代码,使程序能够输出负数。修改后的代码:DSEG SEGMENTNUM DB 12H,19H,25H,33HY1 DB ?DSEG ENDS //初始化SSEG SEGMENT PARA STACKDB 20 DUP(?)SSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART: MOV AX,DSEGMOV DS,AXMOV AX,SSEGMOV SS,AXMOV AL,NUMADD AL,NUM+1DAA //计算a+bMOV CL,ALMOV AL,NUM+2ADD AL,NUM+3DAA //计算c+d//比较(a+b)与(c+d)的大小,决定运算及显示方案CMP CL,ALJL SEG1 //如果a+b比较小,则跳转到SEG1SUB CL,ALMOV AL,CLDASMOV NUM+4,ALJMP SHUCHU //跳转至数值输出SEG1:SUB AL,CLDASMOV NUM+4,AL//在屏幕上显示“-”MOV AH,02HMOV DL,2DHINT 21HMOV AL,NUM+4JMP SHUCHU //在屏幕上显示数值部分SHUCHU:MOV BL,ALAND
您可能关注的文档
最近下载
- ICD-9-CM-3手术与操作国家临床版亚目表.xlsx VIP
- 图形创意(第二版)林家阳 高教 全套课件.ppt
- Unit 2 Helping at home 第1课时 Get ready(教学课件)英语外研版三起四年级上册(新教材).ppt
- 大数据精准营销PPT课件.pptx VIP
- 天线与电波传播课件(第六章)电波传播概论.ppt VIP
- 公司目视化管理手册..pptx VIP
- 非遗工艺数字化呈现的2025年文化传承项目阶段汇报PPT.pptx VIP
- 演讲与口才中职全套完整教学课件.pptx
- CNG及LNG加气站风险管控资料.doc VIP
- 一种拉曼-荧光双模生物传感器及其制备方法与其在miRNA检测中的应用.pdf VIP
文档评论(0)