26.08.2019, 02:41 [+3 UTC]
в нашей команде: 3 783 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.77 (31.05.2019)
JS-v.1.34 | CSS-v.3.35

Общие новости:
28.04.2019, 09:13

Форум:
24.08.2019, 19:56

Последний вопрос:
25.08.2019, 17:53
Всего: 150144

Последний ответ:
25.08.2019, 20:19
Всего: 258879

Последняя рассылка:
26.08.2019, 02:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
29.08.2011, 13:35 »
Посетитель - 380186
Cпасибо за помощь в решении задачи! [вопрос № 183927, ответ № 268113]
03.03.2019, 19:09 »
VikaViktoriya
Роман, я благодарю вас от души!!! [вопрос № 194854, ответ № 277573]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 91
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 67
Kdsfofwe21
Статус: 2-й класс
Рейтинг: 0

Перейти к консультации №:
 

Консультация онлайн # 195670
Раздел: • Assembler
Автор вопроса: lordwarrior161 (Посетитель)
Отправлена: 20.05.2019, 14:42
Поступило ответов: 1

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Кучу теории уже перечитал, но не могу понять, что от меня хотят в этом вопросе:

Исходные данные: SP=0324h, DS=4302h, DI=0073h, AX=4852h, BX=3010h, DX=0000h, SI=0071h

Покажите ситуацию в памяти до и после выполнения стековых команд, а также состояние участвующих в этом регистров: 1) PUSH AX 2) POP DX


как это можно сделать без компилятора и отладчика, в теории про них ни слова

Состояние: Консультация закрыта

Ответ # 278189 от Лысков Игорь Витальевич (Старший модератор)

Здравствуйте, lordwarrior161!
Вопрос сводится к пониманию того, как работает стек. Поэтому, самое главное, надо уяснить, что:

1) Регистр SP всегда указывает на адрес ЗА ячейкой памяти, которая является вершиной стека
2) При операции PUSH происходит: первое - уменьшается значение SP на 2 и второе - значение, которое помещается в стек, записывается по адресу SS:SP
3) При операции POP происходит обратное: первое - чтение слова по адресу SS:SP куда указано и второе - увеличение значение SP на 2

А в задании требуется показать содержимое стека, регистров SP, AX и DX до и после операций PUSH и POP


Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 20.05.2019, 17:02

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 195670

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 1

= общий = | 20.05.2019, 14:48 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Перед тем, как получить ответ на вопрос "Чего хотят?" надо бы разобраться с тем, как работает стек.
Тут вопросы есть?

Вот ссылочка, чтобы еще раз освежить в памяти.

-----
Последнее редактирование 20.05.2019, 14:49 Лысков Игорь Витальевич (Старший модератор)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 2

= общий = | 20.05.2019, 14:51 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Вообще-то, до боли знакомый вопрос... smile
Вы его не задавали на Cyberforum-е?

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 3

= общий = | 20.05.2019, 14:59 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
надо бы разобраться с тем, как работает стек.


Да вроде по теории все понятно, а вот с практикой проблемы. Не получается это все на бумаге и в документе изобразить

© Цитата: Лысков Игорь Витальевич
Вообще-то, до боли знакомый вопрос...
Вы его не задавали на Cyberforum-е?


Нет, я там не зарегистрирован, за подобными консультациями обращаюсь впервые на вашем сайте smile

-----
Последнее редактирование 20.05.2019, 15:01 lordwarrior161 (Посетитель)

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 4

= общий = | 20.05.2019, 15:01 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Ага, нашел! Вы там зарегистрировались, как ras2 smile

Так понимаю, что в целом, что такое стек понятно... Хорошо.
"Чего хотят?"
А хотят, чтобы Вы указали:
1) участок памяти, выделенной под стек, что там находится (если знаем, конечно).
2) интересующие нас адреса этой памяти.
3) куда указывает регистр SP
И все это до операций PUSH/POP, после PUSH AX и после операции POP DX
Ну и, кроме этого, содержимое регистров AX и DX (SP само собой)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 5

= общий = | 20.05.2019, 15:05 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Т.е, что произойдет, если сделаем PUSH AX?
Для этого надо четко понять, как стек адресуется, куда и как он растет и уменьшается

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 6

= общий = | 20.05.2019, 15:08 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

© Цитата:
Нет, я там не зарегистрирован, за подобными консультациями обращаюсь впервые на вашем сайте
Значит, по одному учебнику учитесь smile
Хорошо, чтобы все улеглось в голове, рассказывайте, что Вы знаете о стеке

-----
Последнее редактирование 20.05.2019, 15:08 Лысков Игорь Витальевич (Старший модератор)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 7

= общий = | 20.05.2019, 15:17 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Ну что там? А не то скоро я не смогу оперативно ответить...

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 8

= общий = | 20.05.2019, 15:20 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Вот Вам 3-и картинки
1) до PUSH AX

2) между командами

3)и после

Найдите отличия.
smile

-----
Последнее редактирование 20.05.2019, 15:24 Зенченко Константин Николаевич (Старший модератор)

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

lordwarrior161
Посетитель

ID: 403037

# 9

= общий = | 20.05.2019, 15:23 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
Значит, по одному учебнику учитесь


может это даже мой однокурсник-заочник smile

© Цитата: Лысков Игорь Витальевич
рассказывайте, что Вы знаете о стеке


то что растет стек по направлению к началу памяти, а уменьшается к концу

нет понимания, что делается с регистрами после выполнения команд

lordwarrior161
Посетитель

ID: 403037

# 10

= общий = | 20.05.2019, 15:26 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Зенченко Константин Николаевич
Найдите отличия.


значение регистра AX записалось в значение регистра DX

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 11

