![]() |
#2
有容就大2012-08-16 16:38
|
下面是程序答案:

;#Mode=DOS
;MASMPlus 单文件代码模板 - 纯 DOS 程序
;--------------------------------------------------------------------
;单个文件需要指定编译模式,否则默认是EXE方式,在系统设置中可以设置默认是DOS还是Windows.
;编译模式自带了DOS/COM/CON/EXE/DLL/LIB这几种,如果有必要,可以更改ide.ini添加新的编译模式
;当然,更好的是创建为一个工程.更方便及易于管理,使用方法:按Ctrl多选->创建工程.必须有多个文件
assume cs:code
code segment
start: mov ax, 1000h
mov bh, 1
div bh ; 上面3句是我自己添加的
mov ax, cs
mov ds, ax
mov si, offset do0
mov ax, 0
mov es, ax
mov di, 0200h
mov cx, offset do0end - offset do0
cld
rep movsb
mov ax, 0 ; 设置中断向量表
mov es, ax
mov WORD ptr es:[0 * 4], 200h
mov WORD ptr es:[0 * 4 + 2], 0
mov ah, 1
int 21h
mov ax, 4c00h
int 21h
do0: jmp short do0start
db 'divide error!' ; 这里修改了几个不同的字符串
do0start: mov ax, cs
mov ds, ax
mov si, 202h
mov ax, 0b800h
mov es, ax
mov di, 20 * 160 + 36 * 5 ; 这里修改了几个不同的位置
mov cx, 13
s: mov al, [si]
mov es:[di], al
inc si
add di, 2
loop s
mov ah, 1
int 21h
mov ax, 4c00h
int 21h
do0end: nop
code ends
end start
;MASMPlus 单文件代码模板 - 纯 DOS 程序
;--------------------------------------------------------------------
;单个文件需要指定编译模式,否则默认是EXE方式,在系统设置中可以设置默认是DOS还是Windows.
;编译模式自带了DOS/COM/CON/EXE/DLL/LIB这几种,如果有必要,可以更改ide.ini添加新的编译模式
;当然,更好的是创建为一个工程.更方便及易于管理,使用方法:按Ctrl多选->创建工程.必须有多个文件
assume cs:code
code segment
start: mov ax, 1000h
mov bh, 1
div bh ; 上面3句是我自己添加的
mov ax, cs
mov ds, ax
mov si, offset do0
mov ax, 0
mov es, ax
mov di, 0200h
mov cx, offset do0end - offset do0
cld
rep movsb
mov ax, 0 ; 设置中断向量表
mov es, ax
mov WORD ptr es:[0 * 4], 200h
mov WORD ptr es:[0 * 4 + 2], 0
mov ah, 1
int 21h
mov ax, 4c00h
int 21h
do0: jmp short do0start
db 'divide error!' ; 这里修改了几个不同的字符串
do0start: mov ax, cs
mov ds, ax
mov si, 202h
mov ax, 0b800h
mov es, ax
mov di, 20 * 160 + 36 * 5 ; 这里修改了几个不同的位置
mov cx, 13
s: mov al, [si]
mov es:[di], al
inc si
add di, 2
loop s
mov ah, 1
int 21h
mov ax, 4c00h
int 21h
do0end: nop
code ends
end start
mov ax, 1000h
mov bh, 1
div bh
这个是我自己加上去的 为的是验证当发生除法溢出时 是不是调用了自己写的那个中断
但是遗憾的是结果就是除法溢出时还是调用了系统的中断 对我写的那个没有任何反应
有图验证 我将字符串的内容和位置都做了调整但是没出现调整后的字符
[attach]64257[/attach]
--
[attach]64258[/attach]
始终是出现overflow!而且在同一个位置,明显是系统的东西。
我的问题是我写那个貌似没错误 和答案一模一样 为什么div bh后不予理睬呢? 中断向量表我已经设置好了啊、
求解释 求调用。
[ 本帖最后由 有容就大 于 2012-8-16 16:32 编辑 ]