-1
如何在組件8086的中斷21中使用ah
而不是al
?如何在中斷21 emu8086中寫「ah」而不是「al」?
如何在組件8086的中斷21中使用ah
而不是al
?如何在中斷21 emu8086中寫「ah」而不是「al」?
您的意思是int 21h
或int 21
? int 21 (int 15h)
是「AT Extended Services/APM」。
int 21h (int 33)
是DOS interrupts之一。
IIRC emu8086僅支持有限的服務和中斷子集,所以我認爲你的意思是int 21h
(並且我期望int 15h
不被emu8086支持)。
注意這樣的錯別字,它可能會導致您在注意到錯誤的數字之前調試幾分鐘。
調用int #n
時寄存器的功能由處理程序定義,該處理程序爲該中斷安裝。 DOS 21h
服務有幾個子功能:您要調用的哪一個您在ah
中按值定義。這不能改變,它在DOS代碼中是硬連線的。
您必須更改您的調用代碼以根據期望的中斷處理程序準備寄存器。
(或者你可以提供,當然你自己的中斷處理程序,那麼您將指定哪些進入其註冊,但創建自己的中斷處理程序聽起來並不喜歡的事emu8086的用戶願意這樣做)
示例演示如何使用從ah
值在「字符輸出到標準輸出」服務:
mov ah,'X' ; character value in ah
; how to use it with:
; int 21h, ah=2 (Character output), dl = char (as defined by DOS)
mov dl,ah ; move character value into dl (before setting ah with 2)
mov ah,2 ; number of requested "Character output" service
int 21h ; call the DOS service
你不能。 Int 21h期望在那裏有一個值。那麼,我猜你可能會創建自己的中斷21h。 。 。如果你敢。 –
'mov al,ah'。咄。 –