Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11639
Последний выпуск: 19.06.2015

Данные в ассемблере

Автор: Руслан Аблязов
6 октября 2006 года

Секции .data, .data? и .const нужны для определения данных программы. Место под данные резервируется с помощью директив db, dw, dd, dq, dt.

db - 1 байт
dw - 2 байта - 1 слово
dd - 4 байта - 2 слова
dq - 8 байт - 4 слова
dt - 10 байт

Секция .data наиболее универсальная мы резервируем память под данные и сразу же инициализируем их, т.е. задаём им начальные значения. Все данные из этой секции включаются в исполнимый файл. Секция .data? менее гибкая, так как данные нельзя инициализировать. Все данные в этой секции не включаются в исполнимый файл, поэтому место только резервируется, но начальные значения не задаются. Данные в обеих секциях имеют полный режим доступа. Секция .const предназначена только чтения. Но ошибок не возникает при попытке изменить эти данные (????). Эта секция самая бесполезная.

.data
Perem dd 0000FF11h
X1	dw 01235h
Binary db 00111010b
	dd 11225599h
decimal dw 28d
large	dq 01123456789ABCDEFh			
	dw 1011100101010111b
	.data?
Perem1 dd ?
Perem2 dq ?
Perem5 dw ?
	Dd ?
	Dw ?
Perem4 db ?
	..const
Const1 dd 012345678h
	dw 768d

Строки.

В ассемблере можно задавать только ANSI строки, Unicode строки сложнее задавать и для их обработки существует целый ряд API функций. В ассемблере также можно вместо присваивания однобайтовой переменной некоторого числа можно присвоить переменно букву. Но, в конечном счете, эта переменная будет равна коду буквы в кодировке ANSI. При инициализации символа можно использовать и кавычки и апострофы - без разницы.

	.data
Char1 db 'W'
Char2 db 'Й'
	db  "r"

Всё выше написанное тоже самое что и:

	.data
Char1 db 57h
Char2 db 0C9h
	db  72h

При объявлении строк можно просто написать стоку после директивы db. Это воспринимается как последовательность символов

String db "ASM"
Тоже самое:
String db 'A'
	Db "S"
	Db "M"

Тоже самое:

String db 41h
	Db 53h
	Db 4Dh

Тоже самое:

String db 41h, 53h, 4Dh

При передаче строк функциям в качестве параметров надо чтобы в конце строки был 0, для того чтобы функция смогла найти конец строки.

String db "ASM",0
Msg	db "First ASSEMBLER program",0
Ttl	db 'Hello, World!!!!',0

Заполнение данными.

Иногда нужно описать много одинаковых переменных примерно штук 30. Вы будете делать так

	db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; 30 раз

Это неудобно и некрасиво, тем более можно обсчитаться. Для сделана директива DUP.

	db 30 DUP (0) ; тот же результат

в скобках указываем, чем надо заполнять, можно использовать символы в кавычках, обязательно чтобы размер в скобках совпадал с директивой.

Примеры:

	Dd 10 DUP ("в")
	Dw 45h DUP (0DF23h)
	Dd 100b DUP (12345678h)

С данными всё понятно. Читаем следующий урок. На 6 уроке мы будем говорить о метках и их использовании.


Назад | Оглавление | Далее

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
34K
01 января 2008 года
Diuk
3 / / 01.01.2008
+2 / -6
Мне нравитсяМне не нравится
1 января 2008, 19:43:58
Тепер я понимаю Pascal -- SUXXX
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог