asic码转16进制c语言,十六进制数转换成ascii码
本文收集整理关于十六进制数转换成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、
ucharBufferIn[NUMBER]={0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef,0x1a,0x1b};//16进制数存放区
ucharBufferOut[2*NUMBER];//ASCII码存放区
//功能:将多字节16进制数转换为ASCII字符
//入口:x:待转换16进制数,x>=0且x<=F
//出口:返回转换完成后的ASCII码字符数据,返回0为失败
ucharGetASCII(uchar x)
{
if(x>0x0f)
{
return 0;
}if(x>9)
{
return (A+x-10);
}
return (0+x);
}
//主程序
voidmain()
{
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
asic码转16进制c语言,十六进制数转换成ascii码相关推荐
- python把浮点数转换成16进制_delphi 浮点数float转换成十六进制字符串的方法(FloatToHex)...
重新书写了float型转为十六进制的delphi程序 Function FloatToHex(Value: single): string; var l, i: integer; HexText,te ...
- php 字符串转化为16进制,php将字符串转换成16进制的方法
php将字符串转换成16进制的方法 本文实例讲述了php将字符串转换成16进制的方法.分享给大家供大家参考.具体分析如下: php中可以通过bin2hex函数将字符串转换成16进制的形式输出,bin2 ...
- MFC中将用户输入的表示16进制数的字符串转换成16进制数输出显示(包含1.wstring转成string的方法函数2.用boost库拆分字符串的函数3.字符转16进制数值的函数)
前期准备: 1.电脑中安装好boost库,我的电脑中安装在C盘根目录下,如下图所示: 2.配置好boost环境变量,如下图所示: 3.开发环境VS2015,工程为MFC应用程序 需要的头文件如下: # ...
- 将16进制unsigned char数组转换成整数
/** * 将unsigned char数组转换成long long数值* {0x00 0x00 0x20 0x00}转换之后得到8192* * @param str 数组 * @param len ...
- 记录遇到的问题之---把16进制的颜色rgb转换成‘#’形式
方法一: function setRgbTo16(str) {let reg = /^(rgb|RGB)/if (!reg.test(str)) {return}var arr = str.sli ...
- C语言输出字符,字符串的ASCII码的16进制数
C语言输出字符,字符串的ASCII码的16进制数 /* file name : test.c cmd code : gcc -o test.exe test.c */ #include<stdi ...
- bcd码和16进制的区别
http://bbs.gongkong.com/D/200707/173493_1.shtml 举个例子:比如对于一个数:0000 0010 0011 1111 其16进制就是:23F 如果转换为BC ...
- ASCII码转16进制 十六进制转ASCII码
ASCII码转16进制 十六进制转ASCII码 //ASCII码转16进制 function strToHexCharCode(str) { if (str === "") { r ...
- c语言 乱码转化为16进制_C语言版的16进制与字符串互转函数
http://www.cnblogs.com/nio-nio/p/3309367.html /* // C prototype : void StrToHex(BYTE *pbDest, BYTE * ...
最新文章
- CloudHub概述
- 项目实战-linux下安装activeMQ
- pwn学习总结(五) —— ret2dl_runtime_resolve(待补充)
- android使用handler记录
- [LeetCode] 143. Reorder List_Middle tag: Linked List
- netbeans基于mysql学生信息_学生信息管理系统的设计与实现(NetBeans IDE,MySQL)
- 决策的五个要素 by 彼得。德鲁克
- 51NOD-1090-3个数和为0
- java 字符串连接_为什么 Java 要把字符串设计成不可变的
- 二分法01:查找一个数
- Android中生成库文件与移除以及导入jar包重复问题
- 基于JavaWeb的房屋出租管理系统设计与实现
- 国务院正式发布《新一代人工智能发展规划》
- 竞赛保研(自动化专业)
- Rayman的绝顶之路——Leetcode每日一题打卡18
- 自己装修总结/商转公
- 大数据专业毕业后职业前景如何?
- [附源码]Python计算机毕业设计高校教室管理系统
- 比字节还小的计算机单位,电脑里,字节是最小单位吗
- node.js+小程序基于微信小程序的校园失物招领系统毕业设计源码072343