北京理工大学汇编实验报告2.docx_第1页
北京理工大学汇编实验报告2.docx_第2页
北京理工大学汇编实验报告2.docx_第3页
北京理工大学汇编实验报告2.docx_第4页
北京理工大学汇编实验报告2.docx_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

本科实验报告实验名称:实验二 算术运算实验 课程名称:课程设计(CPU与汇编)(实验)实验时间:第5-10周周五下午任课教师:聂青实验地点:10-102实验教师:苏京霞实验类型: 原理验证 综合设计 自主创新学生姓名:罗逸雨学号/班级:1120141208 05211401组 号:3学 院:信息与电子学院同组搭档:专 业:通信工程成 绩:一、实验目的1) 掌握MASM for Windows 环境下的汇编语言编程环境使用;2) 掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十进制、BCD码的表示形式;3) 掌握汇编语言对多精度十六进制和十进制的编程方法及运算类指令对各状态标志位的影响及测试方法;4) 掌握无符号数和有符号数运算区别及编程方法;二、实验环境与原理1.实验软硬件环境1) 硬件环境:惠普 64 位一体化计算机及局域网;2) 软件环境:Windows 8,红蜘蛛管理系统,MASM for Windows。2.实验原理算术运算实验需要对运行结果进行调试及查看状态字,其相关知识如下。1) 标志位在debug调试过程中,标志位用特殊符号表示的,其标志名和状态符号的对照表参照表1所示。2) 加减法指令ADD表示加法指令,ADC表示带进位加法指令,SUB表示减法指令,SBB表示带进位减法指令。3) 乘除法指令MUL表示无符号数乘法指令,IMUL表示带符号数乘法指令,DIV表示无符号数除法指令,IDIV表示带符号数除法指令。4) 符号位扩展指令CBW表示从字节扩展到字的指令,CWD表示从字扩展到双字的指令。5) BCD码的调整指令在进行十进制加减运算时,需要将数据用BCD码表示,还要考虑到是组合BCD码还是非组合BCD码,组合BCD码是用一个字节表示两位十进制数,非组合BCD码是用一个字节表示一位十进制数,对于组合的BCD码加减法运算其结果存放在AL中。组合的BCD码加法调整指令DAA;组合的BCD码减法调整指令DAS;非组合的BCD码加法调整指令AAA;非组合的BCD码减法调整指令AAS;乘法的非组合BCD码调整指令AAM;除法的非组合BCD码调整指令AAD。8088/8086指令系统提供了实现加、减、乘、除运算指令,可参照表2所示内容。三、实验步骤1)试编程以下各组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响:总结各运算对状态标志位的影响,及其意义。2) 在数据段定义了两个多精度的有符号16进制数,BUF1和BUF2。求两数的和与差,并将计算值存放在BUF3为首地址的缓冲区中;同时将两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在BUF3为首地址的缓冲区中。试编程实现上述运算。BUF1 DB 92H,98H,45H,64H,78H BUF2 DB 33H,46H,17H,45H,52H3) 编程计算280*584/ 190,运算结果用十六进制表示。要求上式计算结果的商存入AX,余数存入DX寄存器。四、程序清单与框图(1)程序:CODES SEGMENT ASSUME CS:CODESSTART: MOV AX,0ABH MOV BX,78H ADD AX,BX ; 0ABH+078H MOV AX,0ABH MOV BX,78H SUB AX,BX; 0ABH-078H MOV AX,64H ADD AX,5AH; 64H+5AH MOV AX,64H SUB AX,5AH; 64H-5AH MOV AL,0A2H MOV BL,3FH MUL BL ; 0A2H*3FH MOV AX,0A2H MOV BL,3FH DIV BL ; 0A2H/3FH MOV AH,4CH INT 21HCODES ENDSEND START(2)程序:1. 十六进制求和DATAS SEGMENTBUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52HBUF3 DB 6 DUP(?) ;最高位符号位扩展后占一个字,共6个字节A DW 0HDATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX LEA SI,BUF1 LEA DI,BUF2 LEA BX,BUF3 CLC ;进位清空 MOV CX,4L: MOV AL,SI ADC AL,DI MOV BX,AL INC SI INC DI INC BX ;BX自增,指向下一个字节单元 DEC CX JNZ L MOV AL,byte ptrSI CBW ;符号扩展 MOV DX,AX MOV AL,byte ptrDI CBW ;符号扩展 ADC AX,DX MOV word ptrBX,AX MOV AH,4CH INT 21HCODES ENDSEND START开始框图: 初始化BUF1,BUF2,BUF3单元将BUF1,BUF2,BUF3偏移地址放入SI、DI、BX中循环次数CX设为4将SI和DI低位字节单元中的内容求和并保存到BX对应字节单元中SI加一DI加一BX加一CX减一NCX=0? YSI和DI中最高位字节扩展后求和并保存到BX字单元中结束程序功能:通过循环分别求得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 SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX LEA SI,BUF1 LEA DI,BUF2 LEA BX,BUF3 CLC MOV CX,4L: MOV AL,SI SBB AL,DI MOV BX,AL INC SI INC DI INC BX DEC CX JNZ L MOV AL,byte ptrSI CBW ;符号扩展 MOV DX,AX MOV AL,byte ptrDI CBW ;符号扩展 SBB DX,AX MOV word ptrBX,DX MOV AH,4CH INT 21HCODES ENDSEND START3. 十进制求和DATAS SEGMENTBUF1 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,DATAS MOV DS,AX LEA SI,BUF1 LEA DI,BUF2 LEA BX,BUF3 CLC MOV CX,5L: MOV AL,SI ADC AL,DI DAA MOV BX,AL INC DI INC SI INC BX DEC CX JNZ L MOV AL,0 ADC AL,0 ;存最高位进位 DAA MOV byte ptrBX,AL MOV AH,4CH INT 21HCODES ENDSEND START4.十进制作差DATAS SEGMENTBUF1 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,DATAS MOV DS,AX LEA SI,BUF1 LEA DI,BUF2 LEA BX,BUF3 CLC MOV CX,5L: MOV AL,SI SBB AL,DI DAS MOV BX,AL INC DI INC SI INC BX DEC CX JNZ L MOV AL,0 SBB AL,0 DAS MOV byte ptrBX,AL MOV AH,4CH INT 21HCODES ENDSEND START(3)程序:CODES SEGMENT ASSUME CS:CODES MOV AX,280 MOV BX,584 MUL BX MOV BX,190 DIV BX MOV AH,4CH INT 21HCODES ENDSEND五、实验结果与分析(1)计算状态标志算式结果AFCFZFOFSFPF0ABH+78H123HACNCNZNVPLPO0ABH-78H33HNANCNZNVPLPE64H+5AHBEHNANCNZNVPLPE64H-5AH0AHACNCNZNVPLPE0A2H*3FH27DEACCYNZOVPLPE0A2H/3FH商02 余数42ACCYNZOVPLPE无符号数运算标志位意义总结:状态标志位加法减法乘法除法01010101CF最高位无进位最高位有进位最高位无借位最高位有借位CF=OF=0乘积的高一半为0(字节操作的(AH)或字操作的(DX)CF=OF=1乘积的高一半不为0无定义AF低四位向高四位无进位低四位向高四位进位低四位向高四位无进位低四位向高四位进位无影响无影响ZF结果不为0结果为0结果不为0结果为0无影响无影响OF无溢出两个同符号数相加,结果符号与其相反,发生溢出。无溢出两数符号相反,而结果符号与减数相同,发生溢出。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 余数 42(2)BUF1、BUF2均为有符号数BUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52H16进制结果10进制结果BUF1+BUF2C5 DE 5C A9 CA 0025 45 63 09 31 01BUF1-BUF25F 52 2E 1F 26 00 59 52 28 19 26 00经过计算验证,运行结果均正确。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

提交评论