关于bcd码和十六进制数的区别.doc_第1页
关于bcd码和十六进制数的区别.doc_第2页
全文预览已结束

下载本文档

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

文档简介

关于MCS-51单片机是如何将单字节二进制数转化为BCD码的问题 悬赏分:20 | 解决时间:2010-5-5 15:15 | 提问者:匿名 程序如下:BINBCD:MOV B, #100 (100作为除数送入B中) DIV AB (十六进制数除以100) MOV R3, A (百位数送r3,余数放入B中) MOV A, #10 (分离十位数与个位数) XCH A,B (余数放入A中,除数放入B中) DIV AB (分离出十位在A中,个位在B中) SWAP A (十位数交换到A的高4位) ADD A,B (十位数与个位数相加送入 A中) END1 请问这个程序求解的思路是什么?2 该程序的第二句DIV AB的解释是十六进制数除以100,可是A中应该存放的是一个八位的二进制数,这是怎么回事?3 最后为什么要十位数与个位数相加,不是要分离十位数与个位数吗?最佳答案 乘除法的时候可以不考虑进制的,比如说 #0FFH这个十六进制数 存放于A中,#100这个十进制数放于B中 然后DIV AB 这时 A等于#02H B等于#37H等于55在然后 假设A中的数为 FFHBINBCD:MOV B, #100 (B=100,十进制100,)DIV AB (A等于#02H,B等于#37H等于55)MOV R3, A (A=02H)MOV A, #10 (A=10=0AH,B=55=37H)XCH A,B (A=55=37H, B=10=0AH)DIV AB (A=05H=5 , B=5=05H)SWAP A (A=50H,B=05H)ADD A,B (A=55H,这时十位各位的BCD吗已经求出来了,将 37H=55转换为55HEND1 请问这个程序求解的思路是什么?思路就是对一个数求模和求于来分离百位十位和个位例如168168/100=1余6868/10=6余88/1=8余0这样就分离了百位十位和个位2 该程序的第二句DIV AB的解释是十六进制数除以100,可是A中应该存放的是一个八位的二进制数,这是怎么回事?这个是你没理解cpu存数据的方式,A中存放的其实归根结底说是二进制数,机器只认识二进制数,对这段程序编译之后我们输入的十进制100也变成二进制数了,我们通常说十六进制数是因为十六进制数和二进制数有位上的对应关系,比如1100 0110B=C6H 也就是说二进制数每4位一段各自写成十六进制数就把二进制转换成十六进制了,3 最后为什么要十位数与个位数相加,不是要分离十位数与个位数吗?我想如果你清楚BCD码的含义你就明白了BCD码就是用十六进制数来表示十进制的数例如:45H是等于十进制的69的,但如果你说他是BCD码他就代表十进制数45 这样你就会发现不是每个十六进制数都是BCD码的,例如AAH就不是BCD码,因为没有AA这样的十进制数我最后总结一下,就是我们所说的十进制数也好十六进制数也好,归根到底机器都是要把他变为二进制数的,机器也只认识二进制数,这样你就好理解了,我们不会处理不同进制数之间的运算,运算时必须要把他转换同进制的数,

温馨提示

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

评论

0/150

提交评论