微机原理第一次实验..docxVIP

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

微机原理第一次实验电气310 张端鸿 2130401287注:为了适配win8.1 64bit系统,采用masm for Windows软件,初始化过程有些许不同。实验一 顺序程序的设计一、实验目的1.学习8086/8088指令系统中一些基本指令的用法和程序设计的的基本方法2熟悉在PC机上建立、汇编、连接、调试与运行8086/8088汇编语言程序的全过程;二、实验内容设a、b、c、d四个数分别以单字节压缩BCD码形式存放在内存NUM开始的四个单元,计算(a+b)-(c+d)并将结果放在Y1单元,将结果在屏幕上显示出来。在DEBUG中,不断改变a,b,c,d的内容并查看结果。这里给出几组数据: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三、实验程序DATA SEGMENTNUM DB 13H,27H,11H,12HY1 DB ?DATA ENDSSTACK SEGMENT DB 20 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AL,NUM ADD AL,NUM+1;把a+b的结果保存在AL中 DAA;BCD码调整 MOV CL,AL;把a+b的结果复制到CL中 MOV AL,NUM+2 ADD AL,NUM+3;把c+d的结果保存在AL中 DAA;BCD码调整 SUB CL,AL;把(a+b)-(c+d)的结果保存在CL中 MOV AL,CL DAS;减法BCD码调整 MOV Y1,AL ;结果保存于YI中 MOV BL,AL;保存AL中的内容 MOV CL,4 ROR AL,CL AND AL,0FH;取AL中的高四位 ADD AL,30H;转换为ASCII码 MOV DL,AL MOV AH,02H INT 21H;显示高位ASCII码 MOV AL,BL;恢复AL的内容 AND AL,0FH;取低四位 ADD AL,30H;转换为ASCII码 MOV DL,AL MOV AH,02H INT 21H;显示高位ASCII码 MOV AH,4CH INT 21HCODE ENDSEND START调试过程: 1.反汇编2.查看初始时寄存器与内存中的内容3.a=09,b=06,0c=04,d=07时,在偏移地址为0011H(DAA)处设置断点,AL保存的即是经过未经DAA操作后的a+b的结果0FH4.在偏移地址为0011H(DAA)处设置断点,AL保存的即是经过未经DAA操作后的c+d的结果0BH 5.在偏移地址为0020H(DAS)处设置断点,AL保存的即是经过未经DAS操作后的(a+b)-(c+d)的结果04H 6.在偏移地址为0021H(DAS)处设置断点,AL保存的即是经过经DAS操作后的(a+b)-(c+d)的结果04H7. 在40H设置断点,得到输出结果1修改abcd,a=38,b=41,c=29,d=34结果为16同理,当a=70,b=23,c=42,d=41结果为10 a=63,b=73,c=62,d=50结果为24 实验一思考题可改变abcd的值的DEBUG命令:E 可查看abcd的值的DEBUG命令:D断点设置在每一次运算后,即c+d、a+b、与(a+b)-(c+d)后以便验证结果是否与期望相同; 还将断点设置在每一位的显示后以观察是否正常显示。3.a=90,b=34,c=33,d=44结果为47a=12,b=19,c=25,d=33与预期结果-27不符原因:(a+b)-(c+d)为负数现考虑结果为负数的情况,同时考虑是否存在百位,改进程序如下:DSEG SEGMENT NUM DB 12H,19H,25H,33H Y1 DB ? DSEG ENDSSSEG SEGMENT PARA STACK DB 20 DUP(?)SSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART: MOV AX,DSEG MOV DS,AX MOV AX,SSEG MOV SS,AX MOV AL,[NUM] ADD AL,[NUM+1] DAA MOV CL,AL MOV AL,[NUM+2] ADD AL,[NUM+3] DAA CMP CL,AL JL LLOW;如果CLAL跳转,即结果为负 SUB CL,AL MOV AL,CL DAS JMP DONELLOW: SUB AL,CL DAS MOV BL,AL MOV DL,- MOV AH,02H INT 21H

文档评论(0)

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

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

1亿VIP精品文档

相关文档