把大二进制数转化为十进制数并显示

softdragon777 2017-06-15 07:58:17
; 程序名称:big_to_decimal
; 程序功能:把大二进制数转化为十进制数并显示结果
name big_to_decimal
title big_to_decimal.asm
.model tiny
.stack 64
.data
source db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,7fh
len equ $ - source
res_len equ ((24*len)/10)+1
result db res_len dup(0)
.code
start:
mov ax,@data
mov ds,ax
mov es,ax
ready:
trans_begin:
lea si,source
mov cx,len
add si,cx
dec si
std
mov bp,10
trans_body:
lodsb
mov dl,al ; save al in dl and high carry register is dx
mov dh,0
lea di,result
mov bx,res_len
get_decimals:
mov ah,byte ptr [di] ; it is the same as multiplying 256
mov al,0
add ax,dx ; add to the high carry register
xor dx,dx
div bp
mov byte ptr [di],dl
mov dx,ax
inc di
dec bx
cmp bx,0
ja get_decimals
loop trans_body
display:
lea si,result
mov cx,res_len
add si,cx
dec si
std
disp_items:
lodsb
mov dl,al
add dl,030h
mov ah,2
int 21h
loop disp_items
all_end:
mov ax,4c00h
int 21h
end start
“编译、运行后,得到结果如下:”
09223372036854775807
...全文
447 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
display: lea di,result mov cx,res_len add di,cx xor ax,ax dec di std repnz scasb mov si,di disp_items:
softdragon777 2017-06-15
  • 打赏
  • 举报
回复
是的,显示带出个前导0,请教最简单的办法去除前导0,多谢!
  • 打赏
  • 举报
回复
怎么了?结果是对的,你的意思要把前导0去掉?

21,453

社区成员

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

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