![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 13.10.2016
Сообщений: 5
|
![]()
Почему так программа работает
Код:
Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
команда Call помещает адрес возврата в тот же стек, откуда Вы хотите сделать pop bx
в результате вашего лишнего pop bx : 1) в bx попадает мусор вместо ожидаемого значения ax, которое вы занесли в стек перед вызовом процедуры 2) при выполнении команды ret управление передаётся не в точку вызова в принципе можно обратиться и к тому значению, которое Вы занесли в стек через регистр sp, но Вам точно это нужно? |
![]() |
![]() |
![]() |
#3 | |
Регистрация: 13.10.2016
Сообщений: 5
|
![]() Цитата:
Что-то типо? Вроде работает. Правильно? Код:
|
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() |
![]() |
![]() |
![]() |
#5 |
(aka Jin X) !RTFM!
Форумчанин
Регистрация: 14.12.2014
Сообщений: 296
|
![]()
Только обычно bp сохраняют предварительно (и потом восстанавливают), и тогда будет mov bx,[bp+4] (только почему бы сразу не записывать в dx)?
А ещё можно сделать так: Код:
![]()
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C++ Работа со стеком | Евангелина Гедерт | Помощь студентам | 0 | 16.06.2014 02:44 |
Работа со стеком | ksu04061992 | Помощь студентам | 0 | 28.05.2012 01:37 |
Работа со стеком | YTP0 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 06.04.2011 17:40 |
Работа со стеком | 0479 | Общие вопросы по Java, Java SE, Kotlin | 2 | 27.02.2011 21:38 |
Работа со стеком | KBAC | Помощь студентам | 0 | 26.12.2010 12:54 |