0 / 0 / 0
Регистрация: 18.05.2019
Сообщений: 9
1

Как изменится состояние регистров после выполнения PUSH AX и POP DX

18.05.2019, 16:08. Показов 6164. Ответов 4

Студворк — интернет-сервис помощи студентам
Учусь на заочке и тут по архитектуре аппаратных средств прилетает практическая работа, а в ней задачки всякие. И на одной я застопорился:

Даны исходные данные: SP=0324h, DS=4302h, DI=0073h, AX=4852h, BX=3010h, DX=0000h, SI=0071h
Покажите ситуацию в памяти до и после выполнения стековых команд, а также состояние участвующих в этом регистров:
a) PUSH AX
b) POP DX


Хоть калёным железом пытайте, не могу взять в толк, что от меня хотят...

Все пришедшие в голову мыслишки вылились в это:
a) PUSH AX
При реализации команды PUSH выполняются следующие действия: значение регистра SP уменьшается на 2, значение операнда записывается по адресу SS: SP.
PUSH AX
SP := SP – 2
memory[SP] := AX
то есть,
SP = 0324h – 2 = 0322h – полученное значение записывается в SP.

b) POP DX
Алгоритм работы команды POP обратен алгоритму команды push: значение из вершины стека пересылается в операнд, значение SP увеличивается на 2:
POP DX
DX := memory [SP]
SP := SP + 2
то есть, SP = 0324h + 2 = 0326h – в DX записывается содержимое памяти, на которую указывает SP.

Пожалуйста, подскажите, а правильно ли я понял задание? И, вообще, серьёзно, что с регистрами происходит до и после стековых команд? Неужели все эти DS, DI, AX, BX, SI остаются неизменны до и после?

Честно, не доходит до меня эта тема со стеками, но, блин, кровь из носу, нужно разобраться.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2019, 16:08
Ответы с готовыми решениями:

Значения регистров после выполнения действий Push и pop
hi ALL плз. зачет горит. 1. Дан фрагмент программы на ассемблере : push BX push CX push DX...

Сделать так чтобы если вводится push выполнялась функция push, если pop то pop
Помогите пожалуйста с данным вопросом: например у меня есть список и несколько возможных с ним...

Как изменится массив после выполнения фрагмента программы
В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен...

Как и почему меняется содержимое регистров после выполнения очередной команды
Как и почему меняется содержимое регистров после выполнения очередной команды?

4
6718 / 2694 / 375
Регистрация: 17.02.2013
Сообщений: 3,963
18.05.2019, 16:47 2
Лучший ответ Сообщение было отмечено ras2 как решение

Решение

Цитата Сообщение от ras2 Посмотреть сообщение
Неужели все эти DS, DI, AX, BX, SI остаются неизменны до и после?
Да неизменны.
Цитата Сообщение от ras2 Посмотреть сообщение
Честно, не доходит до меня эта тема со стеками,
стек - это организация памяти по принципу рожка автомата Калашникова. Рожок находится в памяти. Патроны это числа размером слово (2 байта). Патрон вставленный в рожок последним вынимается первым.
PUSH AX - число из регистра AX вставил в рожок. После выполнения команды это число в рожке верхнее.
POP DX - вынул верхнее число из рожка и поместил в регистр DX.
Только когда патроны вставляются и вынимаются из рожка, они не перемещаются в нем как в настоящем автоматном рожке. Они лежат на месте. Чего зазря их по памяти перемещать-то ? Вместо этого сам рожок как бы резиновый, повернут горловиной вниз, рожок растягивается и сжимается, патроны при этом по высоте не двигаются. Пара регистров SS:SP всегда указывает на верхний патрон в рожке, считай на горловину рожка. Когда новый патрон (число) вставляется в рожок, рожок растягивается вниз (SP уменьшается на 2). Когда патрон (число) вынимается их рожка SP увеличивается на 2 и рожок сжимается вверх.

Ну вот так представляй себе работу стека и не прошибешься.
3
Неэпический
17848 / 10616 / 2049
Регистрация: 27.09.2012
Сообщений: 26,686
Записей в блоге: 1
18.05.2019, 21:08 3
Может быть поможет:
https://habr.com/ru/company/sm... og/234239/
1
0 / 0 / 0
Регистрация: 18.05.2019
Сообщений: 9
18.05.2019, 21:21  [ТС] 4
Спасибо! Сейчас почитаю
0
Ушел с форума
Автор FAQ
16161 / 7499 / 1031
Регистрация: 11.11.2010
Сообщений: 13,498
29.05.2019, 01:35 5
ras2,
Электронный учебник https://www.cyberforum.ru/cgi-bin/latex.cgi?\to "Глава 16. СТЕК И СЕГМЕНТ СТЕКА"
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.05.2019, 01:35
Помогаю со студенческими работами здесь

Модифицировать программу, имитирующую работу стека, так, чтобы после каждой из операций push и pop на экран выводился сн
Модифицировать программу, имитирующую работу стека, так, чтобы после каждой из операций push и pop...

как реализовать вручную методы: Peek(), Pop(), Push() - для односвязных списков
Нужна помощь с работой с односвязными списками. Что такое односвязный список более менее знаю....

Каким будет содержание регистров после выполнения команд
1. Каким будет содержание регистров IP и CS после выполнения команды JMP FAR PTR OPR, если метка...

Определить значения регистров после выполнения фрагмента программы
Дан фрагмент программы на ассемблере: push BX push CX push DX push AX mov AX,3508h add BX,AX...

Найти содержимое регистров после выполнения группы команд
Задано содержимое регистров AL, BL i DL. Найти содержимое регистров после выполнения группы команд:...

push и pop
У меня возникла странная проблема. Мы создали сайт на основе системы управления, которой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru