;想用(ah)=9,int 21h,显示div Error!
;想用(ah)=9,int 21h,显示div Error!;不知道什么原因不可行,总无限显示div Error!
;特此,来求解
assume cs:code
code segment
setup: mov ax, cs ;设置源地址
mov ds,ax
mov si, offset divofBeg
mov ax, 0h ;设置目标地址
mov es, ax
mov di, 200h
;循环次数
mov cx, offset divofEnd - offset divofBeg
cld ;正向(递增)
rep movsb
mov word ptr es:, 200h ;设置中断程序入口地址
mov word ptr es:, 0h
mov dh, 0 ;引发除 0 中断
div dh
mov ax, 4c00h
int 21h
divofBeg:
jmp short divofS
db 'div Error!','$'
divofS: push ax
push dx
push ds
mov ax, cs ;显示ds:dx指向的字符串
mov ds, ax
mov dx, 202h
mov ah, 9
int 21h
pop ds
pop dx
pop ax
iret
divofEnd:nop
code ends
END setup yuprxk 发表于 2012-7-11 22:19
为什么,会是这样呢?
书上溢出中断哪里已经说明了。
面对除法溢出要提示错误并退出程序。
如果不退出,它一直检测的都是溢出信息。就会出现你的那种情况。 把iret
改成
mov ax,4c00h
int 21h 敉沧 发表于 2012-7-11 20:55 static/image/common/back.gif
把iret
改成
mov ax,4c00h
为什么,会是这样呢? 哦,原来如此,看来,我看的不仔细
页:
[1]