把一位16进制数转化为对应的ASCII码。

功能:把1位16进制数转换为对应的ASCII码入口参数:al的低4位为要转换的16进制数出口参数:al含对应的ASCII码htoascprocandal,0fhaddal... 功能:把1位16进制数转换为对应的ASCII码
入口参数:al的低4位为要转换的16进制数
出口参数:al含对应的ASCII码
htoasc proc
and al,0fh
add al,90h ------->从这里起后面的不懂,给解释下。
daa
adc al,40h
daa
ret
htoasc endp
展开
 我来答
栗慈N9
2011-01-26
知道答主
回答量:8
采纳率:0%
帮助的人:7.4万
展开全部
补充:之前第一段话说的有问题,所以修改了下,如下:(另外提交的时候没注意,第一个兄弟的回答已经是正确的了^_^)
主要思想是0~9转为对应的ASCII码时加30h,而a,b,c,d,e,f则加37h,比30h多出来的7h就是通过adc(多加了CF的01h)以及daa(多加了06h)实现的。

先说对0~9的,以5为例,
and al,0fh
add al,90h
变为95h
daa
这个时候的daa,由于95h低位,高位都小于9,且无进位,所以不变
adc al,40h
95h + 40h + CF = D5h
daa
低位不变,高位大于9,所以加60h,变为35h,且CF = 1
最终结果为35h,即字符5对应的ascii码53.

然后是A~F,以C为例:
and al,0fh
add al,90h
变为9Ch
daa
这个时候的daa,先看低位,由于低位是C,大于9,所以加06h,结果变为A2h,再看高位,高位A,大于9,所以加60h,变为02h,CF = 1(有进位)

adc al,40h
adc操作,02h + 40h + CF = 43h
daa
此时43h低高位都小于9,所以无变化。最后结果43h,也即C的ASCII码67
ziyang64
2011-01-25 · TA获得超过962个赞
知道小有建树答主
回答量:529
采纳率:0%
帮助的人:814万
展开全部
这段程序的难点就是DAA的作用:
如果AL的低4位大于9或AF=1,则AL的内容加06H,并将AF置1;然后如果AL的高4位大于9或CF=1,则AL的内容加60H,且将CF置1。如果两个都不满足,则将AF,CF清零。

1. 如果al的值是0-9,那么:
add al,90h ---------al变成90-99H
daa ---------al不变
adc al,40h ---------al为d0-d9
daa ---------al加上60H,变成30-39H,正是0-9的ASCII码。
2. 如果al的值是A-F,那么:
add al,90h ---------al变成9A-9FH
daa ---------al加6,高4位变A,所以再加60H,成00-05,且CF=1
adc al,40h ---------al为41-46H,正是A-F的ASCII码。
daa ---------al不变
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_fmlyht
2011-01-25 · TA获得超过2359个赞
知道大有可为答主
回答量:2398
采纳率:0%
帮助的人:1841万
展开全部
理解DAA的操作,就不难明白
以下截取自INTEL手册,应该已经很清楚了,无需更多描述

old_AL <- AL;
old_CF <- CF;
CF <- 0;
IF (((AL AND 0FH) > 9) or AF <- 1)
THEN
AL <- AL + 6;
CF <- old_CF or (Carry from AL <- AL + 6);
AF <- 1;
ELSE
AF <- 0;
FI;
IF ((old_AL > 99H) or (old_CF = 1))
THEN
AL <- AL + 60H;
CF <- 1;
ELSE
CF <- 0;
FI;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2022-04-04 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部

16 进制 0~9:加上 48,即转换成为 ‘0’~‘9’。

16 进制 A~F:加上 55,即转换成为 ‘A’~‘F’。

为了实现转换,下面的程序,是最简单的了:

  CMP AL, 10

  JC J_48

  ADD AL, 7

J_48: ADD AL, 48

  RET

楼主给出的程序,也能实现转换。

但是,需要多理解一条指令(DAA),编程思路就太麻烦了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wlwz009
2011-01-25
知道答主
回答量:15
采纳率:0%
帮助的人:4.8万
展开全部
这是什么语言代码?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式