Assembly 在int 21h中,Mov ah,10有什么用
在Assembly 在int 21h中,Mov ah,10有什么用,assembly,nasm,dos,x86-16,Assembly,Nasm,Dos,X86 16,在int21h 我们通常使用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
int21h
我们通常使用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
明目张胆地从……偷来的
读缓冲输入
DS:DX
=缓冲区
字节[ds:DX]
=缓冲区长度byte[ds:DX+1]
(输入)=缓冲区中可输入的字符数
召回
(输出)=缓冲区中的字符数缓冲区从DS:DX+2开始
10
与0Ah
公然从
读缓冲输入
DS:DX
=缓冲区
字节[ds:DX]
=缓冲区长度byte[ds:DX+1]
(输入)=缓冲区中可输入的字符数
召回
(输出)=缓冲区中的字符数缓冲区从DS:DX+2开始
10
与0Ah
大多数情况下,我们使用mov-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
如果需要,可以使用十进制;但是大多数(全部?)DOS函数的参考资料显示十六进制的值(函数号、中断号和地址),其他程序员更可能识别十六进制值;因此,使用十进制将使其更难阅读
另一种选择是使用前置处理器,例如,“定义缓冲输入功能号0x0A”和“mov ah,缓冲输入功能号”。对于不太熟悉DOS的人来说,这使得阅读更容易(和/或避免了评论);但对于非常熟悉DOS的人来说,这会让情况变得更糟(要检查是否使用了正确的数字,他们必须检查两个不同的位置,而不是一个)
大多数情况下,我们使用mov-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
如果需要,可以使用十进制;但是大多数(全部?)DOS函数的参考资料显示十六进制的值(函数号、中断号和地址),其他程序员更可能识别十六进制值;因此,使用十进制将使其更难阅读
另一种选择是使用前置处理器,例如,“定义缓冲输入功能号0x0A”和“mov ah,缓冲输入功能号”。对于不太熟悉DOS的人来说,这使得阅读更容易(和/或避免了评论);但对于非常熟悉DOS的人来说,这会让情况变得更糟(要检查是否实际使用了正确的数字,他们必须检查两个不同的位置,而不是一个)。
0Ah
(十六进制)是10
十进制。值10十进制与0a十六进制相同。表示同一数字的两种方式是十进制的。十进制的值10与十六进制的值0a相同。同一个数字有两种表达方式,但这并不是该引用告诉我们的!退出时缓冲区中的字符数报告在表示预加载了多少字符的字段顶部。输入的字符开始于DS:DX+2
@SepRoland:不确定我是怎么犯的错误。别担心,我们所有人都会犯这种错误。这不是参考文献告诉我们的!退出时缓冲区中的字符数报告在表示预加载了多少字符的字段顶部。输入的字符开始于DS:DX+2
@SepRoland:不知道我是怎么犯的错误。别担心,我们都会犯这种错误。