Вопрос № 32252: Читаю рассылку Калашникова. Возникли следующие вопросы:
Что означает equ? Объясните (и расшифруйте) доходчиво, а то что-то не совсем пока понятно?
...
Message db 'Hello!$' почему здесь $
fileName db 'file',0 а здесь 0
db - de...Вопрос № 32262: Попробовал скомпилировать и запустить программу из 3 части рассылки.Она должна что-то выводить на экран, но ничего не выводит. Почему?
И ещё. Когда я её компилировал TASM'ом всё скомпилировалось без проблем, а MASM выдаёт такую ошибку - LINK : f...
Вопрос № 32.252
Читаю рассылку Калашникова. Возникли следующие вопросы:
Что означает equ? Объясните (и расшифруйте) доходчиво, а то что-то не совсем пока понятно?
...
Message db 'Hello!$' почему здесь $
fileName db 'file',0 а здесь 0
db - define byte, т.е. резервируем 1 байт. Каким образом этот байт связан
со строкой?
db - define byte
dw - define word
Это ясно, а вот
dd - это define dowble word ?
dq - ?
dt - типа define ten bytes - так что ли?
Если есть еще какие-то define > расшифруйте пожалуйста - все осмысленное дается легче!
Отправлен: 26.12.2005, 22:12
Вопрос задал: REFERI (статус: Студент)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Евгений Иванов
Здравствуйте, REFERI!
EQU - это эквивалент. то есть, то, что будет заменяться.
например, я применяю вот такие вещички
b equ byte
w equ word
ww equ dword
t equ type
ofs equ offset
m equ mask
при этом потом мне писать меньше:
mov al, [b esi]
это значит то же , что и
mov al, [byte esi] или mov al, [byte ptr esi]
доллар и 0 - это окончание строки. вот и всё. такое соглашение.
DB никак не связан со строкой. просто байты можно указывать в виде строки - ьак иногда проще.
например,
szIn db 'o:in', 0
szOut db 'o:out', 0
szDid db 'o:did', 0
ну и остальные объявление данных есть, dw, dd.
DB Define byte
DD Define doubleword
DF Define farword
DP Define six-byte unit
DQ Define quadword
DT Define ten-byte unit
DW Define word
DP = DF - Это 6 байт (48 бит). Note: This directive is normally only used with the 80386 processor.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 26.12.2005, 22:22 Оценка за ответ: 5 Комментарий оценки: Спасибо!
Отвечает: Юра
Здравствуйте, REFERI!
1) Директива EQU эквивалентна '=', с той разницей, что значением выражения с исп. '=' может быть только целое число.
2) К строке db имеет то отношение, что определяет место резервируемое под элемент строки
3) dd определяет двойное слово
dq определяет учетверенное слово
dt определяет удесятеренное слово
Ответ отправил: Юра (статус: 2-ой класс)
Отправлен: 26.12.2005, 23:48 Оценка за ответ: 2 Комментарий оценки: По-русски я знаю как это! Я спрашивал по-английски! <К строке db имеет то отношение, что определяет место резервируемое под элемент строки Это вообще цитата моего вопроса а не ответ. Хотя вы еще 2-ой класс и вроде бы как можно вам это простить, но я считаю что лучше вас поправить сразу, чтобы ответы ваши учитывались при здаче экзамена, а то зря потратите время, давая такие ответы... Хороший
ответ можно посмотреть выше!
Отвечает: Лысков Игорь Витальевич
Здравствуйте, REFERI!
Немного дополню (0 и $):
Если строка заканчивается $, значит она будет выводиться на экран с помощью
mov ah,9
lea dx, message
int 21h
Просто ДОС выросла из других ОС, где строка заканчивалась долларом, ну и
для совместимости так и осталось.
Потом поняли, что нулем удобнее заканчивать, но было уже поздно.
Кстати, это единственная функция, где используется знак доллара.
И еще о строках. Есть два способа записи строк.
Первый, принятый в С: строка заканчивается нулем.
Второй, принятый в Паскале: вначале пишется длина строки, затем сама строка.
В этом способе получается ограничение - строка не может быть больше 255.
Попробовал скомпилировать и запустить программу из 3 части рассылки.Она должна что-то выводить на экран, но ничего не выводит. Почему?
И ещё. Когда я её компилировал TASM'ом всё скомпилировалось без проблем, а MASM выдаёт такую ошибку - LINK : fatal error LNK1561: entry point must be defined.В чём дело?
Заранее спасибо
Приложение:
Отправлен: 27.12.2005, 05:27
Вопрос задал: IceBerk (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Евгений Иванов
Здравствуйте, IceBerk!
_beg:
push 3
pop ax
int 4*4
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 27.12.2005, 09:58