3

只是预防措施。我是一个组装完全的菜鸟。我唯一的问题是DOS中只有以下命令:

MOV  AH, 09
INT  21

MOV  AX, 4C01
INT  21

第二个中断是否仍然具有参数09含义显示屏幕或AX以某种方式改变?

4

2 回答 2

3

AHAL分别是 的高半和低半AX。所以是的,设置AX更改AH

4C是“退出程序”。

于 2013-02-04T05:02:20.843 回答
3

您需要搜索Ralf Brown 的中断列表,它是这些旧 DOS/Windows 中断的权威指南。

使用 AH = 09H调用INT 21h会向控制台输出一个$以 at 结尾的字符串。DS:DX

使用 AH = 4cH调用INT 21H 会退出程序,返回码在AL(在本例中为 01H)。

第二个调用不会简单地AH设置为. 第二个设置为设置的一部分:09HAHAXMOVAH4cHAX

在此处输入图像描述


更详细(来自维基百科):

在此处输入图像描述


这种由其他寄存器制成的寄存器在英特尔有着悠久的历史:

  • axah和组成al
  • eax由 16 位加上其他 16 位组成ax
  • rax由 32 位加上其他 32 位组成eax

以及其他通用寄存器特殊寄存器(如索引或基址寄存器)和堆栈指针的类似方法。

有趣的是,他们并没有复制访问扩展寄存器的高半部分的能力,例如eaxeahand组成eal(都是神话,但后者是 的别名ax)。

这将在更高模式下为我们提供大量超小寄存器的缓存,尽管我不确定成本会是多少(毫无疑问,英特尔/AMD确实知道成本,而且可能被认为太贵了)。

于 2013-02-04T05:18:41.267 回答