问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求单片机汇编语言怎样编程才能实现将一个十六进制数转换为十进制数

发布网友 发布时间:2022-05-06 18:55

我来回答

5个回答

热心网友 时间:2023-09-11 08:16

看你的十六进制数是几个字节的,
如果是单字节,则作两次除法:先除以100,商即百位数;再用余数除以10,商即十位数,余数为个位数;
如果是≥2字节,以上的运算则显得过于占用程序处理时间,要用到移位运算,设置数据寄存器区(2字节十六进制数则需4个寄存器区和一个循环计数器),每左移一位后进行数据调节:(以下给出一个样例程序,PIC中档单片机的汇编程序)
;###############################################
; 双字节16进制数据转换为5位BCD码数据程序
;###############################################
; Performance :
; Program Memory : 35
; Clock Cycles : 885
;
;**********************************
;源数据放在R0(L),R1(H)中
;输出数据放入R2(L),R3(M),R4(H)中
;R7: 循环次数计数器(VALUE=16)
;R5: 中间数据寄存器
;FSR
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
HEX16TOBCD:
BCF STATUS,C
MOVLW .16
MOVWF R7
CLRF R2
CLRF R3
CLRF R4
HEX16TOBCD_1:
RLF R0
RLF R1
RLF R2
RLF R3
RLF R4
DECFSZ R7
GOTO ADJ_DEC
RETURN
ADJ_DEC:
MOVLW R2
MOVWF FSR
CALL ADJ_BCD
MOVLW R3
MOVWF FSR
CALL ADJ_BCD
MOVLW R4
MOVWF FSR
CALL ADJ_BCD
GOTO HEX16TOBCD_1
;***************************
ADJ_BCD:
MOVLW 3
ADDWF INDF,W
MOVWF R5
BTFSC R5,3 ; test if result > 7
MOVWF INDF
MOVLW 30
ADDWF INDF,W
MOVWF R5
BTFSC R5,7 ; test if result > 7
MOVWF INDF ; save as MSD
RETURN

热心网友 时间:2023-09-11 08:17

程序经过仿真调试通过,如下所示:
MOV R0, TL0
MOV R1, TH0
CLR A
MOV R2, A;先清零
MOV R3, A
MOV R4, A,
MOV R5, #16;共转换十六位数
LOOP:
CLR C
MOV A, R0;从待转换数的高端移出一位到Cy
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
MOV A, R4;送到BCD码的低端
ADDC A, R4;带进位加。自身相加,相当于左移一位
DA A ;十进制调整,变成BCD码
MOV R4, A
MOV A, R3
ADDC A, R3
DA A
MOV R3, A
MOV A, R2
ADDC A, R2
MOV R2, A
DJNZ R5, LOOP;共转换十六位数
;-------至此,已经把TH1 TL1中的数字,转换成BCD码,送到了R2 R3 R4。
;-------下面,分别存入R4 R3 R2 R1 R0。
MOV A, R4
MOV B, #16
DIV AB
MOV R1, A
MOV R0, B

MOV A, R2
MOV R4, A

MOV A, R3
MOV B, #16
DIV AB
MOV R3, A
MOV R2, B
RET
希望对你有所帮助!

热心网友 时间:2023-09-11 08:17

用除法
例如 0xFF 转换成十进制数,百位十位个位分别存在R1、R2、R3中
在51单片机中寄存器A中的数除以寄存器B中的数,商存在A,余数存在B

MOV A,#0FFH
MOV B,#100
MUL A,B
MOV R1,A //存百位
MOV B,A
MOV B,#10
MUL A,B
MOV R2,A //存十位
MOV R3,B //存个位

热心网友 时间:2023-09-11 08:18

你确定你要的是十六进制转换成十进制的程序?不是二进制转成十进制的吗?单片机中的数据可都是二进制的,只是通常用十六进制表示罢了,我以前也犯过这个错误

