0

我正在做一些组装,作为学校项目的一部分,我正在使用 Int 13h 08 来读取当前磁盘参数,但我搞砸了。我在 VirtualBox 中使用 FreeDOS,并使用 Debug。

我的代码是:

MOV AH,08
MOV DL,80
INT 13
MOV AH,4C
INT 21

无论终止部分如何,我所知道的都没有被退回/打印。我需要想出某种类型的打印代码吗?我也不确定这个命令读取的任何信息会去哪里,

我的想法是代码执行后其中一个寄存器会保存一个指针,我只需要从该指针开始读取即可查看信息。任何帮助,将不胜感激。

4

2 回答 2

1

如果您在中断方面需要任何帮助,Ralf Browns 中断列表是您的朋友。(是的,如果你想在屏幕上显示信息,你必须自己想出一些打印代码)。

于 2013-02-18T09:00:24.830 回答
1

这是在 lDebug(FreeDOS Debug 的一个分支)中使用您的代码的示例会话。我正在逐步执行代码,直到调用中断 13h 之后。

-a
18BD:0100 mov ah, 8
18BD:0102 mov dl, 80
18BD:0104 int 13
18BD:0106
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=18BD ES=18BD SS=18BD CS=18BD IP=0100 NV UP EI PL ZR NA PE NC
18BD:0100 B408              mov     ah, 08
-t
AX=0800 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=18BD ES=18BD SS=18BD CS=18BD IP=0102 NV UP EI PL ZR NA PE NC
18BD:0102 B280              mov     dl, 80
-
AX=0800 BX=0000 CX=0000 DX=0080 SP=FFFE BP=0000 SI=0000 DI=0000
DS=18BD ES=18BD SS=18BD CS=18BD IP=0104 NV UP EI PL ZR NA PE NC
18BD:0104 CD13              int     13
-
AX=0000 BX=0000 CX=FE3F DX=FE04 SP=FFFE BP=0000 SI=0000 DI=0000
DS=18BD ES=18BD SS=18BD CS=18BD IP=0106 NV UP EI PL ZR NA PE NC
18BD:0106 0000              add     [bx+si], al                      DS:0000=CD
-

此时,您可以使用另一个答案链接的中断列表条目来确定寄存器中的结果是什么意思:http ://www.ctyme.com/intr/rb-0621.htm

于 2019-07-25T13:48:20.013 回答