Вопрос № 64402: есть программа:
CSEG segment
org 100h
DER
mov ah,9
mov dx,offset e
int 21h
int 20h
e db'Hello.$'
CSEG segment
end DER
Что обозначает на выходе программы символ db,в контексте e db 'Hello.$'?
Почему...Вопрос № 64432: Почему не работает код? Ожидание нажатия срабатывает а надпись 'Вы ввели y$' немогу получить...
Turbo Assembler Version 4.1 Copyright (c) 1988, 1996 Borland International
CSEG segment
assume CS:CSEG
org 100h
Start:
mov a...
Вопрос № 64.402
есть программа:
CSEG segment
org 100h
DER
mov ah,9
mov dx,offset e
int 21h
int 20h
e db'Hello.$'
CSEG segment
end DER
Что обозначает на выходе программы символ db,в контексте e db 'Hello.$'?
Почему именно db и что это команда ,оператор и т.д.?
Я так понял,что он закреплен жестко,так как и dx,в случае mov dx,offset.
Спасибо за ответы.
Отправлен: 27.11.2006, 12:37
Вопрос задал: Metrok (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Брона Вячеслав
Здравствуйте, Metrok!
Конструкция <name> db '<value>$' - это на самом деле не команда, а объявление с резервирования места в байтах и одновременно заполнение зарезервированной области байтами <value> текстовой константы, или переменной (это уже зависит от того, как программа будет его интерпритировать).
В Ассемблере есть несколько видов резервирования области памяти под переменные и/или константы. DB - резервирование байт, DW - резервирование слов (16 разрядов), DD - резервирование двойных слов (32 разряда), и т.д.
Есть замечательня книга "Programming for MS DOS" автор Rollings. Названия, к сожалению точно не помню, но народ активно программирующий на Ассемблере с ней знаком, и я даже встречал ее в электронных библиотеках. В этой книге приведено и очень подробно разбирается масса примеров по программированию на Ассемблере под МС ДОС.
Если найдете - не пожалеете потраченного на поиски времени.
Ответ отправил: Брона Вячеслав (статус: 1-ый класс)
Ответ отправлен: 27.11.2006, 13:18 Оценка за ответ: 5
Отвечает: Евгений Иванов
Здравствуйте, Metrok!
DEFINE BYTE
англ знаете?
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +78313145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 27.11.2006, 13:38
Отвечает: Перл-Харбор
Здравствуйте, Metrok!
e db'Hello.$' - это объявление переменной, точнее массива по 1 байту. e - название самой переменной, db тип переменной 1 байт, dw слово, dd 2 слова и т.д. Текст в скобках это и есть массив символов, функция 9, 21 прерывания выведет все символы до бакса. Offset это смещение переменной, от куда начинать вывод текста.
--------- Поддаться, что бы победить.
Ответ отправил: Перл-Харбор (статус: 1-ый класс)
Ответ отправлен: 27.11.2006, 15:47
Отвечает: _beast
Здравствуйте, Metrok!
db - это деректива, которая определяет данные размером в байт. Встречая такую дерективу, ассемблер вычисляет операнды и записывает их значения в последовательные байты памяти.
Ответ отправил: _beast (статус: 3-ий класс)
Ответ отправлен: 28.11.2006, 07:24
Вопрос № 64.432
Почему не работает код? Ожидание нажатия срабатывает а надпись 'Вы ввели y$' немогу получить...
Turbo Assembler Version 4.1 Copyright (c) 1988, 1996 Borland International