Assembly 将Int13h与FreeDos调试一起使用

Assembly 将Int13h与FreeDos调试一起使用,assembly,x86,dos,interrupt,bios,Assembly,X86,Dos,Interrupt,Bios,我正在做一些组装工作,作为学校项目的一部分,我正在使用Int 13h 08读取当前磁盘参数,但我搞砸了一些事情。我在VirtualBox中使用FreeDOS,并使用Debug 我的代码是: MOV AH,08 MOV DL,80 INT 13 MOV AH,4C INT 21 不管终止部分是什么,都没有返回/打印我所知道的内容。 我需要拿出某种类型的打印代码吗?我也不确定这个命令读取的任何信息会去哪里 我的思想过程是,在代码执行后,其中一个寄存器将保存一个指针,我只需要开始从该指针读取信息。

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

我的代码是:

MOV AH,08
MOV DL,80
INT 13
MOV AH,4C
INT 21
不管终止部分是什么,都没有返回/打印我所知道的内容。 我需要拿出某种类型的打印代码吗?我也不确定这个命令读取的任何信息会去哪里

我的思想过程是,在代码执行后,其中一个寄存器将保存一个指针,我只需要开始从该指针读取信息。
任何帮助都将不胜感激。

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

下面是一个在lDebug(FreeDOS调试的分支)中使用代码的示例会话。在调用中断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
-
此时,您可以使用由另一个答案链接的中断列表条目来确定寄存器中的结果的含义: