【问题标题】:DOS function 1 assembly(8086) issueDOS 函数 1 程序集(8086)问题
【发布时间】:2017-03-08 17:31:19
【问题描述】:

据我所知,dos 函数 1 等待输入字符并将其放入寄存器 AL。

mov al,1h
int 21h

这对我不起作用。它不等待输入,只是将随机 ascii 插入到 AL 中。

如果我用 AH 修改 AL,它会正常工作。

mov ah,1h

这是为什么呢?

【问题讨论】:

  • 这就是你的 DOS 供应商实现int 21h 服务的方式,服务号应该是AH,而不是AL。检查您的 DOS 服务documentation,无论您使用哪个。如果它显示“AL=1”,则用更正确的替换它。

标签: assembly intel dos x86-16


【解决方案1】:

根据Ralf Brown's excellent interrupt list,调用时函数必须在ah,在这种情况下al只是用来保存返回值:

DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO
    AH = 01h
Return:
    AL = character read

所以你的代码应该是:

mov  ah,01h
int  21h
;; al should now contain the character.

通过在仅设置al 之后调用int 21,您基本上是在使用之前恰好在ah 中的任何值。这不太可能结束:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 2021-12-18
    • 2013-12-14
    • 2022-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多