当前位置: 首页 > article >正文

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

如何对一位十六进制的数字,将之转换为ASCII码?
需要提前熟悉的一些指令:
数据传送:MOV指令
位操作:SHR
十进制调整指令DAA
加法指令 ADC ADD

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

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

方案一:

;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

方案二:

;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

http://www.kler.cn/a/396067.html

相关文章:

  • 深入理解 source 和 sh、bash 的区别
  • LC12:双指针
  • 释放高级功能:Nexusflows Athene-V2-Agent在工具使用和代理用例方面超越 GPT-4o
  • 【C语言】实现二维数组按列排序
  • 针对gitgitee的使用
  • 怎么样绑定域名到AWS(亚马逊云)服务器
  • 超越传统:探索ONLYOFFICE的革命性办公新纪元
  • 【大模型】prompt实践总结
  • Android setTheme设置透明主题无效
  • ⾃动化运维利器Ansible-基础
  • 如何修改npm包
  • [基础] 003 使用github提交作业
  • 【原创】如何备份和还原Ubuntu系统,非常详细!!
  • LabVIEW中坐标排序与旋转 参见附件snippet程序
  • flink cdc 应用
  • 深度解析 Feign
  • Pytorch无法使用GPU的问题的原因
  • 推荐一款全能网络视频下载工具:闪豆视频下载器
  • 【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-最大的数
  • 我手搓了个“自动生成标书”的开源大模型工具
  • 物联网低功耗广域网LoRa开发(三):Lora人机界面
  • 使用阿里云快速搭建 DataLight 平台
  • C++如何调用Python脚本
  • 24/11/14 算法笔记<强化学习> 马尔可夫
  • PaddlePaddle 开源产业级文档印章识别PaddleX-Pipeline “seal_recognition”模型 开箱即用篇(一)
  • <项目代码>YOLOv8 瞳孔识别<目标检测>