十六进制数转换成ascii码

生活 2019-07-23 17:45:25 1143

本文收集整理关于十六进制数转换成ascii码的相关议题,使用内容导航快速到达。

内容导航:

  • Q1:一个十六进制数转换成ASCII码的单片机程序
  • Q2:如何用汇编语言把十六进制数1A5F转换成ascii码并显示在屏幕上
  • Q3:51单片机 十六进制数与ASCII码间的转换求详解
  • Q4:怎么用单片机编写一段程序将若干十六进制数转换为ASCII码?
  • Q1:一个十六进制数转换成ASCII码的单片机程序

    HASC:MOVA,R0;从R0中取一个16进制(二进制)数(0-F)
    ANLA,#0FH;屏蔽掉高4位
    PUSHACC;4位二进制数入栈
    CLRC;清进(借)位位
    SUBBA,#0AH
    POPACC
    JCLOOP
    ADDA,#07H
    LOOP:ADDA,#30H
    MOVR2,A
    RET
    实验结果:R0中的十六进制数(比如A),转换为ASCII码(41H)送入R2中。刚才回答了,没有了吗?

    Q2:如何用汇编语言把十六进制数1A5F转换成ascii码并显示在屏幕上

    刚好我写了一个,调试都通过可以执行的,。
    .386、.model flat,stdcall
    option casemap:none
    include windows.inc
    include user32.inc
    include kernel32.inc
    includelib user32.lib
    includelib kernel32.lib
    .data
    szCaption db convert num to srting,0
    szResult db 6 dup(0)
    .code
    _Translate proc para1:DWORD,para2:DWORD ;定义子函数,para1变量用来放传入的数组,para2用于放编程ASIC后的字符数组 LOCAL _iNum;定义零时变量,用于放被除数
    LOCAL _iTemp;定义零时变量,用于存放除数
    LOCAL _szTemp[265]:BYTE
    mov eax,para1;;获取参数para1的值eax寄存器
    mov _iNum,eax;将eax中的值放入零时变量_iNum
    mov _iTemp,10H
    lea ebx,_szTemp
    xor ecx,ecx
    .while _iNum;当被除数不为0时,就一直循环
    xor edx,edx
    mov eax,_iNum ;将被除数放入eax寄存器中
    div _iTemp ;寄存器eax中的值除以_iTemp,商放入eax中,余数放入dl中
    mov _iNum,eax
    .if dl>9H ;当余数大于9时,就转化为相对应的英文字母的ASIC的值
    add dl,37H
    .else
    add dl,30H
    .endif
    mov byte ptr [ebx],dl;把变化后的值放入ebx寄存器中
    inc ebx
    inc ecx
    .endw
    mov eax,para2 ;将参数para2的地址传给eax寄存器,再讲ecx中的值倒序存入eax寄存器中
    mov byte ptr [eax+ecx],0
    lea ebx,_szTemp
    .repeat
    mov dl,byte ptr [ebx]
    mov byte ptr [eax+ecx-1],dl
    inc ebx
    .untilcxz ;一直循环,直到cx的值=0,每次循环后ecx的值-1、
    ret
    _Translate endp
    start:
    mov eax,1A5FH ;修改这里的数,就能把任意16进制的数转化为ASIC码了
    invoke _Translate,eax,offset szResult
    invoke MessageBox,NULL,offset szResult,offset szCaption,MB_OK
    invoke ExitProcess,0
    end start

    Q3:51单片机 十六进制数与ASCII码间的转换求详解

    这程序的功能就是把一字节十六进制数的低4位转换为一个ASCII码。例如0x0E转换为E、0x08转换为8。
    我估计你就是对内码不太熟悉吧。
    你翻一下ASCII码的内码表,再对照这程序看看,应该就能明白了。
    很好懂的。

    Q4:怎么用单片机编写一段程序将若干十六进制数转换为ASCII码?

    不知你要的是C语言的还是汇编的,都给你吧
    C语言的:
    #include
    typedef unsigned char uchar;
    #define NUMBER10、
    uchar BufferIn[NUMBER]={0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef,0x1a,0x1b};//16进制数存放区
    uchar BufferOut[2*NUMBER]; //ASCII码存放区
    ////////////////////////////////////////////////////////////////
    //功能:将多字节16进制数转换为ASCII字符
    //入口:x:待转换16进制数,x>=0且x<=F
    //出口:返回转换完成后的ASCII码字符数据,返回0为失败
    ////////////////////////////////////////////////////////////////
    uchar GetASCII(uchar x)
    {
    if(x>0x0f)
    {
    return 0;
    } if(x>9)
    {
    return (A+x-10);
    }
    return (0+x);
    }
    ////////////////////////////////////////////////////////////////
    //主程序
    ////////////////////////////////////////////////////////////////
    void main()
    {
    uchar i;
    for(i=0;i {
    BufferOut[i*2] = GetASCII(BufferIn[i]/0x10);
    BufferOut[i*2+1] = GetASCII(BufferIn[i]%0x10);
    }
    while(1);
    }
    汇编的:
    ;说明:LOOP1循环为预设10个16进制数内容的初始化程序,作为示例
    ORG0000H
    LJMPSTART
    ORG0100H
    START:MOVR2,#10;预置10个16进制数
    MOVR0,#20H;16进制数存放起始地址
    MOVA,#12H
    LOOP1:MOV@R0,A
    ADDA,#13H
    INCR0
    DJNZR2,LOOP1;循环10次送10个数
    ;以上至START为初始化内存,预送10个字节的数据
    MOVR0,#20H;16进制数存放起始地址
    MOVR1,#30H;ASCII数存放起始地址
    MOVR2,#10;转换10个字节
    LCALLHEXTOASC;调用转换子程序
    JMP$
    ;=======================================================
    ;HEXTOASC:将多字节16进制数转换为ASCII字符子程序
    ;入口:(R0)=16进制数存放起始地址指针
    ;(R2)=字节数
    ;出口:(R1)=转换完成后的ASC字符存放起始地址指针
    ;算法说明:0~9:(ASCII码为30H~39H)+90H后调整后无变化,结果
    ;为9xH,再加40H为0DxH,调整操作+60H后正好为3xH;
    ;A~F:(ASCII为41H~46H),+90H后为9xH,调整操作+06H后
    ;为01H~06H,再加40H调整后不变,正好为41H~46H;
    ;=======================================================
    HEXTOASC:
    MOVA,@R0
    SWAPA
    ANLA,#0FH;处理高4位
    ADDA,#90H
    DAA
    ADDCA,#40H
    DAA
    MOV@R1,A;保存高4位
    INCR1、MOVA,@R0
    ANLA,#0FH;处理低4位
    ADDA,#90H
    DAA
    ADDCA,#40H
    DAA
    MOV@R1,A;保存低4位
    INCR1;下一个16进制数
    INCR0
    DJNZR2,HEXTOASC
    RET
    END

    相关文章
    吉他如何快速转换和弦2019-01-23
    将文本格式转换为数字2019-01-27
    电脑pdf怎么转换成word2019-02-01
    繁体字转换器在线转换2019-02-02
    负数的二进制怎么转换为十进制2019-02-03
    word文档文字转换表格2019-02-06
    excel表格怎么转换日期2019-02-10
    word怎么转换excel表格2019-02-10
    域名与ip地址通过什么服务器转换2019-02-12
    如何把word转换成excel2019-02-13