ax中16进制转成10进制输出
首页我的主页相册广场游戏昵称搜索
消息 私信
设置退出关注此空间
我不懂
学如逆水行舟,不进则退,心如平川放马,易放难收 2009-05-15 12:32 汇编:把寄存器AX的十六进制数转换成十进制形式输出(转)
比如ax=7bh 则输出字符123。
原理:
ax为十六位寄存器,所以输出十进制数范围为0 - 65535,最大五位数,有如下算
法:
65535/10000= 商6 余数5535
5535/1000= 商5 余数535
535/100= 商5 余数35
35/10= 商3 余数5
5/1= 商5 余数0
把每次所得商加上48即可得到相应数字的ASCII码 LOOP指令:
(CX)=(CX)-1或(ECX)=(ECX)-1;
如果(CX)?0或(ECX)?0,转向“标号”所指向的指令,否则,终止循环,执行该指令
下面的指令。
程序
:
data segment
divisors DW 10000, 1000, 100, 10, 1 results DB 0,0,0,0,0,"$" ;存放五位数ASCII码
data ends
stack segment STACK
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax
mov ax,7bh ;7bh 要显示的字符 mov si, offset divisors
mov di, offset results
mov cx,5
aa:
mov dx,0
div word ptr [si] ;除法指令的被除数是隐含操作数,此处为dx:ax,商ax,余
数dx
add al,48 ;商加上48即可得到相应数字的ASCII码
mov byte ptr [di],al
inc di
add si,2
mov ax,dx
loop aa
mov cx,4
mov di, offset results bb:
cmp byte ptr [di],'0' ;不输出前面的0字符
jne print
inc di
loop bb
print:
mov dx,di
mov ah,9
int 21h
mov ax,4C00h int 21h
code ends
end start
原出处已经丢失
#汇编
分享到: 举报 浏览(208) 评论 转载 你可能也喜欢
- 海 杂片儿
杂片儿 - 海
没见过的华山
没见过的华山
【空间周刊 - 人物志 -2014年第11期(总第31期)】清城暮
【空间周刊 - 人物志 -2014年第11期(总第31期)】清城暮
青岛海鸥 12
青岛海鸥 12
冰原
冰原
郁金香“利欧”
郁金香“利欧”
功能调用
功能调用
本文最近访客
yonglingdongli
yonglingdongli
1月2日
迷茫的孤单2
迷茫的孤单2
12月5日
评论
发布
帮助中心 | 空间客服 | 投诉中心 | 空间协议
?2014 Baidu