北京理工大学总汇编试验报告材料2_第1页
北京理工大学总汇编试验报告材料2_第2页
北京理工大学总汇编试验报告材料2_第3页
北京理工大学总汇编试验报告材料2_第4页
北京理工大学总汇编试验报告材料2_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实用文档本科实验报告实验名称:实验二 算术运算实验课程名称:课程设计(CPU与汇编)(实验)实验时间:第 5-10 周周五下午任课教师:聂青实验地点:10-102实验教师:苏京霞实验类型:? 原理验证 综合设计 自主创新学生姓名:罗逸雨学号/班级:1120141208 05211401组 号:3学 院:信息与电子学院同组搭档:专 业:通信工程成 绩:实用文档一、实验目的1) 掌握 MASM for Windows 环境下的汇编语言编程环境使用;2) 掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十进 制、 BCD码的表示形式;3) 掌握汇编语言对多精度十六进制和十进制的编程方法

2、及运算类指令对各状态 标志位的影响及测试方法;4) 掌握无符号数和有符号数运算区别及编程方法 ;二、实验环境与原理1. 实验软硬件环境1) 硬件环境:惠普 64 位一体化计算机及局域网;2) 软件环境: Windows 8,红蜘蛛管理系统, MASM for Windows。2. 实验原理 算术运算实验需要对运行结果进行调试及查看状态字,其相关知识如下。1) 标志位在 debug 调试过程中, 标志位用特殊符号表示的, 其标志名和状态符号的对照表 参照表 1 所示。2) 加减法指令ADD表示加法指令, ADC表示带进位加法指令, SUB表示减法指令, SBB表示带进 位减法指令。3) 乘除法指

3、令MUL表示无符号数乘法指令, IMUL表示带符号数乘法指令, DIV 表示无符号数除 法指令, IDIV 表示带符号数除法指令。4) 符号位扩展指令CBW表示从字节扩展到字的指令, CWD表示从字扩展到双字的指令。实用文档5) BCD 码的调整指令在进行十进制加减运算时,需要将数据用 BCD码表示,还要考虑到是组合 BCD 码还是非组合 BCD码,组合 BCD码是用一个字节表示两位十进制数,非组合 BCD 码是用一个字节表示一位十进制数, 对于组合的 BCD码加减法运算其结果存放在 AL中。组合的 BCD码加法调整指令 DAA; 组合的 BCD码减法调整指令 DAS; 非组合的 BCD码加法

4、调整指令 AAA; 非组合的 BCD码减法调整指令 AAS; 乘法的非组合 BCD码调整指令 AAM; 除法的非组合 BCD码调整指令 AAD。8088/8086 指令系统提供了实现加、 减、乘、除运算指令, 可参照表 2 所示内容。三、实验步骤1) 试编程以下各组数的和差积商, 并考虑计算结果对标志寄存器中状态标志位的 影响:总结各运算对状态标志位的影响,及其意义。2) 在数据段定义了两个多精度的有符号 16进制数, BUF1和 BUF2。求两数的和 与差,并将计算值存放在 BUF3为首地址的缓冲区中;同时将两组数据当作十进 制数据来处理,再次求两数的和与差,并将结果存放在BUF3为首地址的

5、缓冲区中。试编程实现上述运算。实用文档BUF1 DB 92H ,98H,45H, 64H,78HBUF2 DB 33H ,46H,17H, 45H,52H3)编程计算 280*584/ 190,运算结果用十六进制表示。要求上式计算结果的商 存入 AX,余数存入 DX寄存器。四、程序清单与框图(1) 程序:CODES SEGMENTASSUME CS:CODESSTART:MOV AX,0ABHMOV BX,78HADD AX,BX ; 0ABH+078HMOV AX,0ABHMOV BX,78HSUB AX,BX; 0ABH-078HMOV AX,64HADD AX,5AH; 64H+5AHM

6、OV AX,64HSUB AX,5AH; 64H-5AHMOV AL,0A2HMOV BL,3FHMUL BL ; 0A2H*3FHMOV AX,0A2HMOV BL,3FHDIV BL ; 0A2H/3FHMOV AH,4CHINT 21HCODES ENDSEND START实用文档(2) 程序:1. 十六进制求和DATAS SEGMENTBUF1 DB 92H,98H,45H,64H,78H6 个字节BUF2 DB 33H,46H,17H,45H,52HBUF3 DB 6 DUP(?) ; 最高位符号位扩展后占一个字,A DW 0HDATAS ENDSCODES SEGMENTASSUM

7、E CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA SI,BUF1LEA DI,BUF2LEA BX,BUF3CLC ; 进位清空MOV CX,4L:MOV AL,SIADC AL,DIMOV BX,ALINC SIINC DIINC BX;BX 自增,指向下一个字节单元DEC CXJNZ LMOV AL,byte ptrSICBW ; 符号扩展MOV DX,AXMOV AL,byte ptrDICBW ; 符号扩展ADC AX,DXMOV word ptrBX,AXMOV AH,4CHINT 21HCODES ENDSEND START实用文档

