汇编案例 之 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
相关推荐
浩浩测试一下2 天前
汇编 call与ret 函数与堆栈 (逆向分析)
汇编·push·函数·pop·call·ret·堆栈逆向
山屿落星辰2 天前
昇腾NPU算子开发:从“手写汇编“到“搭积木“
汇编
浩浩测试一下2 天前
汇编 汇编寻址 (逆向分析)
汇编·寻址·windows编程·二进制逆向·机器码
浩浩测试一下2 天前
汇编 位运算 (逆向分析)
汇编·逆向·位运算·asm·windows编程·二进制逆向
浩浩测试一下3 天前
汇编 高低八位寄存器数据存储方式(逆向分析)
汇编·网络安全·逆向·二进制·免杀·寄存器·windows编程
iCxhust3 天前
从裸机到微内核:8088单板机微型操作系统规划设计
操作系统·课程设计·微机原理·8086最小系统·8088单板机
a83331963 天前
C语言嵌入汇编详解
汇编·单片机·语言
yoyo_zzm4 天前
汇编到PHP:五大编程语言核心特性全解析
开发语言·汇编·php
ComputerInBook6 天前
X64 汇编 MOVSD 的两种用法
汇编·汇编指令·movsd
iCxhust6 天前
8088单板机DIY---机体激活,聆听另一个世界的声音(三)
单片机·嵌入式硬件·微机原理·8088单板机