Вопрос № 91347: ДОБРЫЙ ДЕНЬ!!
В приложении текст программы с рассыки "Ассемблер? Это просто! Учимься программировать", выпуск13. Я в ней вообще ничего понять не могу((
Пожалуйста, если вам не сложно, объясните мне:
если, например,
mov ax,12...
Вопрос № 91.347
ДОБРЫЙ ДЕНЬ!!
В приложении текст программы с рассыки "Ассемблер? Это просто! Учимься программировать", выпуск13. Я в ней вообще ничего понять не могу((
Пожалуйста, если вам не сложно, объясните мне:
если, например,
mov ax,1234h
mov bx,0110h
jmp ax:[bx] (или ax:bx ...)
ТОгда jmp "прыгнет" на "1234h:0110h"
Но в тексте программы есть
jmp dword ptr cs:[Off_return] .
Я не понимаю, зачем dword ptr , а не jmp cs:[Off_return]...(( не могли бы Вы чуть поподробнее оьяснить?
Всего наилучшего! Удачи!
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Покритюк Виталий Леонидович!
Команда дальний перход jmp dword ptr cs:[Off_return]
т.е. из переменной Off_return в памяти берутся сразу CS и IP префикс CS: указывает откуда брать данные по умолчанию используется DS
команда ближний переход jmp cs:[Off_return]
из памяти будет взято только IP.
Удачи!
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Практикант)
Ответ отправлен: 14.06.2007, 10:49 Оценка за ответ: 4
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Покритюк Виталий Леонидович!
Для начала замечу, что запись jmp ax:[bx] некорректна, потому что в формировании
адреса (скажем так, старшей его части) может учавствовать только сегментный регистр (DS, ES, CS, SS).
Т.е. правильно будет, например jmp cs:[bx]
Теперь по сути вопроса:
Переходы могут как внутри сегмента, так и со сменой сегмента.
Что произойдет, если дадим команду jmp cs:[off_return]?
Будет переход на ближний адрес, хранящийся в слове cs:off_return в том же сегменте.
Что поменяется для команды jmp dword ptr cs:[Off_return]?
Будет осуществлен переход на длинный адрес (DWORD PTR!), хранящийся в двойном слове cs:[Off_return] (смещение+сегмент).
Т.е. будет переход на адрес в другом сегменте! Что и необходимо для данной программы...
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Практикант)
Ответ отправлен: 14.06.2007, 10:54 Оценка за ответ: 5 Комментарий оценки: Ой, а я уже не помню, сколько сегмент имеет смещений? Ну я, что-то понял... ... а что если не jmp cs:[off_return] а jmp cs:off_return (без квадратных скобок). БОЛЬШОЕ ВАМ СПАСИБО! Хорошо, что хоть кто-то может помочь.... я не знаю, что бы делал сам... УДАЧИ!