Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2012, 22:22   #1
cesco10
 
Регистрация: 15.11.2012
Сообщений: 8
По умолчанию Вопрос от препода по ассемблеру

Помогите! на защите лабы по ассемблеру, меня препод попросил написать там определённые команды, в конечно итоге получилось такое:
Push ax
mov ax,3
Pop bx
Потом прозвучал вопрос, что останется в bx ?
cesco10 вне форума Ответить с цитированием
Старый 15.11.2012, 23:19   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

смотрите, push ax помещает содержимое регистра ax в стек
команда pop bx достаёт содержимое стека и помещает его в bx

поэтому ответ, в регистр bx будет то, что находилось в регистре ax на начало выполнения данного кода
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.11.2012, 23:35   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

cesco10, прочитайте следующие три статьи:
http://wasm.ru/article.php?article=ollydbg01
http://wasm.ru/article.php?article=ollydbg03
http://wasm.ru/article.php?article=ollydbg04

Час затреченного времени сэкономит вам кучу времени в будущем.

Если кратко, то порядок такой:
- запустить Ollydbg
- нажать F3 (открыть файл) и выбрать любой exe
- нажать пробел и ввести команды (те что вы написали)
- нажать правой кнопкой на первой команде из вашей программы и выбрать "New origin here"
- теперь нажимайте F7 (выполнение по шагам) и смотрите на стек и регистры. Сами всё увидите.

В общем читайте статьи по тем ссылкам. И оттуда узнаете подробно об иструкции, что я тут написал.

Если лень, то могу на картинках продемонстрировать:

Три введённых команды и регистр EAX (последние два байта регистра EAX - это AX):




После выполнения команды PUSH AX в стеке оказалось содержимое регистра AX:




После команды MOV AX, 3. Тройка скопировалась в регистр AX. Обращаем внимание на стек и то, что когда выполнится команда POP BX верхнее значение из стека скопируется в регистр BX:




Действительно, значение из стека переместилось в регистр BX. И значение 0004 исчезло из стека:


Последний раз редактировалось 8Observer8; 15.11.2012 в 23:42.
8Observer8 вне форума Ответить с цитированием
Старый 16.11.2012, 01:31   #4
cesco10
 
Регистрация: 15.11.2012
Сообщений: 8
По умолчанию

Спасибо, как я понял в BX будет то, что изначально было в AX?
cesco10 вне форума Ответить с цитированием
Старый 16.11.2012, 08:28   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

да. Вам же об этом ДВАЖДЫ сказали (второй раз даже в картинках)!

в регистре BX будет то, что находилось в регистре AX до начала выполнения данного кода!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.11.2012, 10:34   #6
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию



cesco10, всё, что мы вам здесь объяснили вы понастоящему поймёте, когда сами повторите (не поленитесь сейчас). Только отладчик (выполнение пошагам) закрепит результат, и снимет страх перед непониманием. Нажимайте F7 и смотрите на регистры. Экспериментируйте и импровизируйте!
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по ассемблеру добрый_фей Помощь студентам 2 01.11.2010 20:27
Атака ПРЕПОДА! Помогите студенту! wowka_khb Помощь студентам 1 02.04.2009 15:46
Помогите исправить прогу так чтобы препода удовлетворяла))) 812 Помощь студентам 3 25.05.2008 12:34
Сокрытие процесса от глаз вездесущего препода! психопес Помощь студентам 3 15.05.2008 18:15