汇编案例 之 HEX到ASCII码的转换

如何对一位十六进制的数字,将之转换为ASCII码?

需要提前熟悉的一些指令:

数据传送:MOV指令

位操作:SHR

十进制调整指令DAA

加法指令 ADC ADD

将 DL中的2位16进制数,分别转换为ASCII码,存入BH,BL。 (16进制数默认大写存储)

例:DL = 6AH => BH = 36H, BL = 41H

方案一:

assembly 复制代码
;th:数H => A => 
 
MOV dl ,6AH
;高位
MOV AL,DL  ; AL = 高低H
MOV CL,4   ;
SHR AL,CL  ; 两位H数右移1位,左边补0 ,即0高H  
ADD AL,00H
DAA       ; 
;通过AF标志位,判定是否多加一
LAHF         
AND AH,10H    
SHR AH,CL  
ADD AL,AH
DAA      

ADD AL,30H ;
DAA         ;高H 转换完成 
MOV BH,AL   ;存到BH

;低位类似操作
MOV AL,DL  
AND AL,0FH  ;保留低位数 即0低H   
ADD AL,00H
DAA  

LAHF 
AND AH,10H    
SHR AH,CL  
ADD AL,AH
DAA      

ADD AL,30H ;
DAA         ;低H 转换完成 
MOV BL,AL   ;存到BL
HLT

方案二:

assembly 复制代码
;th: 0 - 30H , A - 41H 
 
MOV DL ,6Ah

MOV AL,DL  ; AL = 高低H
MOV CL,4   ;
SHR AL,CL  ; 两位H数右移1位,左边补0 ,即0高H
ADD AL,90H ; 9高H
DAA        ;
ADC AL,40H ;
DAA         ;高H 转换完成 
MOV BH,AL   ;存到BH

MOV AL,DL  
AND AL,0FH  ;保留低位数 即0低H
ADD AL,90H
DAA
ADC AL,40H ;
DAA         ;低H 转换完成 
MOV BL,AL   ;存到BL
HLT
相关推荐
Ronin-Lotus12 天前
微处理器原理与应用篇---ARM常见汇编指令
汇编·arm开发·微处理原理与应用
永夜的黎明15 天前
【二进制安全作业】250616课上作业1-栈溢出漏洞利用
c语言·汇编·安全
Geometry Fu17 天前
物联网控制技术 知识点总结 第三章 汇编语言 第四章 C51语言
汇编·物联网·51单片机
半桔17 天前
【Linux手册】进程的状态:从创建到消亡的“生命百态”
linux·运维·服务器·汇编·深度学习·面试
一条叫做nemo的鱼20 天前
从汇编的角度揭开C++ this指针的神秘面纱(下)
java·汇编·c++·函数调用·参数传递
一条叫做nemo的鱼21 天前
从汇编的角度揭开C++ this指针的神秘面纱(上)
汇编·c++·算法·函数调用·this指针·参数传递
qwertyuiop_i23 天前
汇编(函数调用)
汇编·windows·函数调用
不忘不弃23 天前
由汇编代码确定switch语句
汇编
南玖yy23 天前
深入理解 x86 汇编中的符号扩展指令:从 CBW 到 CDQ 的全解析
开发语言·汇编·arm开发·后端·架构·策略模式
iCxhust23 天前
汇编字符串比较函数
c语言·开发语言·汇编·单片机·嵌入式硬件