- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8086系统汇编语言压缩bcd码与二进制相互转换,bcd码转二进制,二进制转bcd,8421bcd码化成二进制,二进制转8421bcd码,二进制转换成bcd码,二进制转bcdverilog,二进制转换为bcd码,32位二进制转bcd码,二进制转换bcd码
* 微机原理与接口技术小班课 主讲人:XXX 学号201207010618 WARM UP 写入信息: 法一:IN AL , 88H 法二:MOV DX , 0088H IN AX , DX 教材4.7:用两种方法写出从88H端口读入信息的指令,在用两种方法写出从44H端口输入数据56H的指令 读入信息: 法一:MOV AL , 56H OUT 44H , AL 法二:MOV AL , 56H MOV DX , 0044H OUT DX , AL MOV BX , DI LEA BX , [DI] DI→BX MAIN QUESTION 1、逐位调整法 2、DAA指令法 3、除十求余法 4、按权展开法 补充内容:分析将16位二进制数转换为十进制数(BCD码)的可用算法 1、逐位调整法 将 4 位二进制数看作一个十六进制位,再利用十六进制和压缩BCD 码的关系进行转换。具体逻辑为:如果该位大于 9,则该位加 6,同时进位。该方法虽然原理简单,但是由于涉及到进位操作,数据长度增加时,会变得繁琐和复杂。 1、DAA指令法 DAA指令法是利用二进制加法的十进制调整指令 DAA,直接集成了逐位调整法,对在 AL 中的由两个压缩的BCD 码相加的结果进行校正, 产生一个正确的BCD码的和。因此,相对于逐位比较法,使用它可以更好的利用现成的汇编语言逻辑,直接实现将AL中的8位二进制数转换为2位压缩BCD码,逻辑最为简单,语句也最少。但是,应当注意的是,AL本身为 8 位寄存器,而每 4 个二进制位表示一位压缩 BCD 码。因此 AL 的最大值为 99D,该方法只适合于1100100B以下的二进制数对压缩 BCD 码的转换。对于较长数据,可以将其拆成以字节为单位的数据段,再使用DAA 指令法调整。 EXAMPLE: START: MOV AX , DATA MOV DS , AX XOR AL , AL;AL;置零,用来存放累加结果并进行十进制调整 BINBCD:ADD AL , 1;二进制数多大就加几次1,保证AL与二进制数等值 DAA;对AL进行压缩BCD码调整 DEC BINDATA;每执行一次,二进制数BCDDATA减一计数 JNZ BINBCD;不等于就跳转到BINBCD RET START ENDS 3、除十求余法(以题4.22为例) 对于待转换二进制数,由于 BCD 转换后大小不变,因此可假设该数本身就是以十进制在计算机中储存的,这样就将二进制数向 BCD 码的转换转化成十进制向 BCD 码的转换。于是,该数除十后得到的余数即为压缩 BCD 码的个位,再对商求余,得到十位,以此类推。求余的次数取决于转换后压缩 BCD码的位数。但是,取出的余数为非压缩 BCD 码,仍需进行相应调整。而且,求商和余数的操作要依靠二进中商和余数最长为 16 位,因此除十求余法只适用于16位和 16 位以下二进制数向压缩 BCD 码的转换。 4、按权展开法 按权展开法原理简单,是将任何数制转换为十进制表示方式的通用方法,也可将压缩 BCD 码转换为二进制数的方法。但是在二进制向压缩 BCD 码的转换中,要与 DAA 指令法配合操作。而且其涉及大量移位和乘法操作,语句相对复杂。 4.22题:编写一个将16位二进制数转换成BCD码数的程序(除十求余法) NAME WANGYANG DATA SEGMENGT BIN DW FFFFH;定义要转化的数为65535 BCDDAT DB 3DUP(?);转化后的BCD码共5位需要三字节的存放空间 DATA ENDS;数据段定义结束 STACK SEGMENT DB 256DUP(?);分配256字节的堆栈空间 STACK ENDS COOD SEGMENT ASSUME CS:COOD, DS:DATA, SS:STACK;代码段定义 START: PUSH DS;DS数据段入栈保护 MOV AX, DATA;将本程序中的数据段首地址转移到AX MOV DS, AX;将地址转移到数据寄存器 MOV SI, 10;定于被除数10 LEA BX, BCDDATA+2;BX指向转化后的BCD码最低位 MOV CX, 3;定义循环次数为3 BINTOBCD:XOR DX, DX;DX清零,用来存储余数 DIV SI;执行除法运算
文档评论(0)