您好,欢迎访问三七文档
实验一二进制加、减法编程实验(设计性实验)一、实验要求和目的1.熟悉汇编语言二进制多字节加法基本指令的使用方法;2.熟悉汇编语言二进制多字节减法基本指令的使用方法;3.掌握汇编语言编程的一般结构。四、实验内容与步骤1、实验内容(1)编写程序,实现长度为2字的两个多精度数相减。(2)编写程序,实现一个长度为3字的多精度数和一个长度为2字的多精度数相加减。2、实验步骤(1)预习多精度数加减法基本知识,根据实验内容,画出流程图;(2)利用EDIT或其他编辑软件,编写汇编源程序,取名为“ch2ex1.ASM”、“ch2ex2.ASM”。(3)汇编、连接该源程序,产生“ch2ex1.EXE”、“ch2ex2.EXE”文件;(4)对“ch2ex1.EXE”和“ch2ex2.EXE”文件进行调试运行:利用DEBUG的T命令或G命令和D命令查看数据区的加减法结果是否正确。流程图实验程序:DATASEGMENT;数据段开始DATA1DW5311H,8A13H开始8A135311H-DW95264783H-DW低字相减高字借位相减将结果存入RESULT结束DATA2DW4783H,9526HRESULTDW2DUP(?);存放多字减法的结果DATAENDS;数据段结束CODESEGMENT;代码段开始ASSUMECS:CODE,DS:DATASTART:MOVAX,DATA;DATA地址存入DSMOVDS,AXMOVAX,DATA1+2;高八位MOVDX,DATA1;低八位SUBDX,DATA2;低字相减SBBAX,DATA2+2;高字借位相减MOVRESULT+2,AX;存结果MOVRESULT,DXCODEENDS;代码段结束ENDSTART实验流程图:实验程序:DATASEGMENTDATA1DW7123H,7311H,8A13H;表示数据8al73117123hDATA2DW9783H,9526H;表示数据95269783hRESULT2DW3DUP(?);存放多字节减法的结果DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA;DATA地址存在DS中MOVDS,AXMOVAX,DATA1;低字开始8Al73117123H-DW95269783H-DW最低位相减,高位借位相减依次将结果存放结束MOVDX,DATA1+2;高字MOVDX,DATA1+4MOVAX,DATA1MOVDX,DATA1+2SUBAX,DATA2SBBDX,DATA2+2MOVRESULT2,AXMOVRESULT2+2,DXMOVDX,DATA1+4SBBDX,0MOVRESULT2+4,DXCODEENDSENDSTART实验二十进制数的BCD加、减法编程实验一、实验要求和目的1.熟悉BCD码的基本知识2.熟悉汇编语言BCD码多字节加减法基本指令的使用方法;3.掌握BCD码调整指令的使用方法。二﹑实验内容和步骤1﹑实验内容(1)编写程序,实现长度为2字节的缩与非压缩的BCD码相减。(2)编写程序,实现一个长度为3字节2字节的压缩与非压缩的BCD码相减。2﹑实验步骤(1)预习BCD码相加减的基本知识,根据实验内容,画出流程图;(2)利用EDIT或其他编辑软件,编写汇编源程序,取名为“ch2ex3.ASM”、“ch2ex4.ASM”;(3)汇编、连接该源程序,产生“ch2ex3.EXE”、“ch2ex4.EXE”文件;(4)对“ch2ex3.EXE”和“ch2ex4.EXE”文件进行调试运行:利用DEBUG的T命令或G命令和D命令查看数据区的相减结果是否正确。三、试验流程图:开始压缩的BCD码非压缩的BCD码低位相减十进制调整,实现压缩BCD码减法高位借位相减,十进制调整结束四、试验程序:(1)编写程序,实现长度为2字节的缩与非压缩的BCD码相减。DATASEGMENT;数据段BCD1DB34H,18H;压缩的BCD码表示十进制数1834BCD2DB89H,27H;压缩的BCD码表示十进制数2789RESULT1DB2DUP(?);存放压缩的BCD码相减的结果BCD3DB05H,02H;非压缩的BCD码表示十进制数25BCD4DB08H,03H;非压缩的BCD码表示十进制数38RESULT2DB2DUP(?);存放非压缩的BCD码相减的结果DATAENDSCODESEGMENT;代码段开始ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;压缩的BCD码相减计算MOVAL,BCD1;低位相减SUBAL,BCD2DAS;十进制调整,实现压缩BCD码减法MOVRESULT1,ALMOVAL,BCD1+1;高位借位相减SBBAL,BCD2+1DASMOVRESULT1+1,AL;非压缩的BCD码相减计算MOVAL,BCD1SUBAL,BCD2AAS;减法的ASCII调整指令MOVRESULT2,ALMOVAL,BCD1+1SBBAL,BCD2+1AASMOVRESULT2+1,ALCODEENDSENDSTART(2)编写程序,实现一个长度为3字节2字节的压缩与非压缩的BCD码相减。实验流程图:试验程序:DATASEGMENTBCD1DB34H,58H,27H;压缩的BCD码表示十进制数275834BCD2DB89H,27H;压缩的BCD码表示十进制数2789RESULT1DB3DUP(?);存放压缩的BCD码相加的结果RESULT2DB3DUP(?);存放压缩的BCD码相减的结果BCD3DB05H,06H,08H;非压缩的BCD码表示十进制数65BCD4DB08H,03H;非压缩的BCD码表示十进制数38RESULT3DB3DUP(?);存放非压缩的BCD码相加的结果RESULT4DB3DUP(?);存放非压缩的BCD码相减的结果DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:开始275834-BCD12789-BCD2865-BCD338-BCD4开辟空间存放运算结果压缩的BCD码相减计算非压缩的BCD码相减计算存结果结束MOVAX,DATAMOVDS,AX;压缩的BCD码相加计算MOVAL,BCD1ADDAL,BCD2DAAMOVRESULT1,ALMOVAL,BCD1+1ADCAL,BCD2+1DAAMOVRESULT1+1,ALMOVAL,BCD1+2ADCAL,0;最高位产生借位DAAMOVRESULT1+2,AL;压缩的BCD码相减计算MOVAL,BCD1SUBAL,BCD2DASMOVRESULT2,ALMOVAL,BCD1+1SBBAL,BCD2+1DASMOVRESULT2+1,ALMOVAL,BCD1+2SBBAL,0DASMOVRESULT2+2,AL;非压缩的BCD码相加计算MOVAL,BCD3ADDAL,BCD4AAAMOVRESULT3,ALMOVAL,BCD3+1ADCAL,BCD4+1AAAMOVRESULT3+1,ALMOVAL,BCD3+2ADCAL,0AAAMOVRESULT3+2,AL;非压缩的BCD码相减计算MOVAL,BCD3SUBAL,BCD4AASMOVRESULT4,ALMOVAL,BCD3+1SBBAL,BCD4+1AASMOVRESULT4+1,ALMOVAL,BCD3+2SBBAL,0AASMOVRESULT4+2,ALCODEENDSENDSTART实验三二进制乘、除法编程实验(设计性实验)一、实验要求和目的1.熟悉数据的补码表示。2.熟悉无符号数和有符号数乘法和除法指令的使用;3.掌握符号位扩展指令的使用。二、实验内容和步骤1、实验的内容(1)被除数是一个3字长的有符号数,除数是一个1字长的有符号数,求两个数相除的商和余数。(2)求两个2字长的无符号数相乘的结果,并将结果保存在存储空间中。2﹑实验步骤(1)预习二进制乘﹑除法基本知识,根据实验内容,画出流程图;(2)利用EDIT或其他编辑软件,编写汇编源程序,取名为“ch2ex5.ASM”、“ch2ex6.ASM”;(3)汇编、连接该源程序,产生“ch2ex5.EXE”、“ch2ex6.EXE”文件;(4)对“ch2ex5.EXE”和“ch2ex6.EXE”文件进行调试运行:利用DEBUG的T命令或G命令和D命令查看数据区的乘除法结果是否正确。四、实验程序:(1)被除数是一个3字长的有符号数,除数是一个1字长的有符号数,求两个数相除的商和余数。开始8A1153H-IDIVISOR47H-IDIVISORQUOTIENTDB3DUP(0);存放除法结果的商REMAINDERDB0;存放除法结果的余数DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA开辟空间存放运算结果AL-AX/IDIVISOR的商AH-AX/IDIVISOR的余数数据段地址存入DS商存放在QUOTIENT中余数存放在REMAINDER中结束DATASEGMENTIDIVIDENDDB53H,11H,8AH;表示数据8A1153HIDIVISORDB47HQUOTIENTDB3DUP(0);存放除法结果的商REMAINDERDB0;存放除法结果的余数DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA;将DATA地址存入DSMOVDS,AXMOVAL,IDIVIDEND+2;除数最高位CBW;字节转换为字指令IDIVIDIVISOR;带符号数除法指令AL-AX/IDIVISOR的商AH-AX/IDIVISOR的余数MOVQUOTIENT+2,AL;高位商存放在QUOTIENT高位MOVAL,IDIVIDEND+1;除数第二位IDIVIDIVISOR;带符号数除法指令AL-AX/IDIVISOR的商AH-AX/IDIVISOR的余数MOVQUOTIENT+1,ALMOVAL,IDIVIDENDIDIVDIVISOR;带符号数除法指令AL-AX/IDIVISOR的商AH-AX/IDIVISOR的余数MOVQUOTIENT,AL;商存放在QUOTIENT中MOVREMAINDER,AH;余数存放在REMAINDER中CODEENDSENDSTART(2)求两个2字长的无符号数相乘的结果,并将结果保存在存储空间中。DATASEGMENTMULTIPLICANDDW8567H,6214H;表示数据62148567hMULTIPLICATORDW5647H,8451H;表示数据84515647hPRODUCTDW4DUP(0);存放乘法结果的积DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA;DATA地址存入DS开始62148567h-MULTIPLICAND84515647h-MULTIPLICATOR--乘数低位被乘数的高位和低位分别相乘结果相加乘数高位与被乘数分别相乘结果相加并于低位结果相加存结果结束MOVDS,AXMOVAX,MULTIPLICAND;乘数最低位MULMULTIPLICATOR;乘数低位与被乘数低位相乘(DX,AX)←(AX)*(MULTIPLICATOR)两个16数相乘得到32乘积存高16位存放DX中,低16位存放在AX中MOVPRODUCT,AX;低16位乘法结果存入PRODUCT位MOVPRODUCT+2,DX;高16位乘法结果存入PRODUCT+2高位MOVAX,MULTIPLICANDMULMULTIPLICATOR+2;乘数低位与被乘数高位相乘(DX,AX)←(AX)*(MULTIPLICATOR+2)ADDPRODUCT+2,AX;低16位乘法结果存入PRODUCT+2位与低位结果的高位相加ADCPRODUCT+4,DX;高16位乘法结果存入PRODUCT+4位与低位结果的高位进位相加ADCPRODUCT+6,0MOVAX
本文标题:汇编实验
链接地址:https://www.777doc.com/doc-5892534 .html