关于asm的多位十六进制数按十进制输出

kenyle 2005-09-18 03:35:18
最近想写一下asm for dos(8086)

但是发现有个问题一直没有很好的解决,所以上来请大家帮着想一下。

我总是遇到的问题是,当我用一个十进制的数做运算后,存放到寄存器默认的就成为了十六进制,(多位2位以上)当需要屏显十进制输出的时候发现变得十分的麻烦,不知道大家有没有遇到过。

同时如果你有将多位十六进换十进制的程序,贴出来看一下也行。
如:53BEh(hex)->21438(dec)
...全文
271 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2005-09-18
  • 打赏
  • 举报
回复
这个功能的实现, 以前有过好多例子的. 不过, csdn 整理了帖子, 好像都搜索不到了.
下面的这个代码也是以前这里有朋友贴出来的, 它以子程的形式显示输出 ax 寄存器中的内容 (无符号数), 可以根据自己的需要进行修改的

; display the unsigned integer value in AX
dec2asc proc
push ax
push dx
push cx
mov dx, -1 ; flag of ending
push dx ; flag to stack
mov cx, 10
l_div10:
xor dx, dx
div cx ; DX:AX / CX
push dx
test ax, ax
jne l_div10
mov cx, -1
mov ah, 2 ; display character in DL
l_disp:
pop dx
cmp dx, cx
je l_ret
add dl, '0' ; one-digit value turns to character
int 21h ; display the digit
jmp l_disp
l_ret:
pop cx
pop dx
pop ax
ret
dec2asc endp

21,497

社区成员

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

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