yuprxk 发表于 2012-7-11 20:20:21

;想用(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

敉沧 发表于 2012-7-11 20:20:22

yuprxk 发表于 2012-7-11 22:19
为什么,会是这样呢?

书上溢出中断哪里已经说明了。

面对除法溢出要提示错误并退出程序。
如果不退出,它一直检测的都是溢出信息。就会出现你的那种情况。

敉沧 发表于 2012-7-11 20:55:43

把iret
改成
mov ax,4c00h
int 21h

yuprxk 发表于 2012-7-11 22:19:36

敉沧 发表于 2012-7-11 20:55 static/image/common/back.gif
把iret
改成
mov ax,4c00h


为什么,会是这样呢?

yuprxk 发表于 2012-7-11 22:55:42

哦,原来如此,看来,我看的不仔细
页: [1]
查看完整版本: ;想用(ah)=9,int 21h,显示div Error!