實驗十二
編寫0號中斷的處理程序,使得在除法溢出發生時,在屏幕中間顯示字符串"divide error!"
基本跟課本中的代碼一致
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset do0 ; 設置ds:si指向源地址
mov ax,0
mov es,ax
mov di,200h ; 設置es:di指向目的地址
mov cx,offset do0end-offset do0
cld ; 設置正向傳輸
rep movsb ; 複製do0的代碼到指定內存中
mov ax,0 ; 設置中斷向量表的表項
mov es,ax
mov word ptr es:[0],200h
mov word ptr es:[2],0
mov ax,4c00h
int 21h
do0: jmp short do0start
db "divide error!" ; 使用一部分內存存儲字符串
do0start: mov ax,cs
mov ds,ax
mov si,202h ; 設置ds:si指向字符串
mov ax,0b800h
mov es,ax
mov di,12*160+33*2 ; 設置es:di指向顯存空間的中間位置
mov cx,13 ; 長度不同,循環次數和內存中的位置不同
s: mov al,[si]
mov es:[di],al
mov byte ptr es:[di+1],2 ; 給字符增加顏色
inc si
add di,2
loop s
mov ax,4c00h
int 21h
do0end: nop
code ends
end start
在加載完該程序之後,自行編寫一個小程序進行驗證
assume cs:codesg
codesg segment
start: mov ax,1000h
mov bl,1
div bl
mov ax,4c00h
int 21h
codesg ends
end start