32位二进制到ASCII 8086汇编

时间:2011-04-15 16:22:04

标签: assembly ascii x86-16

我需要将32位数转换为ASCII。 我不知道怎么做......

这是我写的代码: 可以转换的最大数字是0001FFFF, 如果我将Dx设置为 000F 并将Ax设置为 FFFF ,汇编器将给出一个除法溢出错误!!!

data segment  
    save db 10 dup(' ') , '$' ; the ASCII will save here
data ends

stack segment
    dw   128  dup(0)
stack ends

code segment
    assume cs:code , ds:data , ss:stack

    main proc far
    mov ax, data
    mov ds, ax
    mov es, ax



    mov di,offset save
    add di , 9

    mov ax,0ffffh
    mov dx,0001h


    mov cx,10  ; dx ax will divide by cx

    convert:
       div cx

       add dl,'0'
       mov [di],dl
       dec di

       mov dx,0



       cmp ax,cx
    jge convert

    add al,'0'
    mov [di] , al

    ;show the number
    mov ah,09h
    mov dx,offset save
    int 21h





    ; wait for any key....    
    mov ah, 1
    int 21h

    mov ax, 4c00h ; exit to operating system.
    int 21h    
    main endp
code ends    

end main

我该怎么办?

提前致谢

2 个答案:

答案 0 :(得分:2)

呵呵这很简单:P

我相信你可能会得到'分歧错误',但不是特别是'偏离零错误'

你说DX = 0xF时出错了吗?

好吧0x000FFFFF = 1048575 ...除以10得到> 65535 ......答案:你只是得到一个除数溢出。结果需要适合AX。

答案 1 :(得分:0)

我会说你放了一个CR(015),一个LF(012)然后退出BIOS。

我们再见到21岁了吗?