assume cs:code,ds:data
data segment
db "chu fa yi chu la~",0
data ends
code segment
;主程序
start: mov ax,data
mov ds,ax
;除法中断在中断向量表中的位置是0000:0000~0000:0003
;0000:0000~0000:0001存放偏移地址(IP)
;0000:0002~0000:0003存在段地址(CS)
mov ax,0
mov es,ax
mov word ptr es:[0],offset do0
mov word ptr es:[2],cs
;制造溢出
mov ax,2
mov bh,0
div bh
mov ax,4c00h
int 21
;除法中断处理过程
do0: push dx
push cx
push si
mov dh,8
mov dl,3
mov cl,10010100b
mov si,0
call show_str
pop si
pop cx
pop dx
iret
;显示字符串
show_str:push dx
push cx
push ax
push ds
push si ;保存寄存器内容
dec dh
mov al,0a0h
mul dh
mov bx,ax
dec dl
mov dh,0
mov ax,2
mul dx
add bx,ax ;计算字符串的第一个字符在显存中相对于0b800h的位移
mov dx,bx
mov ax,0b800h
mov es,ax
mov di,0
;循环显示字符串
s: mov al,byte ptr ds:[si]
mov ah,0
cmp ax,0
je return ;若字符为0则返回
mov ah,cl
mov bx,dx
add bx,di
mov es:[bx],ax
inc si
add di,2
jmp s
return: pop si
pop ds
pop ax
pop cx
pop dx
ret
code ends
end start
【汇编】重写0号中断(除法溢出中断)
最新推荐文章于 2022-11-24 16:21:26 发布