注册 登录
编程论坛 汇编论坛

数据区定义问题

senyee 发布于 2006-12-09 18:17, 769 次点击
1 D1 DB 100dup(?)
d2 db 100
db ?
db 100dup(?) 二者有什么区别?
2 d1 db 'welcome'
能否用 0a 功能对它重新付值.....


谢谢....~~~
7 回复
#2
菜鸟上路2006-12-09 22:43

数组与单个变量有什么区别?

重新赋值?是在程序中赋值还是别的什么?

#3
senyee2006-12-10 00:05
2 d1 db 'welcome'
能否用 0a 功能对它重新付值.....

在程序中重新对他赋值
#4
菜鸟上路2006-12-10 11:54
这相当于数组,循环7次mov d1[di],0ah
#5
lefttime2006-12-10 16:00
1. D1 DB 100 dup(?) ;在这里是开辟100个字节单元,并没有对其赋值,保留其原值,即随机
d2 db 100 ;这是定义一个字节单元,并在这个单元存上十进制数100
db ? ;这是定义一个字节单元,存放的数随机
db 100 dup(?) ;在这里是开辟100个字节单元,存放数值随机
经过上面定义后,D1就是包含的内容就是100个随机字节数的数据区的首地址;而d2是包含102个字节数值的数据区的首地址,其中第一个是十进制数100,后面101个为随机数
2. d1 db 'welcome'
这当然能对它重新赋值,因为它完全符合10号中断的要求,但这里会出现一个问题,因为10号中断的格式为
DATA DB A,B,C
其中A为想要存放的字节数;B在输入串中自动赋值,也就是实际输入的字符个数;C开始就是存放的字符的首地址;
例如我可以这样对上个数据区这样赋值:
......
MOV AH,0AH
LEA DX,DATA
INT 21H
......
所以上述定义可以重新赋值,只是A=w也就是A=77H,这样,允许输入的字节数就有119个,数据区将会为其开辟119个空间。
#6
3037709572006-12-10 18:50
楼上说的好啊!我觉得对d1 db 'welcome'重新赋值还会出现一个问题就是对输入的字符串的长度应该是有限制的.但是我不知道对于这种情况(就这个来说我指的是就d1 db 'welcome'而言要重新赋值的话)应该限制要输入的字符串是几个字节具体是最多能输入几个字节还请楼上的朋友说明一下,谢谢你了!呵呵!
#7
senyee2006-12-11 23:00

非常感谢......

#8
lefttime2006-12-12 13:31
呵呵,上次忘了说了,一个字节代表了字符串长度,必然是FFH(256)个字符啦
1