微机原理第二次实验报告.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文档。上传文档
查看更多
微机原理第二次实验报告

实验二:加法及判断程序调试实验实验报告健行理工1402班陈丽红 201424450202一、实验目的1.掌握编写汇编语言源程序的基本方法和基本框架。2.学会编写顺序结构、分支结构和循环结构的汇编程序,掌握宏定义与宏调用的方法。3.掌握程序中数据的产生与输入输出的方法。二、实验内容1.用汇编语言编写一个加法程序: 1325十9839,用ASCII码的形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加结果显示输出。2.设有一组数据: 5,-4,0,3,100,-51,编程判断:每个数是0、=0、还是0 ?并输出其判断结果。即:三、程序说明3.1实验内容一:(1) 两个数据先以相反的顺序以ASCII码的形式存放在数据段的DATA1和DATA2中,相加时从DATA1和DATA2的起始字节开始相加,也就是从数的个位数开始相加。相加后的结果存放在DATA2开始的存储单元中,同时用DL保存进位位。(2)对于本题来说,题目为两个四位数相加,所以定义循环数为4。(3) 程序中的加法运算是ASCII码运算,后面应加一条ASCII码加法调整指令AAA,经AAA调整的加法指令,将ASCII码的数据高4位清“0”,因此要将结果每位数高4位拼成3,变成ASCII码存到DATA2中。(4)一位运算结束后将用于保存进位位的DL复原,进入循环,进行下一位求和计算。(5)由于计算是从个位数相加开始,所以存入DATA2中的数据应该以相反的顺序输出,故再进行一轮循环输出,得到最终的计算结果。3.2实验内容二:(1)首先将原始数据(5,-4,0,3,100,-51)装入起始地址为VAR的字节存储单元中。(2)将判断结果以字符串的形式分别存放在数据区中,以便在显示输出时调用。(3)判断部分采用CMP指令。从数据区中取出一个数送给AL,之后与0进行比较,得到分支结构,分别输出“Y=0”、“Y=+1”和“Y=-1”。(4)程序中存在一个循环结构,对于本题,循环次数为6,调用6次分支结构后结束。四、程序总框图4.1实验内容一程序框图4.2实验内容二程序框图五、源程序清单与执行结果5.1实验内容一:5.1.1程序源代码DATA SEGMENT;定义数据段,DATA为段名,将两个数据用相反顺序以ASCII码的DATA1 DB 5231形式存放在DATA1,DATA2中DATA2 DB 9389DATA ENDSCODE SEGMENT;定义代码段 ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX LEA SI,DATA1;将DATA1的偏移地址给SI LEA DI,DATA2;将DATA2的偏移地址给DI MOV CX,4;定义循环数CX为4 MOV AH,00H;初始化AH,DL MOV DL,00HNEXT: MOV BL,[SI] MOV AL,[DI] ADD AL,DL;将进位位与AL中的数相加后存储到AL ADD AL,BL;将AL,BL相加 AAA;AAA调整 ADD AL,30H;将结果每位数高4位拼成3,变成ASCII码 MOV [DI],AL;将ASCII码存在DATA2 MOV DL,AH;DL用于存储进位位 INC SI;将SI,DI加1 INC DI MOV AH,00H;将进位位复原置0 LOOP NEXT;循环,进行下一位的计算求和 MOV AH,DL;该部分代码用于保存最后一个进位位 ADD AH,30H MOV [DI],AH MOV CX,5NEXT1:MOV AH,02H;之前的代码输出结果顺序为相反的,通过再一次的循环输出得到计 MOV BL,[DI]结果 MOV DL,BL INT 21H DEC DI;DI减1 LOOP NEXT1 MOV AH,4CH INT 21HCODE ENDS END START5.1.2实验结果截图5.2实验内容二:5.2.1程序源代码DATA SEGMENT;定义数据段VAR DB 5,-4,0,3,100,-51D1 DB Y=+1,0DH,0AH,$;以字符串形式存储D2 DB Y=0,0DH,0AH,$D3 DB Y=-1,0DH,0AH,$DATA ENDSCODE SEGMENT;定义代码段 ASSUME CS:CODE,DS:CODESTART:MOV AX,DATA MOV DS,AX;给DS段赋值 MOV AX,00H;初始化AX置0 MOV CX,6;定义循环数CX为6 LEA DI,VAR;将VAR的开始地址给DINEXT1:MOV AL,[DI] CMP AL,0;将DI指向的数与0进行比较 JGE

文档评论(0)

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

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

1亿VIP精品文档

相关文档