組み立てクラスの課題に取り組んでいます。
以前は、タイマーを割り込み表示にして、刻みごとに「時計」を更新することができました。
この知識を使用して、キーボード割り込みを置き換えようとしています。しかし、新しいキーボード割り込みハンドラーのインストールをコメントアウトしても、私のプログラムは 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の保存に問題があると思います。ただし、何が問題なのかわかりません。インストールとアンインストールのコードは、本質的に同様のタイマー割り込みのインストール/アンインストール コードであってはなりませんか?
どうぞよろしくお願いいたします。