Каждая строка может рассматриваться как массив байтов .
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