Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 08.01.2009
Сообщений: 4

Работа со стеком. Есть вопрос.

08.01.2009, 12:06. Показов 2952. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, как можно передать из процедуры, подгружаемой из отдельного файла, значение регистра, например dx в основную программу через стек...
в целом прога должна выглядеть вот так:
----------------
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
;procedura.pr
pr proc
....
ret
endp
----------------
;основная прога
.data
.stack 100h
.....
include procedura.pr
...
call pr
---------------
возможно не доконца понимаю как грамотно оформить стек =(((
Заранее благодарен...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.01.2009, 12:06
Ответы с готовыми решениями:

Работа со стеком
Народ, как вывести на экран сегмент стека? Срочно нужна прога(TASM? , желательно), или хотя бы подскажите как это сделать, пади сам...

Работа со стеком
.386 .model flat, stdcall includelib C:\masm32_v11\lib\kernel32.lib ExitProcess proto :DWORD .code start: mov ax,2211h mov...

работа со стеком
Вечер добрый всем. Нужна ваша помощь с заданием: Вывод на экран меню с возможностью выбора пункта с клавиатуры: 1 - вывести на...

3
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
08.01.2009, 16:32
Ну, я думаю, что надо сначала стянуть со стека одно 16 разрядное число-адрес возврата если процедура не FAR или 32 разрядное если процедура FAR(смещение - сегмент). Потом делаем push dx(если в dx значение, которое нужно вернуть), а потом возвращаем назад адрес возврата.

|адрес возврата|
|---------------| <-вот сюда помещаем возвращаемое значение
| арг1 |
|---------------|
| арг2 |
|---------------|
Для главной программы возвращенное значение будет лежать на верху стека и достаточно сделать операцию типа pop dx.

Однако не лучше ли возвращать значение через какой-нибудь регистр(или там через заранее оговоренную ячейку памяти)?
0
0 / 0 / 0
Регистрация: 08.01.2009
Сообщений: 4
08.01.2009, 18:01  [ТС]
Однако не лучше ли возвращать значение через какой-нибудь регистр(или там через заранее оговоренную ячейку памяти)?
через регистры это само собой проще, просто по заданию требуется реализовать через стек.... Спасибо, за совет... только поясните, плиз, еще...
я правильно понял... прежде чем положить в стек значение из регистра, нужно сделать че-нить типа....
pop ax
дальше мы ложим значение нужного нам регистра,
push dx
... и, слегка не допонял, после этого мы:
-push ax
pop ax
pop dx; так или все же просто
-pop dx; из основной программы?
Еще раз примите благодарности.
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
08.01.2009, 18:07
Сначала мы делаем pop ax, для того , чтобы не повредить адрес возврата, ведь он к выходу из функции должен быть на самом верху. Потом ложим значение необходимого регистра: push dx, и сразу же push ax(возвращаем на самый верх стека адрес возврата). А в главной программе просто pop dx, ведь адрес возврата уже сняла операция ret.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.01.2009, 18:07
Помогаю со студенческими работами здесь

Работа со стеком
Люди, подскажите почему и что не так в данном фрагменте кода при работе со стеком ( по моему что то с BP...) .model small ...

Работа со стеком, вопрос скорости и оптимальности
Добрый вечер всем программистам. Не так давно начал изучать язык C# по урокам Александра гудка Вообщем то скажу очень подробно все...

Работа со стеком
Приветствую всех! Я новичок в Ассемблере и столкнулся с проблемой, решение которой не могу найти. Суть вот в чём. Есть сегмент стека: ...

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

Работа со стеком
Помогите разобраться, почему при выполнении выводится пустая строка? program lab4; const n = 2; type stack = record ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru