我需要将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
我该怎么办?
提前致谢
答案 0 :(得分:2)
呵呵这很简单:P
我相信你可能会得到'分歧错误',但不是特别是'偏离零错误'
你说DX = 0xF时出错了吗?
好吧0x000FFFFF = 1048575 ...除以10得到> 65535 ......答案:你只是得到一个除数溢出。结果需要适合AX。
答案 1 :(得分:0)
我会说你放了一个CR(015),一个LF(012)然后退出BIOS。
我们再见到21岁了吗?