一 中斷處理過程(和iret命令過程相反):
1、獲取中斷碼n
2、flag(標志)寄存器入棧
3、CS、IP入棧
4、設置IP=4*n CS=4*n+2
二 中斷處理程序編寫
1、mov ax,cs
mov ds,ax
mov si,offset sqr ;設置ds:si指向sqr源地址
2、mov ax,0
mov es,ax
3、mov di,200h ;設置es:di指向目標地址
mov cx,offset sqrend-offset sqr ;設置cx為傳輸長度 offset設置偏移地址
4、cld ;設置傳輸方向為正向
rep movsb ;將sqr代碼送至0:200h
;rep是重復repeat(重復)的縮寫,是重復執行指令的前綴。用于重復執行后面的指令,它通過設置cx來控制重復次數
;movsb以字節為單位進行移動 movsd以雙字為單位進行移動 movsw以字為單位進行移動
5、mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h ;設置中斷向量表
mov word ptr es:[7ch*4+2],0 ;設置中斷向量表
6、mov ax,4c00h ;也可以寫成mov AH
int 21h ;DOS系統功能調INT 21H功能中的一種,表示帶返回碼結束用戶程序
;AH、功能、調用參數、返回參數
;AH存入00,功能:程序終止(同INT 20H),調用參數:CS=程序段前綴
;AH存入01,功能:鍵盤輸入并回顯,調用參數:AL=輸入字符
;AH存入02,功能:顯示輸出,調用參數:DL=輸出字符。
;AH存入03,功能:異步通迅輸入,調用參數:AL=輸入數據。
;AH存入04,功能:異步通迅輸出,調用參數:DL=輸出數據
7、sqr: mul ax ;無符號乘法
iret ;IRET(interrupt return)中斷返回,推入堆棧的段地址和偏移地址彈出,使程序返回到原來發生中斷的地方。其作用是從中斷中恢復中斷前的狀態
;功能 恢復IP:pop IP; 恢復CS:pop CS; 恢復中斷前標志寄存器裝態popf;恢復ESP(返回權限發生變化);恢復SS(返回權限發生變化)
8、sqrend:nop ;空指令 什么都不做,但是會占用一個指令的時間;用于程序指令的對齊,比如字對齊