热心网友 时间:2023-09-11 08:19

mov r6,#00h;存转化后的数的低位
mov r5,#00h;存转化后的数的高位
mov r7,#0ffh;为要转化的
mov a,r7
cjne a,#00h,loop;判断要转化的数是否为0
ajmp loop1
loop;mov a,r6
add a,#01h
da a
mov r6,a
addc a,#00h
da a
mov r5,a
djnz r7,loop
loop1:sjmp $
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请问夏龙通信客服是多少? 药房人员不保销药品代替报销药品申请怎么写 水族是少数民族吗水族的介绍 2013年高考,成绩总是徘徊350左右(文),六科没有自己的优势,只想上二本线... ...年农历4月28日午时出生,我想测一下八字是什么样的? excel2007只显示公式无法显示结果的解决方案 excel2007公式不计算的解决方法 中山大学的结构工程 为专业学位研究生吗 关于建筑工程的专硕学科有哪些 酷睿2e4500配多大的内存最合适 洗衣机槽清洗剂使用后,洗出来的衣服上依旧黏着黑色的脏东西,怎么办?家里的洗衣机才用了不到2年啊…… 洗衣机槽清洗剂使用后,洗出来的衣服上依旧黏着黑色的脏东西,怎么办?家里的洗衣机才用了不到2年啊…… 全自动洗衣机洗衣悬浮的脏物会粘在衣服上怎么办? 民生山西原注册手机已不用收不住验证码怎么登录? 哪个大师帮看一下我们的生辰八字合不合 我想知道我跟老公的生辰八字合不合? 网络拍卖特殊情况应急方案 被动防护网应急演练方案 富人的赚钱方式和思维方式 大家说:到底是穷人在存钱,还是富人在存钱 有钱人最爱投资什么 银行理财产品,股票和基金 有钱人一般投资哪些领域? 中国富人分布图的理财渠道 我想知道那些大富豪怎么理财,譬如一个人有10个亿,那他把钱放在余额宝里每天利息都有10万。我知道余 快速治疗痔疮有什么方法吗? 有钱做什么投资好有钱人都投资什么? 电商ABC平台有哪些 我想做一个代理商,电商方面的。 目前思考的主要有 360公司的搜索业务 阿里巴巴b2b业务 慧聪网 在当前经济形势下,富人的被动收入主要来自于哪些方面呢? 互联网电商平台拿代理对接商家的管道收入合法吗? 小黄鸭洗衣机洗了和墨水一样粘在衣服上面是什么情况 0xffdd30转化为十进制是多少 洗衣机洗完衣服为什么有些衣服上面粘有毛毛? 预留手机号接收不到民生银行短信? 有懂生辰八字的吗,想查合不合? 麻烦那位大师看下生辰八字合不合,后代怎么样? 两个人在一起如果生辰八字不合该怎么化解?有没有办法? 胡夏的那些年歌词是什么? 求一首歌,歌词是“那一年我们错过的大雨,,,”是酱紫吗? 找一首歌,歌词是:那些年Xx的Xx,那些年Xx的Xx 那些年错过的大雨现在全部还给你。下一句该怎么接呢? 为什么打哈气的时候或是犯困的时候,都爱流眼泪呢? 人为什么犯困时就会流眼泪和鼻涕谢谢了,大神帮忙啊 为什么人犯困打瞌睡的时候会流眼泪捏(⊙о⊙)? 我的眼睛总是犯困流眼泪,请问可以用黄睛灵吗? 有时人没有休息好会很疲倦 不停的打瞌睡,流眼泪,疲倦过了那个大度好像又不怎么疲倦了,变得精神了,哈 工作时候爱犯困 流眼泪是怎么回事?自己控制不住 每天八小时睡眠 sql2000中怎样从数据库中把一张表中把部分数据导出到另一个数据库中的表中 如何在word输入方程组每个方程后面的①,②序号 word在公式编辑器中输入①②等符号