![]() |
|
|
![]()
|
|
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: нет Всего: 19 |
В общем суть такова пытаюсь разобраться с режимами адресации, сейчас пытаюсь осилить косвенную адресацию
Объявляю переменную stk со значение 102, и пытаюсь это же значение вывести сначала взяв адрес переменной stk, который загоняю в eax, потом при помощи dword ptr пытаюсь получить значение адрескоторого в еах, далее макрос на вывод, но получаю какую-то ерунду. Просьба знающим объяснить что не так
-------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 4 Всего: 16 |
1) может быть регистр ds не инициализирован адресом сегмента данных?
2)в 7-ой строке вместо stk dw 102 нужно stk dd 102 или
Это сообщение отредактировал(а) iff - 30.5.2010, 17:26 -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: нет Всего: 19 |
Ага изменил получаю то что надо. Похоже ошибся с размером переменных ПОправьте если не прав db - это 1 байт dw - это слово, т.е. 2 байта dd - это двойное слово, т.е. 4 байта А почему мой вариант не работал, вроде как если данные разные, то мой алгоритм поидее должен был выдавть нужное, а получал я ерунду, почему??? Поясните как я должен был его инициализировать??? -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 4 Всего: 16 |
Вот так можно инициализировать:
Но это в ДОС так делается... В виндовсе может и не надо, может там регистр уже при загрузки содержит значения сегмента данных прав потому что загружалась в ebx значение переменной stk и ещё 2 байта, которые расположены за этой переменной -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: нет Всего: 19 |
Понятно, понятно. Про DS - попробую, посмотрю. Я ещё завтра поразбираюсь если чего не пойму, то напишу. -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: нет Всего: 19 |
Итак возвращаясь к нашим баранам.
Все режимы разобрал кроме одного, а именно базового с индексированием Пытаюсь скомпилировать, а получаю ошибку что якобы неможет он работать с регисрами разных размеров. ПРосьба поясните что не так Вот код
-------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 4 Всего: 16 |
Строка 34:
mov edi, 5 Строка 37: mov al, [ebx][edi]+2 Это сообщение отредактировал(а) iff - 31.5.2010, 12:38 -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: нет Всего: 19 |
Спасибо iff.
А теперь вы бы не могли поянить мне: в это режиме нужно сделать так чтобы первый адрес был адресом откуда мы хоти считать данные, второй - это смещение относительно того адреса откуда пытаемся получить данные, к смещению записанному в индексный регистр можно добавить ещё значение смещения уже в виде числа, правильно???? Все указанные регистры должны быть одного размера, ну т.е. первый адрес 32разряда, второй тоже 32разряда - это и была моя основная ошибка, да???? -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 4 Всего: 16 |
Думаю, что да
-------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: нет Всего: 19 |
Спасибо за помощь. Воде разобрался и вроде понял Считаю тему закрытой -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |