![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() ![]() |
![]() |
amega |
![]()
Сообщение
#1
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
Добрый день!
Помогите написать обект для реализации мультисспика. Со струтурами никогда еще не работал про стуктуру и ооп читал на этом сайте, коешто понял, а с реализацией неочень. Описал структуру для объекта ;модуль с основными типами элементов списка
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 |
![]()
Сообщение
#2
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
мм а как создать экземпляр структуры?
|
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата мм а как создать экземпляр структуры? Вот так:objRayon Rayon {}
Вообще, если у тебя установлен Борланд С (тот, который под ДОС, версия 3.1) - то там в папке \BORLANDC\EXAMPLES\TASM\QUEUE есть пример работы с ООП в Ассемблере. Если нету - я заархивировал тебе его содержимое: ![]() |
amega |
![]()
Сообщение
#4
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо, посмотрел ток ниче не понял с реализацией
![]() вот каркас .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 |
amega |
![]()
Сообщение
#5
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
из више указаного укрока я так поял нужно
Rayon_construct PROC FAR
USES ds
; -- Выделение объекта
;; << выполнение выделения >>
ret
ENDP
процедура будет использоватть свой дс, и в этой процедуре нужно виделить динамическую памить, потом адрес этой динамической памити нужно записать нулевым элементом масива, я правильно понял? |
amega |
![]()
Сообщение
#6
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
![]() ![]() ![]() ![]() |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата в этой процедуре нужно виделить динамическую памить, потом адрес этой динамической памити нужно записать нулевым элементом масива, я правильно понял? Я вот вообще не понимаю, при чем тут какой-то массив, если ты должен был Цитата написать обект для реализации мультисспика. Где-то там написано, что тебе надо сделать массив чего-то? Нет. Как организуется мульти-список не знаешь? Посмотри на форуме, была реализация на Паскале. Никакого массива, предыдущий объект хранит указатель на следующий, где тут массив? |
amega |
![]()
Сообщение
#8
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
amega |
![]()
Сообщение
#9
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
ни зделал я объект, придется ити на ужасный екзамен
![]() |
AndNot |
![]()
Сообщение
#10
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Реальное имя: Andrey Репутация: ![]() ![]() ![]() |
Сейчас выложу, с пояснениями
![]() |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Цитата Сейчас выложу, с пояснениями Не надо за кого-то делать задачу полностью... Автор не соизволил задание дать как положено, на Дельфи сделал какой-то бред (ну ПРОЩЕ это все делается), а ты ему хочешь "автомат" заработать? Пускай идет на экзамен! |
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 8:15 |