汇编语句: buffer db 10,?, 10 dup(' ') 为什么只能输入的字符只有10个,求大神具体解释下

或者发个具体介绍汇编数据定义的链接也行... 或者发个具体介绍汇编数据定义的链接也行 展开
 我来答
百度网友dd2a4ae
2012-11-25 · TA获得超过1.6万个赞
知道大有可为答主
回答量:2628
采纳率:11%
帮助的人:1654万
展开全部
这不是编程者的限制,而是DOS系统的功能设定。

你这样设计的数据区,显然是为使用DOS的0AH号功能调用(字符串输入)而准备的。

DOS的0AH号功能调用规定了它的数据缓冲区的结构:
1. 第一个字节的数值在程序设计时确定,它决定允许输入的字符串最大长度(含回车符在内)。
2. 第二个字节在功能调用完成后由DOS填写,记录实际输入的字符个数(不计回车)。
3. 第三个字节开始往后的区域用来存放程序运行过程中实际输入的字符串内容。

以你的数据为例,程序运行过程中执行到这一次的0AH号功能调用时,你最多可以输入9个字符,再输入字符DOS系统将不予理睬,等你敲回车。你敲了回车以后,第2个字节记录你输入的字符,最多是9。系统所接受的字符加上回车符会保存在第3个字节开始往后的数据区中。
小小_八哥
推荐于2018-03-26
知道答主
回答量:10
采纳率:0%
帮助的人:18.8万
展开全部
汇编中用buffer定义缓冲区。buffer db 10,?,10 dup(?)
第一个字节存放输入字符存放区大小,本例中最多存放9个字符,一个回车符,值为10。
第二个字节初始状态为空,从服务程序返回后,有服务程序填入实际输入的字符个数,不包括回车。
第三个字节之后存放输入的字符和回车。
如果从键盘上输入“ABCDE↙”从服务程序返回后,缓冲区各字节内容依次为:10,5,41h,42h,43h,44h
45h,0dh,........。
如果多输的话如“abcdefghijk”缓冲区各字节内容依次为10,9,键盘输入的前九个ascll码,0dh。所以就是“abcdefghi”超出的ijk会被丢弃。
希望对你有帮助。。

参考资料: 新编汇编语言程序设计

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
寸楚柯卯
2020-03-22 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:29%
帮助的人:867万
展开全部
汇编中用buffer定义缓冲区。buffer
db
10,?,10
dup(?)
第一个字节存放输入字符存放区大小,本例中最多存放9个字符,一个回车符,值为10。
第二个字节初始状态为空,从服务程序返回后,有服务程序填入实际输入的字符个数,不包括回车。
第三个字节之后存放输入的字符和回车
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式