北理工_汇编_实验二_算术运算类操作实验.docVIP

北理工_汇编_实验二_算术运算类操作实验.doc

  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文档。上传文档
查看更多
北理工_汇编_实验二_算术运算类操作实验

本科实验报告 实验名称: 实验二 算术运算类操作实验(基础与设计) 一、实验要求和目的? 1.了解汇编语言中的二进制、十六进制、十进制、BCD?码的表示形式; 2.掌握各类运算类指令对各状态标志位的影响及测试方法; 3.熟悉汇编语言二进制多字节加减法基本指令的使用方法; 4.熟悉无符号数和有符号数乘法和除法指令的使用; 5.掌握符号位扩展指令的使用; 6.掌握BCD?码调整指令的使用方法?。 二、软硬件环境? 1、硬件环境:计算机系统?windows;? 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。? 三、实验涉及的主要知识 1.加减法处理指令 2.乘除法指令和符号位扩展指令 3.BCD 码的调整指令 四、实验内容 (一)对于两组无符号数,087H 和034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响: 计算 状态标识 表达式 结果(H) CF AF ZF OF SF PF 087H +034H 00BB 0 0 0 0 0 1 087H -034H 0053 0 0 0 0 0 1 087H *034H 1B6C 0 0 0 0 0 1 087H/034H 0002(1F) 0 0 0 0 0 1 0C2H+5FH 0121 0 1 0 0 0 1 0C2H-5FH 0063 0 1 0 0 0 1 0C2H*5FH 47FE 0 1 0 0 0 1 0C2H/5FH 0002(04) 0 1 0 0 0 1 流程图 2.程序代码: DATAS SEGMENT DATAS ENDS STACKS SEGMENT STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV AX,0C2H MOV BX,5FH ADD AX,BX ;add MOV AX,0C2H MOV BX,5FH SUB AX,BX ;sub MOV AX,0C2H MOV BX,5FH MUL BX ;mul MOV AX,0C2H MOV BX,5FH DIV BX ;div MOV AH,4CH INT 21H CODES ENDS END START (将数据改变得到另一组输出结果) 实验结果 以第一组数的加法为例 (已将截图以上输入-t进行debug的步骤省略) 此时右下角信息(NV UP……)代表标志寄存器的值 。 结果分析: 由资料可得: 1.CF(carry flag):进位标志位,运算结果需要进位为1,不需进位为0 2.PF(parity flag):奇偶标志位,当运算结果的低8位中的“1”的个数为偶数时PF=1,为奇数时,PF=0。 4.ZF(zero flag):零标志位,当运算结果为零时ZF=1,否则ZF=0。 当运算结果的最高位为1时SF=1,否则SF=0。 当算术运算结果超出了带符号数的范围,即溢出时,OF=1,否则OF=0. (二)在数据段定义了两个多精度的有符号16 进制数,FIRST 和SECOND ,1)求两数的和与差,并将结果存放在THIRD 为首地址的缓冲区中;2)如果把两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在FORTH 为首地址的缓冲区中。试编程实现上述运算。 FIRST DW 45H,82H,96H,57H SECOND DW 12H,46H,83H,45H 16进制结果 10进制结果 FIRST +SECOND 00 57 C9 19 9CH 00 58 29 80 02D FIRST -SECOND 00 33 3C 13 12H 00 33 36 13 12D 1.流程图 十六进制减法及十进制显示部分略。 十进制加法前设置寄存器值为SI=0,DI=0,CX=3,在每步相加后用DAA显示为十进制数,十进制加法前设置寄存器值为SI=0,DI=5,CX=3,在每步相减后用DAS显示为十进制数。 2.程序代码: DATAS SEGMENT FIRST DB 45H,82H,96H,57H SECOND DB 12H,46H,83H,45H THIRD DB 10 DUP(?) ;注意保证数组空间足够大 FORTH DB 10 DUP(?) DATAS ENDS STACKS SEGMENT STACKS ENDS CODES

文档评论(0)

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

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

1亿VIP精品文档

相关文档