Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2011, 11:47   #1
Swarog
Форумчанин
 
Аватар для Swarog
 
Регистрация: 26.01.2010
Сообщений: 215
По умолчанию Где ошибка в адресации (Ассемблер)

есть программа (всю выводить не буду только части)

начало программы, настройка сегментных регистров и стека
Код:
.586  ; Будут 32-разрядные операнды

TData	segment

 	DB 32768 dup(?)
startStack:
	z	dd 0
	y	db 22
	x	dd 16
TData	ends

TCode	segment use16
assume CS: TCode, DS: TData, ES: TData
Start:	
	mov AX, TData
	mov DS, AX
	mov ES, AX

	mov ss, ax ;настройка стека
	mov eax, offset startStack 
	mov sp, ax
далее где то в подпрограмме

Код:
factorial_2:
	push	bp
	mov	bp,sp ;указатель на текущй фрейм
	mov	dword ptr [bp + -4],12; инициализация переменных
	mov	dword ptr ss:[bp + -9],1000
	mov	byte ptr ss:[bp + -10],8
	add	sp,-10 ;резервируем область
Вот в чем вопрос почему пересылки не работают, по адресу ss:[bp - 9] значения не меняются, уже и стек перенс в сегмент данных, все равно не хочет меняться и все, как с этим бороться?
Могу лишь пнуть в нужном направлении (ну или как получится)
Swarog вне форума Ответить с цитированием
Старый 29.05.2011, 12:57   #2
Swarog
Форумчанин
 
Аватар для Swarog
 
Регистрация: 26.01.2010
Сообщений: 215
По умолчанию

мда, не очень активны участники...

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

Код:
factorial_2:
	push	bp
	mov	bp,sp ;указатель на текущй фрейм
	add	sp,-10 ;резервируем область должно быть до инициализации переменных
	mov	dword ptr [bp + -4],12; инициализация переменных
	mov	dword ptr ss:[bp + -9],1000
	mov	byte ptr ss:[bp + -10],8
Могу лишь пнуть в нужном направлении (ну или как получится)
Swarog вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написал программу, где то ошибка, не пойму где... Kelevra91 Общие вопросы C/C++ 5 17.01.2011 16:38
Ошибка в программе, ассемблер Nafanja20 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 08.06.2010 04:03
Ассемблер. y=x3+x-8 , где x3 - x в кубе GrabbeR Помощь студентам 2 17.03.2010 12:59
В чем ошибка??? (язык ассемблер) Joker_35815 Помощь студентам 5 11.11.2009 22:05
Ассемблер.Ошибка при ассемблировании. Foster Помощь студентам 7 04.02.2009 13:51