Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Немного о переменных и адресации, Вконец запутался... 
:(
    Опции темы
Logree
Дата 5.8.2008, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



1.
допустим я пишу 

Код

var1 DB 255


здесь все ясно- резервируем байт и записывае туда значение 

Код

var DB 'Моя переменная$'


я же резервирую под переменную байт... а строка содержит 15 байт не понимаю механизм... объясните подробнее

не совсем понял с адресацией... как понял я:

если я указываю в квадратных скобках то указываю адрес с данными если без них то непостредственно данные (что-то вроде указателя в С++)

Код

mov ds:dx,15 ;заношу по какому-то адресу число 15?

mov ds:[dx],0014 ;а что делаю здесь?


и какая разница между

Код

mov dx,offset var
mov dx,byte ptr var
mov dx,[var]


и возможен ли последний способ записи?

вобщем с этим в голове полная каша...

 


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
Maka6er
Дата 5.8.2008, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 27.2.2007
Где: Киев

Репутация: 1
Всего: 3



Цитата(Logree @  5.8.2008,  19:01 Найти цитируемый пост)
код Ассемблера1:var DB 'Моя переменная$'highlightSyntax('asm_wODFhN','asm');я же резервирую под переменную байт... а строка содержит 15 байт не понимаю механизм... объясните подробнее

Просто такой способ записи - резервируется 15 байт. 


Цитата(Logree @  5.8.2008,  19:01 Найти цитируемый пост)
КодincludeSyntax('asm');mov ds:dx,15 ;заношу по какому-то адресу число 15?mov ds:[dx],0014 ;а что делаю здесь?
 - По адресу содержащемуся в dx записывается 0014



Цитата(Logree @  5.8.2008,  19:01 Найти цитируемый пост)
КодincludeSyntax('asm');mov dx,offset varmov dx,byte ptr varmov dx,[var]highlightSyntax('asm_mZhZDR','asm');и возможен ли последний способ записи?

1 - в dx адрес var
2 - приведение тиа: тип var к byte и занесение в dx
3 - в dx значение по адресу содержащемуся в var


Цитата(Logree @  5.8.2008,  19:01 Найти цитируемый пост)
и возможен ли последний способ записи?
 возможен

PM MAIL   Вверх
Logree
Дата 5.8.2008, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2




Цитата

Цитата(Logree @  5.8.2008,  19:01 )
mov ds:dx,15 ;заношу по какому-то адресу число 15?
mov ds:[dx],0014 ;а что делаю здесь?

 - По адресу содержащемуся в dx записывается 0014


1 тоесть если я пишу [dx] то содержание dx рассматривается как адрес?



2 
Код

var DB 'Моя переменная$'


тоесть нет разницы как я её объявлю можно DW DQ итд ? или от этого что-то изменится?

3 и еще... как эти 15 байт храняться? вот допустим у меня так
Код

DSEG SEGMENT
var DB 'kzkz$'
var1 DB 'mmm'
DSEG ENDS 

...

mov [BX+var+2],'r'  ;тоесть var1 теперь содержит 'mrm' ? 


4 и вообще чем является BX для строк?



Это сообщение отредактировал(а) Logree - 5.8.2008, 23:48


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
MIXers
Дата 6.8.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.8.2008

Репутация: нет
Всего: нет



Цитата(Logree @  5.8.2008,  23:40 Найти цитируемый пост)
и вообще чем является BX для строк?

BX просто регистр общего назначния. для строк (да и для памяти вообще) он используется для коственной адресации - хранит адрес куда нужно обратиться.

из кода в пункте 3 трудно понять будет ли varl содержать 'mrm', так как неизвестно что именно находиться в BX.


Это сообщение отредактировал(а) MIXers - 6.8.2008, 11:27
PM   Вверх
Logree
Дата 6.8.2008, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



а можете дополнить этот код так, чтобы можно было точно  сказать, что в var1 => 'mrm' smile 


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
MIXers
Дата 6.8.2008, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.8.2008

Репутация: нет
Всего: нет



ну var находится в начале сегмента значит его смещение равно 0 из этого следует

Код

  mov [BX+0+2],'r'


т.е. можно было его не складывать smile
а что бы varl было равно 'mrm' просто перешлем в BX ее адрес, но сдвинем не на двойку а на 1:

Код

  mov BX, offset varl
  mov [BX+1],'r'

думаю так...

З.Ы. я чесно говоря сам недавно стал асм баловаться могу в чемто и ошибиться smile 

Это сообщение отредактировал(а) MIXers - 6.8.2008, 20:31
PM   Вверх
Logree
Дата 6.8.2008, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



Ошибаться могут все smile  Спасибо...


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
airyashov
Дата 7.8.2008, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 1.7.2008

Репутация: 2
Всего: 6



Код

mov varl[1],'r'


Это сообщение отредактировал(а) airyashov - 7.8.2008, 13:54


--------------------
icq:3(один)7748666
mail:airyashov( а )inbox.ru
PM MAIL   Вверх
MIXers
Дата 7.8.2008, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.8.2008

Репутация: нет
Всего: нет



airyashov, во!)) вот так прикольней! запомню smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.4003 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.