0
我正在處理一個程序集類的任務。需要幫助掛鉤MS-DOS中的新鍵盤中斷
我以前設法讓我的計時器中斷顯示,並在每次打勾時更新'時鐘'。
我試圖用這個知識來代替我的鍵盤中斷。但即使當我註釋掉新鍵盤中斷處理程序的安裝時,我的程序也會干擾MS-DOS的活動(即不能運行任何可執行文件,只能使用'dir','cd'和類似命令):
.model tiny
.8086
.code
org 100h
start:
jmp setup
new_key PROC
jmp cs: old_key
new_key ENDP
setup:
mov ax, cs
mov ds, ax
old_key DD 00000000h
MOV AL, 9h ;+-
MOV AH, 35h ;| Save old_key
INT 21h ;|
MOV WORD PTR [old_key],BX
MOV WORD PTR [old_key][2],ES
; cli
; PUSH CS ;| Install new_key
; POP DS ;|
; LEA DX, new_key
; MOV AL, 9h
; MOV AH, 25h
; INT 21h
cli
push ds
LDS DX,CS:[old_key] ;+-
MOV AL, 9h ;| Disinstall new_key
MOV AH, 25h ;|
INT 21h
POP DS
STI
mov ax, TSR
int CALLDOS
end start
由於即使我已經評論了安裝,也存在問題,所以我認爲問題在於卸載或old_key保存。然而,我不知道什麼是錯的;不應該安裝和卸載代碼本質上是類似的定時器中斷的安裝/卸載代碼?
援助將不勝感激,謝謝你提前。
有點偏離主題,這幫助我將新的鍵盤中斷掛鉤到舊的鍵盤中斷。但仍然沒有幫助卸載然而:http://stackoverflow.com/questions/15119745/assembly-on-dos-tasm-creating-tsr-with-a-new-handler-on-int-21h?rq=1 – 3932695