一、编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示 字符串"divide error!",然后返回到DOS.
答案
assume cs:code
code segment
begin:
// 源地址
mov ax, code
mov ds, ax
mov si, offset do0
// 目标地址
mov ax, 0
mov es, ax
mov di, 200h
// 设置movsb的次数,用标号do0end-标号do0,就是传输的长度
mov cx, offset do0end-offset do0
// 设置传输方向为正
cld
rep movsb
// 设置中断向量
mov ax, 0
mov es, ax
mov word ptr es:[0], 200h
mov word ptr es:[2], 0
// 测试的程序
mov ax, 1000h
mov bh, 1
div bh
mov ax, 4c00h
int 21h
// 程序的入口
do0:
jmp short do0start
db 'overflow!'
do0start:
// ds:si 指向字符串
mov ax, 0
mov ds, ax
mov si, 202h
// es:di 显存空间的中间位置
mov ax, 0b800h
mov es, ax
mov di, 12*160+36*2
// 字符串长度
mov cx, 9
// 遍历读取字符串并写入到显存空间中
s:
mov al, [si]
mov es:[di], al
inc si
add di, 2
loop s
mov ax, 4c00h
int 21h
do0end:
nop
code ends
end begin
效果图
网友评论