Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с адресацией 
V
    Опции темы
DarkProg
Дата 30.5.2010, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

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



В общем суть такова пытаюсь разобраться с режимами адресации, сейчас пытаюсь осилить косвенную адресацию
Объявляю переменную stk со значение 102, и пытаюсь это же значение вывести сначала взяв адрес переменной stk, который загоняю в eax, потом при помощи dword ptr пытаюсь получить значение адрескоторого в еах, далее макрос на вывод, но получаю какую-то ерунду.
Просьба знающим объяснить что не так

Код


    include \masm32\include\masm32rt.inc

    .data?
      value dd ?
    .data
      item dd 0
      stk dw 102
    .code

start:
    call main
    inkey
    exit

main proc

    cls
    lea eax, stk
    mov ebx, dword ptr [eax]
    print str$(ebx), 10, 13

    ret

main endp
end start



--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

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


Администратор
**


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

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



1) может быть регистр ds не инициализирован адресом сегмента данных?

2)в 7-ой строке вместо stk dw 102 нужно stk dd 102
или
Код

    lea eax, stk
    xor ebx, ebx
    mov bx, [eax]
    print str$(ebx), 10, 13


Это сообщение отредактировал(а) iff - 30.5.2010, 17:26


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
DarkProg
Дата 30.5.2010, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

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



Цитата(iff @  30.5.2010,  17:23 Найти цитируемый пост)
в 7-ой строке вместо stk dw 102 нужно stk dd 102

Ага изменил получаю то что надо.
Похоже ошибся с размером переменных
ПОправьте если не прав
db - это 1 байт
dw - это слово, т.е. 2 байта
dd - это двойное слово, т.е. 4 байта 

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

Цитата(iff @  30.5.2010,  17:23 Найти цитируемый пост)
может быть регистр ds не инициализирован адресом сегмента данных?

Поясните как я должен был его инициализировать???


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
iff
Дата 30.5.2010, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Вот так можно инициализировать:
Код

mov ax, @data
mov ds, ax

Но это в ДОС так делается... В виндовсе может и не надо, может там регистр уже при загрузки содержит значения сегмента данных
Цитата(DarkProg @  30.5.2010,  18:45 Найти цитируемый пост)
ПОправьте если не прав

прав

Цитата(DarkProg @  30.5.2010,  18:45 Найти цитируемый пост)
а получал я ерунду, почему???

потому что загружалась в ebx значение переменной stk и ещё 2 байта, которые расположены за этой переменной


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
DarkProg
Дата 30.5.2010, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

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



Цитата(iff @  30.5.2010,  21:22 Найти цитируемый пост)
потому что загружалась в ebx значение переменной stk и ещё 2 байта, которые расположены за этой переменной 

Понятно, понятно.

Про DS - попробую, посмотрю.

Я ещё завтра поразбираюсь если чего не пойму, то напишу.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
DarkProg
Дата 31.5.2010, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

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



Итак возвращаясь к нашим баранам.
Все режимы разобрал кроме одного, а именно базового с индексированием
Пытаюсь скомпилировать, а получаю ошибку что якобы неможет он работать с регисрами разных размеров.
ПРосьба поясните что не так
Вот код
Код

; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
    include \masm32\include\masm32rt.inc
; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

comment * -----------------------------------------------------
                     Build this console app with
                  "MAKEIT.BAT" on the PROJECT menu.
        ----------------------------------------------------- *

    .data?
      value dd ?

    .data
      item dd 0
      align 2
      mas db 0,1,2,3,4,5,6,7,8,9

    .code

start:
   
; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

    call main
    inkey
    exit

; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

main proc

    cls
    
    mov di, 5
    xor eax,eax
    lea ebx, mas
    mov al, byte ptr [ebx][di]+2
    print str$(eax), 10, 13

    ret

main endp

; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

end start




--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
iff
Дата 31.5.2010, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 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, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
DarkProg
Дата 31.5.2010, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

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



Спасибо iff.

А теперь вы бы не могли поянить мне: в это режиме нужно сделать так чтобы первый адрес был адресом откуда мы хоти считать данные, второй - это смещение относительно того адреса откуда пытаемся получить данные, к смещению записанному в индексный регистр можно добавить ещё значение смещения уже в виде числа, правильно????
Все указанные регистры должны быть одного размера, ну т.е. первый адрес 32разряда, второй тоже 32разряда - это и была моя основная ошибка, да????


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
iff
Дата 31.5.2010, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Думаю, что да


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
DarkProg
Дата 31.5.2010, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

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



Цитата(iff @  31.5.2010,  18:10 Найти цитируемый пост)
Думаю, что да 

Спасибо за помощь.
Воде разобрался и вроде понял smile
Считаю тему закрытой


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

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

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

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


 




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


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

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