Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты по данной тематике Номер выпуска: | 1513 | Дата выхода: | 24.04.2012, 00:00 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 97 / 40 | Вопросов / ответов: | 1 / 1 | Консультация # 185866: Здравствуйте, уважаемые эксперты! Прошу вас помочь со следующим заданием. 1.Организация стековой памяти. Разработать программу с вызовом внутрисегментной команды CALL и RET ; 2.Организация стековой памяти. Разработать программу с вызовом межсегментной команды CALL и RET ; 3.Организация стековой памяти. Разработать программу вложенными вызо... Консультация # 185866: Здравствуйте, уважаемые эксперты! Прошу вас помочь со следующим заданием. 1.Организация стековой памяти. Разработать программу с вызовом внутрисегментной команды CALL и RET ; 2.Организация стековой памяти. Разработать программу с вызовом межсегментной команды CALL и RET ; 3.Организация стековой памяти. Разработать программу вложенными вызовами внутрисегментных и межсегментных команд CALL и RET. Благодарю, если сможете помочь.
Дата отправки: 20.04.2012, 23:18 Вопрос задал: NataD (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Наталия! 1.Организация стековой памяти. Разработать программу с вызовом внутрисегментной команды CALL и RET ;
При внутрисегментном вызове в стек заносится смещение следующей команды. Сегментный регистр CS не меняется По внутрисегментной команде ret извлекается из стека адрес, куда и передается управление
Код : _stack segment 'stack' dw 100h dup(?) _stack ends code segment 'code' assume cs:code start: mov ax, 5 call square mov ax, 4c00h int 21h square proc mul ax ret square endp code ends end start 2.Организация стековой памяти. Разработать программу с вызовом межсегментной команды CALL и RET ;
При межсегментном вызове в стек заносится сначала сегмент текущего кода, затем смещение следующей команды. После чего происходит длинный вызов подпрограммы По межсегментной команде ret из стека извлекаются и смещение и сегмент, т.о. происходит длинный возврат в точку вызова
Код : _stack segment 'stack' dw 100h dup(?) _stack ends code1 segment 'code' assume cs:code1 start: mov ax, 5 call square mov ax, 4c00h int 21h code1 ends code2 segment 'code' assume cs:code2 square proc far mul ax ret square endp code2 ends end start
3.Организация стековой памяти. Разработать программу вложенными вызовами внутрисегментных и межсегментных команд CALL и RET.
В этом примере сначала делаем межсегментный вызов подпрограммы square В которой происходит внутрисегментный вызов подпрограммы add1, из которой, в свою очередь, происходит межсегментный вызов подпрограммы sub1 В стек заносится каждый раз либо короткий адрес, либо длинный адрес, в зависимости от типа вызова.
Код : _stack segment 'stack' dw 100h dup(?) _stack ends code1 segment 'code' assume cs:code1 start: mov ax, 5 call square mov ax, 4c00h int 21h sub1 proc far dec ax ret sub1 endp code1 ends code2 segment 'code' assume cs:code2 square proc far mul ax call add1 ret square endp add1 proc near inc ax call sub1 ret add1 endp code2 ends end start  | Консультировал: Лысков Игорь Витальевич (Старший модератор) Дата отправки: 21.04.2012, 03:36 5 нет комментария ----- Дата оценки: 22.04.2012, 13:13 | Рейтинг ответа: 0 |
Оценить выпуск | Задать вопрос экспертам главная страница | стать участником | получить консультацию техническая поддержка | восстановить логин/пароль Дорогой читатель! Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно! МЫ РАБОТАЕМ ДЛЯ ВАС! |
Комментариев нет:
Отправить комментарий