8、框图:程序功能: 通过循环分别求得 BUF1、BUF2中低四位字节的和, 并存在 BUF3对应 字节单元中。值得注意的是有符号数相加时需要对最高位字节先进行符号扩展, 所以 BUF1、BUF2的高位字节的和需要放在循环外单独计算,最后将高位单元的 字型的和存储在 BUF3中。十六进制减法程序同理。组合 BCD码加减法在最后需 要进行 DAA/DAS调整。实用文档2. 十六进制作差DATAS SEGMENTBUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52HBUF3 DB 6 DUP(?)DATAS ENDSCODES SEGMENTASS

9、UME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA SI,BUF1LEA DI,BUF2LEA BX,BUF3CLCMOV CX,4L:MOV AL,SISBB AL,DIMOV BX,ALINC SIINC DIINC BXDEC CXJNZ LMOV AL,byte ptrSICBW ; 符号扩展MOV DX,AXMOV AL,byte ptrDICBW ; 符号扩展SBB DX,AXMOV word ptrBX,DXMOV AH,4CHINT 21HCODES ENDSEND START3. 十进制求和DATAS SEGMENTBUF1

10、 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52HBUF3 DB 6 DUP(?)DATAS ENDSCODES SEGMENT实用文档ASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA SI,BUF1LEA DI,BUF2LEA BX,BUF3CLCMOV CX,5L:MOV AL,SIADC AL,DIDAAMOV BX,ALINC DIINC SIINC BXDEC CXJNZ LMOV AL,0ADC AL,0 ; 存最高位进位DAAMOV byte ptrBX,ALMOV AH

11、,4CHINT 21HCODES ENDSEND START4. 十进制作差DATAS SEGMENTBUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52HBUF3 DB 6 DUP(?)DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA SI,BUF1LEA DI,BUF2LEA BX,BUF3CLCMOV CX,5实用文档L:MOV AL,SISBB AL,DIDASMOV BX,ALINC DIINC SIINC BXDEC CXJ

12、NZ LMOV AL,0SBB AL,0DASMOV byte ptrBX,ALMOV AH,4CHINT 21HCODES ENDSEND START(3) 程序:CODES SEGMENTASSUME CS:CODESMOV AX,280MOV BX,584MUL BXMOV BX,190DIV BXMOV AH,4CHINT 21HCODES ENDSEND五、实验结果与分析1)计算状态标志算式结果AFCFZFOFSFPF0ABH+78H123HACNCNZNVPLPO0ABH-78H33HNANCNZNVPLPE64H+5AHBEHNANCNZNVPLPE64H-5AH0AHACNCN

13、ZNVPLPE0A2H*3FH27DEACCYNZOVPLPE0A2H/3FH商 02 余数 42ACCYNZOVPLPE实用文档无符号数运算标志位意义总结:状态 标志 位加法减法乘法除法01010101CF最高位 无进位最高位 有进位最高位 无借位最高位 有借位CF=OF=0 乘积的 高一半 为 0 (字 节操作 的( AH) 或字操 作的 (DX)CF=OF=1 乘积的 高一半 不为 0无 定 义AF低四位低四位低四位低四位无影响无影响向高四 位无进 位向高四 位进位向高四 位无进 位向高四 位进位ZF结果不为0结果为 0结果不为0结果为 0无影响无影响OF无溢出两个同 符号数 相加,结

14、果符号 与其相 反,发生 溢出。无溢出两数符 号相反, 而结果 符号与 减数相 同,发生 溢出。CF=OF=0 乘积的 高一半 为 0 (字 节操作 的( AH) 或字操 作的 (DX)CF=OF=1 乘积的 高一半 不为 0SF最高位为0最高位为1最高位为0最高位为1无影响无影响PF1 的个数 为奇数 个1 的个数 为偶数 个1 的个数 为奇数 个1 的个数 为偶数 个无影响无影响DEBUG运行结果截图:0ABH+078H=0123H实用文档0ABH-78H=0033H64H+5AH=BEH64H-5AH=0AH02AH*3FH=27DE0A2H/3FH= 商02 余数 4216 进制结果1

15、0 进制结果BUF1+BUF2C5 DE 5C A9 CA 0025 45 63 09 31 01BUF1-BUF25F 52 2E 1F 26 0059 52 28 19 26 00(2)BUF1、BUF2均为有符号数BUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52H经过计算验证,运行结果均正确DEBUG运行结果截图:1. 十六进制数求和2. 十六进制数作差3. 十进制求和实用文档4. 十进制作差(3)280*584/190 商: 035CH 余数: 0078HDEBUG运行结果截图:AX=035C,DX=0078 经验算后证明结果正确。六、实验感想经过本次实验,我对汇编语言中的二进制、十六进制、十进制、 BCD码的表 示形式有了一定了解, 对有关 BCD码调整指令方面的知识有了更深刻的认识, 熟 悉了二进制多字节加减法基本指令的使用方法以及无符号数和有符号数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论