マトリックス プログラムにキーボードとマウスの割り込みを実装して、キーボードのいずれかのキーが押されたとき、および/またはマウスが動かされたときに、決して終わらないマトリックス プログラムを終了させる方法を理解するのに苦労しています。マウスのボタンが押されました。
ここに私のマトリックスコードがあります:
title lab9 (lab9.asm)
.model small
.stack 100h
.data
seed dw 1234h
.code
main proc
mov ax, @data
mov ds, ax
mov ax, 0B800h
mov es, ax
mov bx, 0
mov ax, 0
Loo1:
add bx, 120
call row
call busyWait
mov si, 0
jmp Loo1
loop Loo1
mov ax,4C00h
int 21h
main endp
row proc
push cx
mov cx, 10
R:
call printMsg
add bx, 160
loop R
pop cx
ret
row endp
printMsg proc
call randomCh
mov ah, [si]
mov es:[bx], ax
inc si
ret
printMsg endp
randomCh proc
mov ax, 343Fh
mul seed
xor dx, dx
add ax, 269h
mov seed, ax
ret
randomCh endp
busyWait proc
push cx
mov cx, 100h
L1:
loop L1
pop cx
ret
busyWait endp
My_int proc
mov ax, 4C00h
int 21h
iret
My_int endp
end
私の教授が私にくれたキーボード割り込みコードは次のとおりです。
mov ax, @data
mov ds, ax
;Install interrupt handler
push ds
mov ax, @code
mov ds, ax
mov ah, 25h
mov al, 9
mov dx, offset My_Int
int 21h
pop ds
Loop2;
;MATRIX CODE GOES HERE
jmp Loop2
;mov ax, 4c00h
;Int 21h
main endp
My_int proc
mov ax, 4c00h
int 21h
iret
My_Int endp
end main
私の教授も私にくれたマウス割り込みコードは次のとおりです。
.model smal
.stack 100h
.data
oX dw 0
oY dw 0
.code
main proc
mov ax, @data
mov ds, ax
moov ax, 3
int 33h
mov oX, CX
mov oY, DX
L1:
cmp oX ,CX ; (While oX == cx, && oY == dx && button == 0) <-- I believe the "button variable is
; the BX register
jne exit
cmp oY, DX
jne exit
cmp bx, 0
jne exit
;Matrix code goes here probably with the "Loop2: ;Matrix goes here loop Loop2 section from the
;keyboard interrupt section
mov ax, 3
int 33h
jmp L1
exit:
mov ax, 4C00H
int 21h
main endp
end main
したがって、基本的には、キーボードとマウスの両方の割り込みコードを 1 つに結合する必要があります。これにより、私のプログラムを実行している誰かが、キーボードのキーを押すか、マウスを動かすか、マウスのボタンをクリック (左クリック、右クリック) することでプログラムを終了できるようになります。クリック、および中央ボタン)。
キーボード ターミネーションの部分については、コードの「Loop2: ;Matrix コードはここにループ Loop2 を挿入する」セクションにコードを貼り付けるだけでよいと教授が言ったと思いますが、彼の言葉を聞き間違えただけだと確信しています。彼は、コードをそのループに貼り付けて、キーボードのキー入力をチェックする必要があると言うつもりだったと思いますが、入力(mov ah 7h/1h、int 21h)をチェックする方法を知っている方法ではないことを知っているので、混乱していますその部分で。
マウス割り込み部分に関しては、私の教授が必要なものをすべてくれたようで、コードをマウス割り込みコードの「;マトリックスコードがここに入る」セクションに貼り付けるだけです。これが正しくない場合はお知らせください。可能であれば説明してください。可能であれば、マウス割り込みを機能させるために必要なものを例を挙げて説明してください。