Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 321
от 22.12.2005, 09:21

Администратор:Калашников О.А.
В рассылке:Подписчиков: 250, Экспертов: 23
В номере:Вопросов: 1, Ответов: 1


Вопрос № 31609: Здравствуйте уважаемые эксперты, у меня такой вопрос: как в программах написанных на ассемблере объявлять переменные и по каким правилам ими можно манипулировать? Например Паскале есть раздел VAR, в котором объявляютя перемынные, если-ли подобный...

Вопрос № 31.609
Здравствуйте уважаемые эксперты, у меня такой вопрос:
как в программах написанных на ассемблере объявлять переменные и по каким правилам ими можно манипулировать? Например Паскале есть раздел VAR, в котором объявляютя перемынные, если-ли подобный раздел в ассемблере, если есть где? Да и еще, нужно-ли при объявлении переменных в ассемблере, указывать тип данных, к которому принадлежит данная переменна? Если да, то какие типы существуют применительно к ассемблеру?
Заранее благодарю за полный, исчерпывающий ответ :)
Отправлен: 16.12.2005, 12:57
Вопрос задал: Goff (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sager
Здравствуйте, Goff!
Переменные на ассемблере можно объявлять где угодно и когда угодно. В exe-программах правда предусмотрел раздел(сегмент) .data,где их можно объявлять. Но это необязательно. Правда в виндовс по умолчанию нельзя писать в сегмент кода, поэтому,если ты объявишь ее там, а не в data то программа завершится с ошибкой. Чтобы это обойти нужно просто указать линкеру в опциях, чтобы он разрешил писать в сегмент кода. Переменные в ассемблере объявляются так(и типом подобно паскалевским здесь нету(типа знаковые, булевские множества, array(массив в ассемблере сделать можно, но типа такого как в паскале нету))):
datab db 0 - переменная размером 1 байт
dataw dw 1234 - 2 байта
datad dd 12345678 - 4 байта
dataf df 0 - 6 байт
dataq dq 0 - 8 байт
datat dt 0 - 10 байт
mas db 512 dup(2) - массив из 512 двоек размером по байту(т.е. на каждую двойку отводится 1 байт)
mas2 dw 512 dup(2) - массив из 512 вдоек размером по 2 байта(т.е. на каждую двойку уже отводится по 2 байта)
strDOS db "any string$" - Для дос строка должна заканчиваться баксом
strWIN db "any string",0 - для виндовс - нулем
str2 db "any string",10,13,"new stroka$" - выводит строку до 10,13(перевод каретки и строки) и с новой строки выводит new stroka
asd db 5,1,2,4,65,3 - тоже своего рода массив
jmp_offset dw offset next,offset next1 - массив из смещений
Вроде бы все...
Ответ отправил: Sager (статус: Студент)
Отправлен: 16.12.2005, 19:50
Оценка за ответ: 5
Комментарий оценки:
Спасибо за "конеретный" понятливый ответ :)


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Архив рассылки
Отписаться
Вспомнить пароль

В избранное