assembly - mov ah,10 int 21h有什么用
问题描述
mov ah,10
in有什么用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
解决方案
大多数情况下,我们使用 like mov ah,0a 进行字符串输入,但为什么要使用 mov ah,10?
如果你愿意,你可以使用十进制;但大多数(全部?)DOS 函数参考资料以十六进制显示值(函数号、中断号和地址),其他程序员更可能识别十六进制值;所以使用十进制会使其更难阅读。
另一种选择是使用预处理器——例如可能是“ #define BUFFERED_INPUT_FUNCTION_NUMBER 0x0A
”和“ mov ah,BUFFERED_INPUT_FUNCTION_NUMBER
”。对于不太熟悉 DOS 的人来说,这使得它更容易阅读(和/或避免需要注释);但是对于非常熟悉 DOS 的人来说,这会让情况变得更糟(要检查是否实际使用了正确的数字,他们必须检查 2 个不同的地方而不是一个)。
推荐阅读
- python - 在转换为数据框之前在 Python 中展平嵌套的 Defaultdict 列表
- python - 如何使用这样的高斯函数进行更好的曲线拟合?
- ruby-on-rails - ruby I18n 日期格式在生产一段时间后中断
- c# - 使用 MVVM 的 IsSelected 属性扩展外部对象?
- reactjs - 我想创建一个面包屑,但我不知道如何在反应中创建它
- java - Spring-batch:如何在 Spring Batch 中使用 skip 方法捕获异常消息?
- javascript - 刷新 div 后日期选择器不起作用
- neo4j - 不跨越某些节点的密码路径
- c++ - Cmake Visual Studio - 在输出文件夹位置创建的文件
- java - 从 CDI 代理获取真实对象