如何写"啊"而不是" al"在中断21 emu8086?

时间:2016-11-10 15:42:07

标签: assembly emu8086

如何在程序集8086的中断21中使用ah而不是al

1 个答案:

答案 0 :(得分:2)

您的意思是int 21h还是int 21int 21 (int 15h)AT Extended Services / APM

int 21h (int 33)DOS interrupts之一。

IIRC emu8086仅支持有限的服务和中断子集,因此我认为您的意思是int 21h(我希望emu8086不支持int 15h)。

注意这样的拼写错误,在你注意到错误的号码之前,它可能会让你调试几分钟。

调用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