每个字符串都可以看作是一个字节数组。
aString db "abcdef", 13, 10, "$"
byteArray db "a", "b", "c", "d", "e", "f", 13, 10, "$"
你可以用同样的方式输出两者:
mov dx, offset aString
mov ah, 09h ; DOS.PrintString
int 21h
mov dx, offset byteArray
mov ah, 09h ; DOS.PrintString
int 21h
这是因为数组中的元素在内存中紧密地跟随在一起,所以对于aString和byteArray,存储上没有实际区别。而区分它们的一点是,当人们谈论一个数组时,他们主要关心的是存储在数组元素中的数值,而谈论一个字符串时,他们不关心组成字符串的字符的实际ASCII代码。
在 `aString db "abcdef", 13, 10, "$"` 中,我们看到字符 a、b、...,而在 `byteArray db "a", "b", "c", "d", "e", "f", 13, 10, "$"` 中,我们看到数字 97、98、...(通常我们开始编写时也会使用数字)。
但并非所有的“数组”都是字符串,因为您可以有具有字长元素或双字长元素的数组。
byteArray db 1, 2, 3 <== 3 bytes storage
wordArray dw 1, 2, 3 <== 6 bytes storage
dwordArray dd 1, 2, 3 <== 12 bytes storage