汇编语句: buffer db 10,?, 10 dup(' ') 为什么只能输入的字符只有10个,求大神具体解释下
3个回答
展开全部
这不是编程者的限制,而是DOS系统的功能设定。
你这样设计的数据区,显然是为使用DOS的0AH号功能调用(字符串输入)而准备的。
DOS的0AH号功能调用规定了它的数据缓冲区的结构:
1. 第一个字节的数值在程序设计时确定,它决定允许输入的字符串最大长度(含回车符在内)。
2. 第二个字节在功能调用完成后由DOS填写,记录实际输入的字符个数(不计回车)。
3. 第三个字节开始往后的区域用来存放程序运行过程中实际输入的字符串内容。
以你的数据为例,程序运行过程中执行到这一次的0AH号功能调用时,你最多可以输入9个字符,再输入字符DOS系统将不予理睬,等你敲回车。你敲了回车以后,第2个字节记录你输入的字符,最多是9。系统所接受的字符加上回车符会保存在第3个字节开始往后的数据区中。
你这样设计的数据区,显然是为使用DOS的0AH号功能调用(字符串输入)而准备的。
DOS的0AH号功能调用规定了它的数据缓冲区的结构:
1. 第一个字节的数值在程序设计时确定,它决定允许输入的字符串最大长度(含回车符在内)。
2. 第二个字节在功能调用完成后由DOS填写,记录实际输入的字符个数(不计回车)。
3. 第三个字节开始往后的区域用来存放程序运行过程中实际输入的字符串内容。
以你的数据为例,程序运行过程中执行到这一次的0AH号功能调用时,你最多可以输入9个字符,再输入字符DOS系统将不予理睬,等你敲回车。你敲了回车以后,第2个字节记录你输入的字符,最多是9。系统所接受的字符加上回车符会保存在第3个字节开始往后的数据区中。
展开全部
汇编中用buffer定义缓冲区。buffer db 10,?,10 dup(?)
第一个字节存放输入字符存放区大小,本例中最多存放9个字符,一个回车符,值为10。
第二个字节初始状态为空,从服务程序返回后,有服务程序填入实际输入的字符个数,不包括回车。
第三个字节之后存放输入的字符和回车。
如果从键盘上输入“ABCDE↙”从服务程序返回后,缓冲区各字节内容依次为:10,5,41h,42h,43h,44h
45h,0dh,........。
如果多输的话如“abcdefghijk”缓冲区各字节内容依次为10,9,键盘输入的前九个ascll码,0dh。所以就是“abcdefghi”超出的ijk会被丢弃。
希望对你有帮助。。
第一个字节存放输入字符存放区大小,本例中最多存放9个字符,一个回车符,值为10。
第二个字节初始状态为空,从服务程序返回后,有服务程序填入实际输入的字符个数,不包括回车。
第三个字节之后存放输入的字符和回车。
如果从键盘上输入“ABCDE↙”从服务程序返回后,缓冲区各字节内容依次为:10,5,41h,42h,43h,44h
45h,0dh,........。
如果多输的话如“abcdefghijk”缓冲区各字节内容依次为10,9,键盘输入的前九个ascll码,0dh。所以就是“abcdefghi”超出的ijk会被丢弃。
希望对你有帮助。。
参考资料: 新编汇编语言程序设计
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
汇编中用buffer定义缓冲区。buffer
db
10,?,10
dup(?)
第一个字节存放输入字符存放区大小,本例中最多存放9个字符,一个回车符,值为10。
第二个字节初始状态为空,从服务程序返回后,有服务程序填入实际输入的字符个数,不包括回车。
第三个字节之后存放输入的字符和回车
db
10,?,10
dup(?)
第一个字节存放输入字符存放区大小,本例中最多存放9个字符,一个回车符,值为10。
第二个字节初始状态为空,从服务程序返回后,有服务程序填入实际输入的字符个数,不包括回车。
第三个字节之后存放输入的字符和回车
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询