汇编语言上机实验八2015李中_第1页
汇编语言上机实验八2015李中_第2页
汇编语言上机实验八2015李中_第3页
汇编语言上机实验八2015李中_第4页
汇编语言上机实验八2015李中_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

实验报告课 程:汇编语言程序设计专业班级:计算机科学与技术学 号:姓 名:李中实验八算术运算与代码转换实验一、 实验目的1、 掌握多字节整数的加、减、乘除运算方法。2、 掌握十进制的BCD吗表示方法及BCD吗的加减运算方法3、 掌握浮点数的表示方法及在存储区中的存储格式4、 掌握浮点的加、减、乘除运算方法。5、 掌握BCD吗与二进制数、BCD吗与ASCll吗、二进制数与BCD吗之间的相互转换方法二、 实验要求 1、学会使用BCD吗运算调整指令 2、明确INC指令与ADD指令的区别,将INC指令改为ADD指令结果怎样 3、在DEBUG下观察浮点数的存储格式 4、在DEBUG下用T命令跟踪ADC及SB指令加、减的过程。弄清加减的进位、借位来自何处三、实验内容1、在MLTOR和MLTED开始的内存单元中,分别存放一个长度相同的无符号整数,数据长度存放在LEN单元中,编制程序计算两个数据之积,并将结果存入PRDT开始的内存单元2、编写程序,将两个带符号十进制数据的ASCll吗串转换为二进制补码表示的数据,计算两数之和,并将结果显示在屏幕上。数据范围如果产生溢出,则在屏幕上显示字符串“overflow”。四、解题思路1、被乘数是1,中间结果加上被乘数,被乘数左移一位。被乘数是0,被乘数左移一位。2、利用查表法。将键盘输入的十进制数存入内存中。从高位到低位依次取值,将中间结果乘10与之相加。转化为二进制,在依据键盘输入的符号决定要进行的计算。最后将结果输出。五、流程图1、乘数右移一位,CF是否为1被乘数左移一位中间结果加上被乘数Yes判断乘数是否为0NoNoRETYes2、和09比较,判断是否在之间取SI指向内存的十进制数NoSI减1,判断是否取完中间就结果乘10,与之相加YesNoRETYes六、子程序说明文件1、(1)子程序名:MUL2(2)子程序功能:多字节无符号整数之积(3)入口条件:AX,BX分别存放乘数和被乘数(4)出口条件:DX,SI存放结果(5)受影响的寄存器:CF,ZF子程序清单在下面2、(1)子程序名:DATBIN(2)子程序功能:十进制数据转化为二进制数据进行计算(3)入口条件:DI,SI指向内存中数的高位(4)出口条件:结果放在CX中(5)受影响的寄存器:CF,ZF等子程序清单在下面:七、编程实现1、主程序DSEG SEGMENTMLTOR DB 6FH,0C8HMLTED DB 58H,0A7HLEN DW 2PRDT DW 2 DUP (0)DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGSTART: MOV AX,DSEG MOV DS,AX LEA SI,MLTOR LEA DI,MLTED MOV CX,LEN MOV AX,WORD PTR SI MOV BX,WORD PTR DI CALL MUL2 LEA DI,PRDT MOV DI,DX MOV DI+2,SI INT 3 MOV AH,4CH INT 21H INCLUDE SY811.ASMCSEG ENDS END START子程序: PUBLIC MUL2MUL2 PROC XOR SI,SI XOR DX,DX XOR CX,CXGO: OR BX,BX JNZ NEXT1 RETNEXT1: SHR BX,1 JNC NEXT2 CLC ADD DX,AX ADC SI,CXNEXT2: SHL AX,1 RCL CX,1 JMP GOMUL2 ENDP编辑:汇编:连接:运行:2、主程序:DSEG SEGMENTDATA1 DB 10 DUP (0)DATA2 DB 10 DUP (0)ONES DB OVERFLOW!TWOS DB INPUT ERROR!HTAB DB ABCDEFDSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGSTART: MOV AX,DSEG MOV DS,AX MOV ES,AX LEA DI,DATA1 LEA SI,DATA1 MOV AH,01H INT 21H MOV DL,AL INC SI INC DIGO: MOV AH,01 INT 21H STOSB CMP AL,0DH JNE GO CALL DATBIN CMP DL,+ JZ ADD1 CMP DL,- JZ SUB1 JMP ERROR2ADD1: MOV DH,1 JMP NEXT1SUB1: MOV DH,0 NEG CXNEXT1: PUSH CX LEA DI,DATA2 LEA SI,DATA2 MOV AH,01H INT 21H MOV DL,AL INC SI INC DIGO1: MOV AH,01 INT 21H STOSB CMP AL,0DH JNE GO1 CALL DATBIN CMP DL,+ JZ ADD2 CMP DL,- JMP SUB2 JMP ERROR2ADD2: ADD DH,1 JMP NEXT2SUB2: ADD DH,0 NEG CXNEXT2: POP AX CLC ADD AX,CX CMP DH,1 JZ GO3 CMP DH,0 JZ SAME0SAME2: CMP AX,0 JL ERROR1 JMP GO3SAME0: CMP AX,0 JG ERROR1GO3: CALL PUTEXIT: INT 3 MOV AH,4CH INT 21HERROR1: LEA SI,ONES MOV CX,9AG: MOV DL,SI INC SI MOV AH,02 INT 21H LOOP AG JMP EXITERROR2: LEA SI,TWOS MOV CX,12AG1: MOV DL,SI INC SI MOV AH,02 INT 21H LOOP AG1 JMP EXIT INCLUDE SY821.ASMCSEG ENDS END START子程序:PUBLICDATBINDATBIN PROCNEAR PUSH BX XOR CX,CXGETA: MOV AL,SI CMP AL,0 JB RETURN CMP AL,9 JA RETURN SUB AL,30H XOR AH,AH MOV BX,CX SHL CX,1 SHL CX,1 ADD CX,BX SHL CX,1 ADD CX,AX INC SI JMP GETARETURN: POP BX RETDATBIN ENDPPUBLIC PUTPUT PROCNEARMOV DX,AX;AX备份一份 MOV AL,AH;先输出高字节 XOR AH,AH MOV CL,16 DIV CL MOV CX,AX;CX保存AX的结果(AL商,AH余数) LEA BX,HTAB XLAT MOV CL,AL;CL商 MOV AL,AH XLAT MOV BX,DX MOV CH,AL;CH余数 MOV DL,CL MOV AH,02H INT 21H MOV DL,CH MOV AH,02H INT 21H MOV AL,BL;输出低字节 XOR AH,AH MOV CL,16 DIV CL MOV CX,AX;AL商,AH余数 LEA BX,HTAB XLAT MOV CL,AL;CL商 MOV AL,CH XLAT MOV CH,AL MOV DL,CL MOV AH,02H INT 21H MOV DL,CH MOV AH,02H INT 21H MOV DL,H MOV AH,02H INT 21H RETP

温馨提示

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

评论

0/150

提交评论