首页 > 解决方案 > mov ah,10 int 21h有什么用

问题描述

mov ah,10in有什么用int 21h

大多数情况下,我们使用 likemov ah,0a进行字符串输入,但为什么是 mov ah,10?

nter db 'enter you name:$'
nam db 50,0,50 dup('$')     ;num is 50, num + 1 is 0, num + 2 is 50
lfcr db 10,13,'$'           ;line feed carrier return/next line carriage return
.code
main proc 
    mov ax,@data            ;define
    mov ds,ax
    mov ah,9                
    lea dx,nter             ;output nter
    int 21h
    mov ah,10
    lea dx,nam
    int 21h

标签: assemblynasmdosx86-16

解决方案


大多数情况下,我们使用 like mov ah,0a 进行字符串输入,但为什么要使用 mov ah,10?

如果你愿意,你可以使用十进制;但大多数(全部?)DOS 函数参考资料以十六进制显示值(函数号、中断号和地址),其他程序员更可能识别十六进制值;所以使用十进制会使其更难阅读。

另一种选择是使用预处理器——例如可能是“ #define BUFFERED_INPUT_FUNCTION_NUMBER 0x0A”和“ mov ah,BUFFERED_INPUT_FUNCTION_NUMBER”。对于不太熟悉 DOS 的人来说,这使得它更容易阅读(和/或避免需要注释);但是对于非常熟悉 DOS 的人来说,这会让情况变得更糟(要检查是否实际使用了正确的数字,他们必须检查 2 个不同的地方而不是一个)。


推荐阅读