|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 29, 2003 21:16:40 Доброго времени суток. Объясните пожалуйста на паре примеров что такое PTR и где применяется. |
|
|
Дата: Ноя 29, 2003 21:28:34 · Поправил: Asterix Ну вот у Абеля так описывается: Оператор PTR
---------------
Оператор PTR используется совместно с атрибутами типа BYTE, WORD или
DWORD для локальной отмены определенных типов (DB, DW или DD) или с
атрибутами NEAR или FAR для отмены значения дистанции по умолчанию. Формат
оператора следующий:
тип PTR выражение
В поле "тип" указывается новый атрибут, например BYTE. Выражение имеет
ссылку на переменную или константу. Приведем несколько примеров оператора
PTR:
FLDB DB 22H
DB 35H
FLDW DW 2672H ;0бьектный код 7226
MOV AН,BYTE PTR FLDW ;Пересылает 1-й байт (72)
ADD BL,BYTE PTR FLDW+1 ;Прибавляет 2-й байт (26)
MOV BYTE PTR FLDW,05 ;Пересылает 05 в 1-й байт
MOV AX,WORD PTR FLDB ;3аносит в АХ байты (2235)
CALL FAR PTR[BX] ;Длинный вызов процедуры
Директива LABEL, описанная в следующем разделе, выполняет функцию,
аналогичную оператору PTR. |
|
|
Дата: Ноя 29, 2003 22:02:47 Извини за непонятливость. Он меняет тип переменной? Можно без книги? А то как то заумно сильно. |
|
|
Дата: Ноя 29, 2003 23:33:41 проще говоришь? Ну так вот сделал ты переменную типа байтом, и вдруг нате приперло табе в проге к ней как слову обратиться. Ну так вот ента штука ето и делает. За основу берет адрес инициализированной переменной. |
|
|
Дата: Ноя 29, 2003 23:43:23 Пример: equal db 'equ ' четыре символа вызывать процедуру копирования строки затратно, а запихать все 4 буквы в один регистр пожалуйста: mov eax, dword ptr equal теперь можно записать всё слово в память: mov [ebx],eax |
|
|
Дата: Ноя 30, 2003 17:03:16 · Поправил: S_T_A_S_ тип переменной? Как мне кажется, в асме нет ни типов ни переменных. Есть только данные и их адреса. Все остальное -- выдумки создателей программ ассемблеров. (для удобства) В MASMе, PTR применяется для явного указания, что операндом комманды является адрес. Например, напишем: XX equ 10000H mov reg, XX - загружает непосредственно данные 10000H. mov reg, DWORD PTR XX - загружает данные (4 байта), находащиеся по адресу 10000H. Здесь все просто. Если напишем: XX DD 10000H (ассемблер поместит по адресу XX данные 10000H при ассемблировании) то mov reg, XX загрузит данные, находащиеся по адресу XX (т.е. 10000H) Здесь видно, что MASM имеет не очень корректный синтаксис, т.е. неочевиден смысл предыдущей строки, если не учитывать, что такое XX. Чтобы загрузить байт, надо будет сделать mov reg8, BYTE PTR XX. (сменить "тип") MS пытается сделать из asma HLL. |
|
|
Дата: Ноя 30, 2003 18:25:40 В MASMе, PTR применяется для явного указания, что операндом комманды является адрес. Неверное утверждение. mov eax, [eax] Ну и где тут PTR, но операндом команды является DWORD что находится в памяти по адресу == eax. |
|
|
Дата: Ноя 30, 2003 19:41:20 · Поправил: Quantum PTR ещё очень полезен для переопределения структур. Например: имеем RECT, хотим превратить его в POINT. .DATA? rc RECT <> .CODE mov eax,OFFSET rc mov (POINT PTR [eax]).y,5Тоже самое можно сделать и через ASSUME. [offtopic] 2 Asterix: Я там ошибся с SYSCALL. В общем, можешь прописать обратно option prologue и т.д. [/offtopic] |
|
|
Дата: Ноя 30, 2003 19:58:24 [ Quantum: Я там ошибся с SYSCALL. В общем, можешь прописать обратно option prologue и т.д.] Объясни почему так, письмом, а то я запутался ;-) |
|
|
Дата: Ноя 30, 2003 20:01:21 Asterix А что объяснять? Просто я ошибся и всё :-) Думал, что SYSCALL всегда убирает пролог/эпилог, ан нет. |
|
|
Дата: Ноя 30, 2003 20:08:55 S_T_A_S_ Не грузи там же ясно на чертано "типа", а не "тип", а "типа байтом" я имел введу инициализацию, проще ассоциация конкретного байта ИМЕНЕМ. |
|
|
Дата: Ноя 30, 2003 20:48:53 Quantum Понял ;-) |
|
|
Дата: Дек 1, 2003 11:51:58 Asterix mov eax, [eax] Здесь нет неопределенности. Поэтому можно PTR не писАть. EvilsInterrupt Типа, не гружу :)))) Да, там ясно написано : Он меняет тип переменной? Только я автра забыл указать. |
|
|
Дата: Дек 1, 2003 18:07:18 Тут, блин, дискуссию развернуть... можно ведь. Кстати изучаю 8253, желание такое малость придуркаватое появилось: ПРИЦЕПИТЬ СХЕМКУ К КОМПУ И УПРАВЛЯТЬ ЯРКОСТЬЮ ЛАМПОЧКОЙ. Чо есть по данной тематике кинь. |
|
|
Дата: Дек 2, 2003 20:29:47 EvilsInterrupt Если вопрос лично ко мне, то могу только посоветовать подключить схемку к звуковухе. Имхо, и геморроя меньше и возможностей порядком больше. Особенно, если учесть, сколько можно лампочек подключить :) К тому же, на 16bit у меня, хм... ну 17:30. (Хоть это и оффтопик :-))) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.109 |