IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
Closed Topic Открыть новую тему 
> Струтура, реализация объекта, м/с
amega
сообщение 9.01.2010 12:12
Сообщение #1


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


Добрый день!
Помогите написать обект для реализации мультисспика. Со струтурами никогда еще не работал
про стуктуру и ооп читал на этом сайте, коешто понял, а с реализацией неочень.

Описал структуру для объекта

;модуль с основными типами элементов списка

nil = 0ffffh ;константа отсуствия ссылки

Rayon STRUC Global Method {
		init	: dword = Rayon_construct ;процедура-конструктор
		deinit	: dword = Rayon_deinit	  ;процедура-деконструктор
		insert    : dword = Rayon_insert	  ;процедура ввода полей (имя района, имя мера)
		print	: dword = Rayon_print	  ;процедура вывода на екран
	}
	
	RayonName db 20 dup (0) ; Имя района
	NameMer     db 20 dup (0) ; Имя мера
	
	Next 	  dw nil        ;указатель на сл.
	ENDS


теперь нужно написать процедуру конструктора объекта, которая при создание структуры видиляла в дин памити место для объекта, и инициализацию проводила(хотя что инициализировать я не знаю), и деконтсрутора, которая будет удалять объект. Процедура Инсерт будет осущетвлять заполнение полей, а принт их выводить.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amega
сообщение 9.01.2010 21:14
Сообщение #2


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


мм а как создать экземпляр структуры?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.01.2010 14:52
Сообщение #3


Гость






Цитата
мм а как создать экземпляр структуры?
Вот так:
objRayon Rayon {}


Вообще, если у тебя установлен Борланд С (тот, который под ДОС, версия 3.1) - то там в папке \BORLANDC\EXAMPLES\TASM\QUEUE есть пример работы с ООП в Ассемблере. Если нету - я заархивировал тебе его содержимое:
Прикрепленный файл  queue.zip ( 6.98 килобайт ) Кол-во скачиваний: 518
 К началу страницы 
+ Ответить 
amega
сообщение 10.01.2010 22:03
Сообщение #4


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


Спасибо, посмотрел ток ниче не понял с реализацией mega_chok.gif
вот каркас

.286
.model large,stdcall
.stack 200h
.data 

	;Исоходный масив указателей
	;Ечейка масива содержит адрес объекта в памити
	ArrOfTObject dw 10 dup (?)
	
	;подключаем модуль с основными типами элемента списка
	;INCLUDE obj.aso
	
	Menu db '1-Create new object',13,10
		 db '2-Print object',13,10
		 db '3-Delete object',13,10
		 db '4-Exit',13,10,'$'
		 
	Writeln dw 13,10,'$'
.code
	;подключаем модуль с основными процедурами и макросами
	INCLUDE Proc.aso
	
st_:
	mov ax,@data
	mov ds,ax
	
	GetNewComand:	
		showMessage menu
		
		mov ah,1
		int 21h
		sub al,'0'
		
		cmp al,1
		je CreateNewObject
		cmp al,2
		je PrintObject
		cmp al,3
		je DeleteObject
		cmp al,4
		je Exit
		jmp Exit
		
		CreateNewObject:
			;создание нового обекта 
			;узаказатель на объкт должен хранится в ArrOfTObject[0]
			
			jmp GetNewComand
		PrintObject:
			;вывод объкта на кран, указатель на объкт хранится нудевым елементом массива
			
			jmp GetNewComand
		DeleteObject:
			;удаление объкта, указатель на объкт хранится нудевым елементом массива
			
			jmp GetNewComand
			
Exit:	
	mov ah,4ch
	int 21h	
end st_



модуль модуль процедур и макросов
;модуль процедур и макросов

ShowMessage Macro Mess
        mov ah,9
        mov dx,offset Mess
        int 21h
        endm


Как мне создать обект чтоб указатель на объкт был нулевой ячейки массива ArrOfTObject?

Сообщение отредактировано: amega - 10.01.2010 22:03
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amega
сообщение 11.01.2010 18:37
Сообщение #5


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


из више указаного укрока я так поял нужно

Rayon_construct PROC  FAR
USES ds
              ; -- Выделение объекта 
              ;; << выполнение выделения >>
              ret
ENDP


процедура будет использоватть свой дс, и в этой процедуре нужно виделить динамическую памить, потом адрес этой динамической памити нужно записать нулевым элементом масива, я правильно понял?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amega
сообщение 11.01.2010 21:20
Сообщение #6


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


ypriamii.gif ypriamii.gif ypriamii.gif wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.01.2010 22:33
Сообщение #7


Гость






Цитата
в этой процедуре нужно виделить динамическую памить, потом адрес этой динамической памити нужно записать нулевым элементом масива, я правильно понял?
Я вот вообще не понимаю, при чем тут какой-то массив, если ты должен был
Цитата
написать обект для реализации мультисспика.
Где-то там написано, что тебе надо сделать массив чего-то? Нет. Как организуется мульти-список не знаешь? Посмотри на форуме, была реализация на Паскале. Никакого массива, предыдущий объект хранит указатель на следующий, где тут массив?
 К началу страницы 
+ Ответить 
amega
сообщение 11.01.2010 22:57
Сообщение #8


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


помогите хотябы с реализацией объкта, тоесть его инициализацию , создание и вывод

зы: списки могут еще быть реализованы на базе массивов указателей
структура:
Прикрепленное изображение
зы2 пример проекта кинул в личку реализующий такую структуру(мой курсач)

Сообщение отредактировано: amega - 11.01.2010 23:04
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amega
сообщение 13.01.2010 9:07
Сообщение #9


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


ни зделал я объект, придется ити на ужасный екзамен cray.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AndNot
сообщение 13.01.2010 13:16
Сообщение #10





Группа: Пользователи
Сообщений: 2
Пол: Мужской
Реальное имя: Andrey

Репутация: -  1  +


Сейчас выложу, с пояснениями smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.01.2010 13:18
Сообщение #11


Гость






Цитата
Сейчас выложу, с пояснениями
Не надо за кого-то делать задачу полностью... Автор не соизволил задание дать как положено, на Дельфи сделал какой-то бред (ну ПРОЩЕ это все делается), а ты ему хочешь "автомат" заработать? Пускай идет на экзамен!
 К началу страницы 
+ Ответить 

Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 29.07.2025 8:15
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"