= общий = | 20.05.2019, 15:29 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата:
значение регистра AX записалось в значение регистра DX
Ну, это в итоге... smile
Важно не это, а как это происходило... Чем отличается первая и вторая картинка?

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 12

= общий = | 20.05.2019, 15:30 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
Чем отличается первая и вторая картинка?


Значение регистра SP поменялось smile

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 13

 +1 
 
= общий = | 20.05.2019, 15:34 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Ну хорошо, чтобы пришло понимание, рассказываю:
1) Регистр SP всегда указывает на адрес ЗА ячейкой памяти, которая является вершиной стека
2) При операции PUSH происходит: первое - уменьшается значение SP на 2 и второе - значение, которое помещается в стек, записывается по адресу SS:SP
3) При операции POP происходит обратное: первое - чтение слова по адресу SS:SP куда указано и второе - увеличение значение SP на 2

-----
Последнее редактирование 20.05.2019, 15:35 Лысков Игорь Витальевич (Старший модератор)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 14

= общий = | 20.05.2019, 15:38 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Вот теперь нарисуйте на бумажке нужный участок памяти, покажите, куда указывает SP
И покажите, какие будут происходить изменения после PUSH и POP

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 15

= общий = | 20.05.2019, 15:46 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Получается?
Или мне нарисовать картинки?

-----
Последнее редактирование 20.05.2019, 15:46 Лысков Игорь Витальевич (Старший модератор)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 16

 +1 
 
= общий = | 20.05.2019, 15:47 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
Получается?
Или мне нарисовать картинки?


Рисую smile

Но все равно ничего не понятно smile

-----
Последнее редактирование 20.05.2019, 15:49 lordwarrior161 (Посетитель)

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 17

= общий = | 20.05.2019, 15:52 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Что именно не понятно?

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 18

= общий = | 20.05.2019, 15:54 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Вот что накалякал на бумаге smile

-----
 Прикрепленный файл (кликните по картинке для увеличения):

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 19

= общий = | 20.05.2019, 15:57 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Непонятно, потому что без привязки к самому стеку.

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 20

 +1 
 
= общий = | 20.05.2019, 16:15 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Смотрите рисунки, тоже на примере AFD
До PUSH


После PUSH

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 21

= общий = | 20.05.2019, 16:23 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
Смотрите рисунки, тоже на примере AFD


А как вы вносите значения в регистры?


mov ax,4852h
mov dx,0000h

? у меня такой же отладчик, но значения там не меняются

то есть моя схема на бумаге правильная? после команды PUSH AX значение sp уменьшилось на 2 (0324-->0032), после команды POP DX значение регистра DX заменилось на значение регистра AX (4852), а значение SP увеличилось на 2 (снова стало 0324)

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 22

= общий = | 20.05.2019, 16:29 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Нажмите на F7, курсор переместится на область регистров smile
Вернуться или нажать еще два раза на F7, либо Enter (есть кнопка F4 - помощь)

Да, записано все правильно, но нет понимания почему так smile Или уже есть? smile
Обратили внимание на обведенное место в стеке?

-----
Последнее редактирование 20.05.2019, 16:30 Лысков Игорь Витальевич (Старший модератор)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 23

= общий = | 20.05.2019, 16:37 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
Да, записано все правильно, но нет понимания почему так Или уже есть?
Обратили внимание на обведенное место в стеке?


Да, примерно вник, но работы еще много smile

Большущее спасибо, на 2й вопрос помогли ответить smile , но чувствую их еще много будет smile

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 24

= общий = | 20.05.2019, 16:38 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

С POP-ом вопросов нет?

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 25

 +1 
 
= общий = | 20.05.2019, 16:43 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
С POP-ом вопросов нет?


Да вроде нет, при этой команде происходит извлечение из стека, при этом SP увеличивается на 2

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 26

= общий = | 20.05.2019, 16:44 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

© Цитата:
но работы еще много
Да осилит дорогу идущий... Глаза боятся, а руки делают... smile smile smile
В Поднебесной говорят: путешествие в тысячу ли начинается с одного шага. Удачи! smile

-----
Последнее редактирование 20.05.2019, 16:58 Лысков Игорь Витальевич (Старший модератор)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Хватов Сергей
Академик

ID: 20764

# 27

= общий = | 20.05.2019, 17:35 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Лысков Игорь Витальевич:

Судя по вашему ответу, указатель смотрит на вершину стека, что противоречит вашему же утверждению в пункте 1.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 28

= общий = | 20.05.2019, 17:41 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

Разве? smile
Так понимаю, пункт 1, это

© Цитата:
1) Регистр SP всегда указывает на адрес ЗА ячейкой памяти, которая является вершиной стека

А из какого ответа следует, что указатель смотрит на вершину?

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Хватов Сергей
Академик

ID: 20764

# 29

= общий = | 20.05.2019, 17:57 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Лысков Игорь Витальевич:

Из пунктов 2 и 3: по push сначала двигается указатель, а потом записывается значение. По pop наоборот.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 30

= общий = | 20.05.2019, 18:02 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

Разве не так? smile
Указатель за вершиной, чтобы в вершину записать, сначала уменьшаем указатель, потом туда пишем.
После чего опять указатель за новой вершиной.

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Хватов Сергей
Академик

ID: 20764

# 31

= общий = | 20.05.2019, 18:27 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Лысков Игорь Витальевич:

Похоже мы под вершиной подразумеваем разное. Я — последний добавленный элемент.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 32

= общий = | 20.05.2019, 19:39 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

Я соглашусь с Вами: все зависит от того, что считать вершиной стека.
Действительно, можно и так: указатель показывает на вершину, PUSH сначала уменьшает указатель на новую вершину и туда помещает значение.
Это в общем-то всё условно. smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.17665 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.77 от 31.05.2019
Версия JS: 1.34 | Версия CSS: 3.35