assume cs:code
code segment
;第一步:把中斷向量表中0號表項的內容進行修改,使之指向我們自己編寫
;的中斷處理程序的入口地址
start:
mov ax,0
mov ds,ax
mov word ptr ds:[0],0200h
mov word ptr ds:[2],0
;第三步,把我們剛纔編寫好的0號中斷處理程序拷貝到中斷向量表中
;0號表項所指向的內存地址中0000:0200
mov ax,cs
mov ds,ax
mov si,offset int0 ;ds:si
mov ax,0
mov es,ax
mov di,200h
mov cx,offset int0end-offset int0 ;得出0號中斷處理程序的字節數
cld
rep movsb
;第四步利用代碼自動引發0號中斷處理程序
mov ax,1000h
mov bh,1
div bh
mov ax,4c00h
int 21h
;第二步:編寫自己的中斷處理程序,實現在屏幕中央顯示字符串的功能
int0:jmp short int0start
db "i am hacker"
int0start:mov ax,0b800h
mov es,ax ;配置顯存首地址0b800
;要把i am hacker 一個個拷貝到顯存地址空間中
mov ax,cs
mov ds,ax
mov si,202h
mov di,12*160+36*2
mov cx,12
s:mov al,ds:[si]
mov es:[di],al
inc si
add di,2
loop s
mov ax,4c00h
int 21h
int0end:nop
code ends
end start
運行結果: