欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:34411884       资源大小:96.50KB        全文页数:10页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    如有侵权,请联系网站删除,仅供学习与交流北理工_汇编_实验二_算术运算类操作实验【精品文档】第 10 页本科实验报告实验名称: 实验二 算术运算类操作实验(基础与设计) 课程名称:CPU与汇编实验实验时间:任课教师:实验地点:实验教师:实验类型: 原理验证 综合设计 自主创新学生姓名:学号/班级:组 号:无学 院:信息与电子同组搭档:无专 业:信息工程成 绩:一、实验要求和目的 1.了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式;2.掌握各类运算类指令对各状态标志位的影响及测试方法;3.熟悉汇编语言二进制多字节加减法基本指令的使用方法;4.熟悉无符号数和有符号数乘法和除法指令的使用;5.掌握符号位扩展指令的使用;6.掌握BCD 码调整指令的使用方法 。二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识1加减法处理指令2乘除法指令和符号位扩展指令3BCD 码的调整指令四、实验内容(一)对于两组无符号数,087H 和034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响:计算状态标识表达式结果(H)CFAFZFOFSFPF087H +034H00BB000001087H -034H0053000001087H *034H1B6C000001087H/034H0002(1F)0000010C2H+5FH01210100010C2H-5FH00630100010C2H*5FH47FE0100010C2H/5FH0002(04)010001开始结束将两组数据分别存入AX,BX中,将二者中的数据相加,存入AX中将两组数据分别存入AX,BX中,用AX中数据减去BX中数据,存入AX中将两组数据分别存入AX,BX中,将二者中的数据相乘,存入AX中将两组数据分别存入AX,BX中,用AX中数据除以BX中数据,存入AX中1. 流程图2.程序代码:DATAS SEGMENTDATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV AX,0C2HMOV BX,5FHADD AX,BX;add MOV AX,0C2HMOV BX,5FHSUB AX,BX;sub MOV AX,0C2HMOV BX,5FHMUL BX;mul MOV AX,0C2HMOV BX,5FHDIV BX ;divMOV AH,4CH INT 21HCODES ENDSEND START(将数据改变得到另一组输出结果)3. 实验结果以第一组数的加法为例(已将截图以上输入-t进行debug的步骤省略)此时右下角信息(NV UP)代表标志寄存器的值 。4. 结果分析:由资料可得:1.CF(carry flag):进位标志位,运算结果需要进位为1,不需进位为02.PF(parity flag):奇偶标志位,当运算结果的低8位中的“1”的个数为偶数时PF=1,为奇数时,PF=0。3.AF(auxiliary flag):辅助进位标志,第3位有进位为1,无进位为0 4.ZF(zero flag):零标志位,当运算结果为零时ZF=1,否则ZF=0。5.SF(sign flag):符号标志位,当运算结果的最高位为1时SF=1,否则SF=0。6.OF(overflow flag):溢出标志位,当算术运算结果超出了带符号数的范围,即溢出时,OF=1,否则OF=0.其中注意在本程序中,SUB影响全部的条件标志:1. 减法的CF反应的是无符号数运算中的借位情况:当减数>被减数是CF=1,否则CF=0;2.OF:如果两个数的符号相反而结果的符号与减数相同,则OF=1,否则OF=0;3.SF(运算结果<0为1否则为0)、ZF(零标志)、AF(辅助进位标志)、PF(奇偶标志)根据其含义设置。(二)在数据段定义了两个多精度的有符号16 进制数,FIRST 和SECOND ,1)求两数的和与差,并将结果存放在THIRD 为首地址的缓冲区中;2)如果把两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在FORTH 为首地址的缓冲区中。试编程实现上述运算。FIRST DW 45H,82H,96H,57HSECOND DW 12H,46H,83H,45H16进制结果10进制结果FIRST +SECOND00 57 C9 19 9CH00 58 29 80 02DFIRST -SECOND00 33 3C 13 12H00 33 36 13 12D1.流程图SI,DI,CX均自减1将FIRSTSI+3与SECONDSI+3存入AL、BL,带进位相加,再加上CF的值。结果存入THIRDDI+4中。设定寄存器初始值SI=0,DI=0,CX=3,作为计数器开始取值是否加到最高位(CX=0)将AX值强制显示在THIRDDI+4中(若有高位则存入THIRDDI+5)带进位相加存入AX将FIRSTSI+3与SECONDSI+3存入AL、BL单字节扩展为双字节设置寄存器值为SI=0,DI=5,CX=3否是十六进制减法及十进制显示部分略。十进制加法前设置寄存器值为SI=0,DI=0,CX=3,在每步相加后用DAA显示为十进制数,十进制加法前设置寄存器值为SI=0,DI=5,CX=3,在每步相减后用DAS显示为十进制数。2.程序代码:DATAS SEGMENTFIRST DB 45H,82H,96H,57HSECOND DB 12H,46H,83H,45H THIRD DB 10 DUP(?);注意保证数组空间足够大FORTH DB 10 DUP(?)DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV SI,0 MOV DI,0 MOV CX,3;设置寄存器值,作为计数器L1: ;十六进制显示加法 MOV AL,FIRSTSI+3 MOV BL,AL MOV AL,SECONDSI+3 ADC AL,BL MOV THIRDDI+4,AL DEC SI DEC DI DEC CX JNZ L1;若CX不为零,则未到最高位,循环 DEC DI;CX为零,跳出循环 MOV AL,FIRSTSI+3 CBW;扩充,符号位存入AH MOV BX,AX MOV AL,SECONDSI+3 CBW ADC AX,BX MOV WORD PTR THIRDDI+4,AX;将AX强制显示。即高位存入下一位。 MOV DI,5;重置寄存器值,避开加法结果位置。 MOV SI,0 MOV CX,3L2:;十六进制显示减法MOV AL,FIRSTSI+3 MOV BL,SECONDSI+3 SBB AL,BL MOV THIRDDI+4,AL DEC SI DEC DI DEC CX JNZ L2 DEC DI MOV AL,FIRSTSI+3 CBW MOV BL,SECONDSI+3 CBW SBB AX,BX MOV WORD PTR THIRDDI+4,AX MOV DI,0 MOV SI,0 MOV CX,3L3:;十进制显示加法 MOV AL,FIRSTSI+3 MOV BL,AL MOV AL,SECONDSI+3 ADC AL,BL DAA;显示为十进制 MOV FORTHDI+4,AL DEC SI DEC DI DEC CX JNZ L3 DEC DI MOV AL,FIRSTSI+3 CBW MOV BX,AX MOV AL,SECONDSI+3 CBW ADC AX,BX DAA MOV WORD PTR FORTHDI+4,AX MOV DI,5 MOV SI,0 MOV CX,3L4:;十进制显示减法MOV AL,FIRSTSI+3 MOV BL,SECONDSI+3 SBB AL,BL DAS MOV FORTHDI+4,AL DEC SI DEC DI DEC CX JNZ L4 DEC DI MOV AL,FIRSTSI+3 CBW MOV BL,SECONDSI+3 CBW SBB AX,BX DAS MOV WORD PTR FORTHDI+4,AX MOV AH,4CH INT 21HCODES ENDSEND START3.调试结果4. 结果分析(1)CWB为扩充,符号位置于AH;(2)将AX放入THIRD中时,由于AX为WORD型,THIRD为BYTE型,故需要PTR指令;(3)最高位相加时,将进位结果强制存入数组,结果如图显示,第二位00为最高位进位结果。(三)编程计算(Z +X*Y -328) -V)/ Y,其中X、Y、Z、V 均为16 位带符号数,假设初始数据分别装入X、Y、Z、V 单元,要求上式计算结果的商存入AX,余数存入DX 寄存器。同学自行给出初始值加以验证程序。开始结束计算x*y取值计算x*y+z计算x*y+z-328计算x*y+z-328-v计算(x*y+z-328-v)/y1.流程图2.程序代码DATAS SEGMENTX DW 0FF3HY DW 1117HZ DW 000FHV DW 5B12HDATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV AX,X IMUL Y ;x*y,保存在DX,AX中 MOV CX,AX MOV BX,DX ;此时DX,AX存入BX,DX中 MOV AX,Z ;扩展,存入AX CWD ADD CX,AX ADC BX,DX SUB CX,328 SBB BX,0 MOV AX,V CWD SUB CX,AX SBB BX,DX IDIV Y MOV AH,4CH INT 21HCODES ENDSEND START3. 调试结果经检验结果正确4. 结果分析需注意数据计算可能产生的进位,及时使用CWB扩充,保证结果正确。五总结通过这次实验,自己对汇编语言终于有了一个系统的认识,并初步理解了汇编中四则运算的机制,熟悉了课上所学的CBW, CWD, PTR, IMUL, IDIV, DAA, DAS等命令的使用。

    注意事项

    本文(北理工_汇编_实验二_算术运算类操作实验.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开