【问题标题】:Using Int13h with FreeDos Debug将 Int13h 与 FreeDos 调试一起使用
【发布时间】:2013-02-02 14:35:36
【问题描述】:

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

我的代码是:

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

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

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

【问题讨论】:

    标签: assembly x86 dos interrupt bios


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这是在 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-20
        • 2011-04-12
        • 2010-12-11
        • 1970-01-01
        相关资源
        最近更新 更多