Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/34: Рейтинг темы: голосов - 34, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 18.05.2019
Сообщений: 9

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

18.05.2019, 16:08. Показов 6884. Ответов 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.05.2019, 16:08
Ответы с готовыми решениями:

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

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

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

4
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
18.05.2019, 16:47
Лучший ответ Сообщение было отмечено ras2 как решение

Решение

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

Ну вот так представляй себе работу стека и не прошибешься.
3
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
18.05.2019, 21:08
Может быть поможет:
https://habr.com/ru/company/sm... og/234239/
1
0 / 0 / 0
Регистрация: 18.05.2019
Сообщений: 9
18.05.2019, 21:21  [ТС]
Спасибо! Сейчас почитаю
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
29.05.2019, 01:35
ras2,
Электронный учебник https://www.cyberforum.ru/cgi-bin/latex.cgi?\to "Глава 16. СТЕК И СЕГМЕНТ СТЕКА"
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.05.2019, 01:35
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru