实验12
RT 王爽汇编实验12下面是程序答案:
程序代码:
;#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
mov ax, 1000h
mov bh, 1
div bh
这个是我自己加上去的 为的是验证当发生除法溢出时 是不是调用了自己写的那个中断
但是遗憾的是结果就是除法溢出时还是调用了系统的中断 对我写的那个没有任何反应
有图验证 我将字符串的内容和位置都做了调整但是没出现调整后的字符
[attach]64257[/attach]
--
[attach]64258[/attach]
始终是出现overflow!而且在同一个位置,明显是系统的东西。
我的问题是我写那个貌似没错误 和答案一模一样 为什么div bh后不予理睬呢? 中断向量表我已经设置好了啊、
求解释 求调用。
[ 本帖最后由 有容就大 于 2012-8-16 16:32 编辑 ]