找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3646|回复: 10
打印 上一主题 下一主题
收起左侧

求一个汇编程序,如何将单字节16进制数00-FF转为3个字节的ASCII码保存在不同地址

[复制链接]
跳转到指定楼层
楼主
ID:421538 发表于 2018-11-7 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何将单字节16进制数00-FF转为3个字节的ASCII码,保存在地址10H,11H,12H三个地址中(按格式000-255占3个字节)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:401564 发表于 2018-11-8 00:10 | 只看该作者
你这个问题有问题,比如说,我有一个16进制的的数:50,它是存放在一个的16位的地址中,那问题来了:所谓"转换成3个字节的ASCII码"什么意思,50的ASCII是"2",那我是要转换成"002"还是"050",我怎么放到你说的这三个地址中??
你干脆说你要干嘛就得了
回复

使用道具 举报

板凳
ID:111634 发表于 2018-11-8 09:00 | 只看该作者
这是老师布置的习题,答案书上有的。介绍你2本书,张志良编著的《单片机原理与控制技术——双解汇编和C51》第3版ISBN 978-7-111-42393-5机械工业出版社。《单片机学习指导及习题解答——双解汇编和C51》第2版ISBN 978-7-111-42431-4机械工业出版社。后书是前书的配套教材,但也可单独使用。
回复

使用道具 举报

地板
ID:421538 发表于 2018-11-8 09:16 | 只看该作者
我想让一个16进制递增或递减,然后通过串口发送,串口发送的是5个字节:41 31 35 37 56,字符串就是A157V,比如16进制数80H,对应的十进制是128,ASCC的3字节表示是31H,32H,38H,怎么把16进制的数80H变为3个字节31H,32H,38H
回复

使用道具 举报

5#
ID:401564 发表于 2018-11-8 10:30 | 只看该作者
你直接说128变成"1","2","8",再转换成"1","2","8"对应的ASCII码发送不就好了.
一,先把128除以100,得到百位1,余数就是28,再除以10,得到十位2,余数就是8了,分别放到三个地址,就是"1","2","8"了
二,把这个值再加10进制的48就可以了,因为,ASCII码的0是48,之后都是连续的数,直接运算就可以了
比如: f是102,分解出来就是"1","0","2",一样的处理就可以了
回复

使用道具 举报

6#
ID:387733 发表于 2018-11-8 10:45 | 只看该作者
汇编程序,16进制数存放 bin,  ascii 百位 bai, 十位 shi, 个位 ge:

                        MOV      A,bin        ; 16进制数
                        MOV      B,#100
                        DIV       AB
                        ADD      A,#0x30
                        MOV      bai,A       ;百位

                        MOV      A,B
                        MOV      B,#10
                        DIV       AB
                        ADD      A,#0x30
                        MOV      shi,A           ; 十位

                        MOV      A,B
                        ADD      A,#0x30
                        MOV     ge,A           ; 个位

C程序语句:

        bai = bin/100 +0x30;
        shi = bin%100/10 +0x30;
        ge  = bin%10 +0x30;
回复

使用道具 举报

7#
ID:421538 发表于 2018-11-8 11:46 | 只看该作者
非常谢谢sxhwdz ,按你的已经编译通过
回复

使用道具 举报

8#
ID:421538 发表于 2018-11-8 11:49 | 只看该作者
非常感谢大家的帮助
回复

使用道具 举报

9#
ID:123289 发表于 2018-11-8 13:24 | 只看该作者
;格式转换类BIN→BCD----
BINTOBCDA1:     DB      00H, 16H, 32H, 48H, 64H, 80H, 96H, 12H
;BINTOBCDA.ASM:单字节BIN→BCD,A→A。(A.7自动去除,低7位<100)
;影响:PSW,A,B。
BINTOBCDA:      PUSH    DPH
                PUSH    DPL
                PUSH    ACC
                SWAP    A
                ANL     A, #C_07H
                MOV     DPTR, #BINTOBCDA1
                MOVC    A, @A+DPTR
                MOV     DPL, A
                POP     ACC
                ANL     A, #C_0FH
                ADD     A, #0
                DA      A
                ADD     A, DPL
                DA      A
                POP     DPL
                POP     DPH
                RET     
;A_TOBCD_BA.ASM:单字节BIN→BCD,A→BA。
;影响:PSW,A,B。
A_TOBCD_BA:     PUSH    ACC
                ANL     A, #C_3FH
                CALL    BINTOBCDA                   ;先处理低6位<64
;再处理高二位
                POP     B
                ANL     B, #11000000B               ;只留两个可能产生>99的位
                JBC     B.6, A_BCD_BA1              ;需要+64
                JMP     A_BCD_BA2
;B.6=1则BA+64
A_BCD_BA1:      ADD     A, #C_64H
                DA      A
                JNC     A_BCD_BA2
                INC     B                           ;进位到百
A_BCD_BA2:      JBC     B.7, A_BCD_BA3              ;需要+128
                JMP     A_BCD_BA4
;B.7=1则BA+128
A_BCD_BA3:      ADD     A, #C_28H
                DA      A
                XCH     A, B                        ;百位交换到A
                ADDC    A, #C_1                     ;百位+100并带进位
                XCH     A, B                        ;百位换回
A_BCD_BA4:      RET     
回复

使用道具 举报

10#
ID:123289 发表于 2018-11-8 13:26 | 只看该作者
需要你增加定义:
C_XX
回复

使用道具 举报

11#
ID:123289 发表于 2018-11-8 13:28 | 只看该作者
需要你增加定义:
C_??      EQU     ??      ;??是数字。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表