Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ Струтура, реализация объекта, м/с

Автор: amega 9.01.2010 16:12

Добрый день!
Помогите написать обект для реализации мультисспика. Со струтурами никогда еще не работал
про стуктуру и ооп читал http://www.citforum.ru/programming/tasm3/tasm3_4.shtml, коешто понял, а с реализацией неочень.

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

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

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


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



Автор: amega 10.01.2010 1:14

мм а как создать экземпляр структуры?

Автор: volvo 10.01.2010 18:52

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


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

Автор: amega 11.01.2010 2:03

Спасибо, посмотрел ток ниче не понял с реализацией 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 11.01.2010 22:37

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


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


процедура будет использоватть свой дс, и в этой процедуре нужно виделить динамическую памить, потом адрес этой динамической памити нужно записать нулевым элементом масива, я правильно понял?

Автор: amega 12.01.2010 1:20

ypriamii.gif ypriamii.gif ypriamii.gif wacko.gif

Автор: volvo 12.01.2010 2:33

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

Автор: amega 12.01.2010 2:57

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

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

Автор: amega 13.01.2010 13:07

ни зделал я объект, придется ити на ужасный екзамен cray.gif

Автор: AndNot 13.01.2010 17:16

Сейчас выложу, с пояснениями smile.gif

Автор: volvo 13.01.2010 17:18

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