资源描述:
《二进制转换成BCD码 实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一、实验目的(1)进一步熟练掌握8086汇编语言编译调试工具和环境的操作;(2)掌握完整8086汇编的程序设计编写方法;(3)掌握简单的数值码制转换方法;(4)掌握键盘输出的DOS功能调用方法。二、实验要求:将AX中的一个二进制数(对应的十进制数范围是0-65535),转换成压缩性BCD码表示的十进制,并从屏幕输出转换结果。要求用减法实现,并比较与除法方法进行运行速度比较。三、实验及报告要求:3.1、简要说明算法,并画出正确的程序流程图;3.2、给出完整正确的源程序代码,要求给每一句伪指令或指令加上注释;3.3、分别在DOS和Windows下编译、连接源程序生成可执行文
2、件并调试,比较两个环境下生成的机器码的长度、寄存器内容、计算结果的异同。3.4、如何观察转换过程中标志寄存器中各标志位的结果?如何观察转换结果的变化?试改变被转换数值,对结果与编制为的变化加以说明和解释。3.5、写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评分的主要依据。3.6、实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法和微机原理学习方法作出总结。四、程序流程图减法。即五位数先循环减10000,直到不够减了,做减法的次数就是万分位的结果;将不够减之前一次的余数恢复,再循环减去1000,直到不够减了,做减法的次数就是千分位的结果
3、;以此类推,最后恢复的正余数就是个位的结果.除法。即五位数先除以10000,得到的商存放万位数的变量上;再将余数除以1000,得到的商存放千位数的变量上;之后将余数除以100,得到的商存放百分位的变量上;以此类推,最后的余数存放在个位的变量上。A、减法结束将余数保存到个位数恢复正余数恢复余数计数器清零Y将数减去100计数值加1将计数器的值保存到百分位够减否N输入二进制数Y将数减去10000计数值加1将计数器的值保存到万分位恢复余数够减否计数器清零零N计数器清零Y将数减去1000计数值加1将计数器的值保存到千分位恢复余数够减否计数器清零NY将数减去10计数值加1将计数器的
4、值保存到十分位够减否NB、除法五、源程序代码A、减法源程序DATASEGMENT;数据段RESULT_1DB0RESULT_2DB0RESULT_3DB0RESULT_4DB0RESULT_5DB0DATAENDSSTACKSEGMENTSTACK;堆栈段STADB64DUP(0);开辟100单元作为堆栈空间STACK_TOPDB0STACKENDSCODESEGMENT;代码段ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AX;设置数据段MOVAX,STACKMOVSS,AX;设置堆栈段LEAS
5、P,STACK_TOP;设置栈顶指针MOVAX,25468MOVCL,0;计数器清零NEXT1:SUBAX,10000;减10000JCOVER1;有借位说明不够减INCCL;否则够减,计数器加1JMPNEXT1;无条件跳转OVER1:ADDAX,10000;最后恢复不够减时AL的余数MOVBX,AXMOVRESULT_1,CLADDCL,30HMOVAH,02MOVDL,CLINT21HMOVCL,0MOVAX,BXNEXT2:SUBAX,1000;减1000JCOVER2;有借位说明不够减INCCL;否则够减,计数器加1JMPNEXT2;无条件跳转OVER2:ADD
6、AX,1000;最后恢复不够减时AL的余数MOVBX,AXMOVRESULT_2,CLADDCL,30HMOVAH,02MOVDL,CLINT21HMOVCL,0MOVAX,BXNEXT3:SUBAX,100;减100JCOVER3;有借位说明不够减INCCL;否则够减,计数器加1JMPNEXT3;无条件跳转OVER3:ADDAX,100;最后恢复不够减时AL的余数MOVBX,AXMOVRESULT_3,CLADDCL,30HMOVAH,02MOVDL,CLINT21HMOVCL,0MOVAX,BXMOVCL,0;计数器清零NEXT4:SUBAL,10;减10JCOVE
7、R4;有借位说明不够减INCCL;否则够减,计数器加1JMPNEXT4;无条件跳转OVER4:ADDAL,10;最后恢复不够减时AL的余数MOVBL,ALMOVRESULT_4,CLADDCL,30HMOVAH,02MOVDL,CLINT21HMOVCL,0MOVAX,BXMOVRESULT_5,ALADDAL,30HMOVAH,02MOVDL,ALINT21HMOVAX,4C00H;返回DOS(两句)INT21H;CODEENDSENDSTART;最后一行要按回车键B、除法源程序DATASEGMENT;数据段RESULT_1DB1;结果