中斷程序的編寫(匯編)
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(重復)的縮寫,是重復執(zhí)行指令的前綴。用于重復執(zhí)行后面的指令,它通過設置cx來控制重復次數(shù)
;movsb以字節(jié)為單位進行移動 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系統(tǒng)功能調INT 21H功能中的一種,表示帶返回碼結束用戶程序
;AH、功能、調用參數(shù)、返回參數(shù)
;AH存入00,功能:程序終止(同INT 20H),調用參數(shù):CS=程序段前綴
;AH存入01,功能:鍵盤輸入并回顯,調用參數(shù):AL=輸入字符
;AH存入02,功能:顯示輸出,調用參數(shù):DL=輸出字符。
;AH存入03,功能:異步通迅輸入,調用參數(shù):AL=輸入數(shù)據(jù)。
;AH存入04,功能:異步通迅輸出,調用參數(shù):DL=輸出數(shù)據(jù)
7、sqr: mul ax ;無符號乘法
iret ;IRET(interrupt return)中斷返回,推入堆棧的段地址和偏移地址彈出,使程序返回到原來發(fā)生中斷的地方。其作用是從中斷中恢復中斷前的狀態(tài)
;功能 恢復IP:pop IP; 恢復CS:pop CS; 恢復中斷前標志寄存器裝態(tài)popf;恢復ESP(返回權限發(fā)生變化);恢復SS(返回權限發(fā)生變化)
8、sqrend:nop ;空指令 什么都不做,但是會占用一個指令的時間;用于程序指令的對齊,比如字對齊
posted on 2023-11-10 22:44 Benjamin 閱讀(59) 評論(0) 編輯 收藏 引用 所屬分類: (反)匯編