使用Int13h与FreeDos调试

时间:2013-02-18 07:52:46

标签: assembly x86 dos interrupt bios

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

我的代码是:

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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