Консультация № 200830
15.05.2021, 18:08
0.00 руб.
0 1 1
Уважаемые эксперты.
Обоснуйте пожалуйста "общепринятое" утверждение, что "Символьная строка определяется только директивой DB, в которой указывается более двух символов в нормальной последовательности слева направо. Следовательно, директива DB представляет единственно возможный формат для определения символьных данных".

Возьмем для примера: String db 'Hello, world!$'.

Сам я, пытаясь объяснить это утверждение, "притягиваю за уши" другое утверждение, что символы (символьная строка) будут выводиться на экран, до тех пор, пока не встретится символ "$" (обозначающий конец строки).
Получается, хоть мы и "забронировали" в памяти за символьной строкой (String) 1 байт, но выводиться (занимать ячейки памяти) будут все символы строки вплоть до символа $.
Но, тогда, с таким же успехом, можно использовать и директивы DW,DD
Почему нельзя написать:
String dw 'Hello, world!$'
или
String dd 'Hello, world!$'

Обсуждение

давно
Посетитель
402218
66
15.05.2021, 19:03
общий
это ответ
здравствуй.
Надо просто подумать над командой
string dw 'Hello, world$'. Если мы знаем что dw резервирует в памяти место под два байта, то в теории Мы должны были бы прийти у выводу что наша строка 'Hello, world$' состояла бы из двубайтовых значений. Но ascii таблица имеет 256 значений - что соответствует одному байту. Ну даже можно и дальше домыслить, если бы данное выражение было валидным, то получилось бы что мы объявили последовательность двойных байтов - 6548h,6c6c,206f... где хранилась бы последовательность. Но так как все таки логично, что символы помещаются в байт, то видимо и решили синтаксис сделать таким.
Форма ответа