assume cs:code
data segment
db 10 dup(0)
data ends
code segment
start:mov ax,12666
mov bx,data
mov ds,bx
mov si,0
call dtoc
mov ax,4c00h
int 21h
dtoc:push ax
s1:mov di,0
mov bx,10d
div bx
add dx,30h
push dx
mov cx,ax
inc di
jcxz s2
jmp short s1
mov cx,di
s2:pop ax
mov byte ptr ds:[si],al
inc si
loop s2
ret
code ends
end start
--------------
D:\masm>debug tenthree.exe
-u
0C1D:0000 B87A31 MOV AX,317A
0C1D:0003 BB1C0C MOV BX,0C1C
0C1D:0006 8EDB MOV DS,BX
0C1D:0008 BE0000 MOV SI,0000
0C1D:000B E80500 CALL 0013
0C1D:000E B8004C MOV AX,4C00
0C1D:0011 CD21 INT 21
0C1D:0013 50 PUSH AX
0C1D:0014 BF0000 MOV DI,0000
0C1D:0017 BB0A00 MOV BX,000A
0C1D:001A F7F3 DIV BX
0C1D:001C 83C230 ADD DX,+30
0C1D:001F 52 PUSH DX
-r
AX=0000 BX=0000 CX=0040 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0C0C ES=0C0C SS=0C1C CS=0C1D IP=0000 NV UP EI PL NZ NA PO NC
0C1D:0000 B87A31 MOV AX,317A
-g000e
Divide overflow
Program terminated normally
---
------解决方案--------------------
在你这个除法中,你的DX初始值是多少?
看你在做除法前,相关寄存器的数值也没有赋值好呢。
不过,最好是做个防止除法溢出的子程序。