十六进制数转换成ASCII码,急急急!!!

it1982 2006-12-08 01:11:52
要把一个字节单元中的两位十六进制数字转换成ASCII码,需要先分离这两个数字,即把高4位和低4位分开然后转换成各自的ASCII码。转换时,按0~9和A~F两种不同的情况,采用分支,分别处理,0~9的数字,加30H,而A~F的数字,加37H。
程序如下。
DATA SEGMENT
NUM DB 7CH
STR DB ?,?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
START: MOV AX,DATA
MOV DS,AX ;数据段段址送DS
LEA BX,NUM ;取NUM的偏址,送BX
LEA DI,STR ;取STR的偏址,送DI
MOV AL,[BX]
AND AL,0F0H ;留下高四位
MOV CL,4
STR AL,CL
CALL CHANGE ;调转换成ASCII的子程序
MOV AL,[BX]
AND AL,0FH ;留下低四位
CALL CHANGE ;调转换成ASCII的子程序
MOV AH,4CH
INT 21H
MAIN ENDP
CHANGE PROC ;转换成ASCII的子程序
CMP AL, 10
JL NEXT ;如果(AL)<10,那么(AL)+30H,
ADD AL,’A’-‘0’-10 ;否则(AL)+37H
NEXT: ADD AL,’0’
MOV [DI],AL ;存ASCII码
INC DI ;修改地址指针
RET
CHANGE ENDP
CODE ENDS
END START

看不懂。
请高手帮我解释成C语言代码好吗?或是每句解释一下?
...全文
5540 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyxfly 2006-12-08
  • 打赏
  • 举报
回复
C程序实现??

算法知道了,就没必要管这段汇编了?直接拿c写就好了
it1982 2006-12-08
  • 打赏
  • 举报
回复
谢谢
就是希望有人能帮忙给写出一个完整的C程序实现
大熊猫侯佩 2006-12-08
  • 打赏
  • 举报
回复
你开头不是讲的很清楚么?

要把一个字节单元中的两位十六进制数字转换成ASCII码,需要先分离这两个数字,即把高4位和低4位分开然后转换成各自的ASCII码。转换时,按0~9和A~F两种不同的情况,采用分支,分别处理,0~9的数字,加30H,而A~F的数字,加37H。

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