Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 90
1

Работа со стеком

23.03.2012, 19:00. Просмотров 1313. Ответов 3
Метки нет (Все метки)

Код
.386
.model flat, stdcall
includelib C:\masm32_v11\lib\kernel32.lib
ExitProcess proto :DWORD
.code
start:
mov ax,2211h
mov ecx, 66554433h
mov bl,[esp]
push ax
push ecx
pop ax
pop ecx

push 1111h

mov ax,[esp минус или плюс какое число, чтобы в ax было 2211h из стека?]

invoke ExitProcess,0
end start
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2012, 19:00
Ответы с готовыми решениями:

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

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

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

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

3
Ушел с форума
Автор FAQ
13887 / 6921 / 786
Регистрация: 11.11.2010
Сообщений: 12,458
24.03.2012, 04:55 2
S@drickk, сложно скомпилировать программу и по шагам просмотреть ее в OllyDbg?
mov ax,2211h
mov ecx, 66554433h
mov bl,[esp] в стек еще ничего не положил, но уже выталкиваешь из стека в BL такими штуками можно и систему грохнуть
push ax
push ecx
pop ax; ax=4433h
pop ecx ;ecx=22116655h все что мы в стек положили мы от туда вытолкнули и числа 2211h в стеке нет
push 1111h
mov ax,[esp минус или плюс какое число, чтобы в ax было 2211h из стека?] ; последний pop ecx извлек число 2211h из стека и теперь не поможет ни плюс ни минус
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 90
25.03.2012, 21:48  [ТС] 3
Тут вот в чем прикол:
Если бы мы написали так:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.386
.model flat, stdcall
includelib C:\masm32_v11\lib\kernel32.lib
ExitProcess proto :DWORD
.code
start:
mov ax,2211h
mov ecx, 66554433h
push ax
push ecx
pop ax
pop ecx
 
invoke ExitProcess,0
end start
то имели бы доступ к значениям 2211h и 66554433h в стеке
например, mov ax,[esp-6] сработала бы, в ax было бы 66 55 44 33, а
если так:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.model flat, stdcall
includelib C:\masm32_v11\lib\kernel32.lib
ExitProcess proto :DWORD
.code
start:
mov ax,2211h
mov ecx, 66554433h
push ax
push ecx
pop ax
pop ecx
 
push 1111h
 
invoke ExitProcess,0
end start
,
то мы уже не сможем получить доступ к 2211h и 66554433h в стеке
0
Ушел с форума
Автор FAQ
13887 / 6921 / 786
Регистрация: 11.11.2010
Сообщений: 12,458
26.03.2012, 04:33 4
Цитата Сообщение от S@drickk Посмотреть сообщение
Тут вот в чем прикол:
Если бы мы написали так:
Assembler
1
2
3
4
5
6
mov ax,2211h
mov ecx, 66554433h
push ax
push ecx
pop ax
pop ecx
то имели бы доступ к значениям 2211h и 66554433h в стеке например, mov ax,[esp-6] сработала бы, в ax было бы 66 55 44 33, а
Два ляпа.
Ляп первый: если написать mov ax,[esp-6], после pop ax/pop ecx, то в стеке уже ничего твоего уже нет, сколько туда положили, столько оттуда и вытолкнули и за вершиной стека, на которую указывает [esp] "программный мусор", так как Windows использует незанятую память по своему усмотрению и это хорошо видно в отладчике
ляп второй: у регистра АХ 16 разрядов и число 66554433h туда не поместить
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2012, 04:33

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Работа со стеком. Есть вопрос.
Подскажите, пожалуйста, как можно передать из процедуры, подгружаемой из отдельного файла, значение...

Работа со стеком
Ребят, помогите пожалуйста с заданиями: Задание 1 Реализовать стек списком. Все стандартные...

Работа со стеком
Ввести с клавиатуры число Х. Добавить в стек нечетные числа из диапазона от 1 до Х. Извлечь 10...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.