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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2011, 22:49   #1
Playa-RC
Пользователь
 
Регистрация: 03.12.2011
Сообщений: 13
По умолчанию Запись структуры в файл

Нужно введенную с клавиатуры структуры записать в файл. Вообще не могу понять с чего начать, файл создается, структура вводится, а вот запись...
Прошу помощи!
Заранее спасибо!)

Assembler, Tasm Dos16

Вот код программы:
Код:
.model small
.stack 100h

worker struc                   ;информация о сотруднике
nam db 15 dup (' ')         ;имя
lastnam db 15  dup (' ')   ; фамилия
age db 10 dup (' ')           ;возраст
worker ends

.data

bufout db 128 dup (' ')
buflen = $ - bufout
handle dw ?
fname db 'file.txt',0
point_fname dd fname

next db 10,13,'$'
Vvod3 db 'Input data >>>>>>>>> ','$'
mnam db 10,13,'Enter name: ', '$'
mlastnam db 10,13,'Enter Lastname: ','$'
mage db 10,13,'Enter Age: ','$'
mour db 10,13,10,13,'Our structur:',10,13,'$'

string db 128 dup (' ')

N=3
mas_sotr worker N dup (<>) 

.code

start:
mov ax,@data
mov ds,ax

jmp start_prog

enter_string proc ;принемает один параметр для loop - cx, и строку в si
buff1:
xor ax,ax
begin_v:
mov ah,0
int 16h 
cmp al,13
jz v1
cmp al,' '
jb begin_v
cmp al,'}'
ja begin_v
mov [si],al
int 29h
inc si
loop buff1
v1:
mov byte ptr [si],' '
add si,1
mov byte ptr [si],'$'
ret
endp

mov_to_struct proc ;принемает 4 пареметра: тип структуры в bx, размер 
xor si,si
push ds
pop es  
push di
mov di,dx
cld
lea si,string
rep movsb
pop di
ret
endp ; массива в di, размео принимаемой строки в dx, и cx для rep

start_prog:
lea dx,vvod3
mov ah,09h
int 21h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ввод имени
mov bx, type worker
lea di,mas_sotr
mov bp,n

cycl1:
lea dx,mnam
mov ah,09h
int 21h

mov cx,15
lea si,[string]
call enter_string
lea dx,[di].nam
mov cx,15
call mov_to_struct

lea dx,mlastnam
mov ah,09h
int 21h
mov cx,15
lea si,[string]
call enter_string
lea dx,[di].lastnam
mov cx,15
call mov_to_struct

lea dx,mage
mov ah,09h
int 21h
mov cx,10
lea si,[string]
call enter_string
lea dx,[di].age
mov cx,10
call mov_to_struct

add di,bx

dec bp
cmp bp,0
ja cycl1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;вывод структуры
lea dx,mour
mov ah,09h
int 21h

mov bx, type worker
lea di,mas_sotr 
mov cx,n 
cycl2:
lea dx,[di].nam
mov ah,09h
int 21h

lea dx,[di].lastnam
mov ah,09h
int 21h

lea dx,[di].age
mov ah,09h
int 21h

lea dx,next
mov ah,09h
int 21h

add di,bx
loop cycl2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;РАБОТА С ФАЙЛОМ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;создание файла
mov ah,3ch;функция создания файла
mov cx,0;без атриьутов
mov dx,offset fname;адрес имени файла
int 21h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;открытие файла
mov	al,02h	;режим доступа
lds	dx,point_fname	;формируем указатель на имя файла
mov	ah,3dh	;номер функции DOS
int	21h	;открываем файл
jc	exit	;переход, в случае ошибки
;действия при успешном открытии файла:
mov	handle,ax	;сохраним дескриптор файла
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;запись в файл
mov cx,buflen;число записуемых байт
mov bx,handle;дескриптор
mov ah,40h;функция записи
lea dx,bufout
int 21h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;закроем файл
mov ah,3eh
mov bx,handle
int 21h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;выход из программы
exit:
mov ax,4c00h
int 21h
end start


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 06.12.2011 в 09:09.
Playa-RC вне форума Ответить с цитированием
Старый 08.12.2011, 17:46   #2
Playa-RC
Пользователь
 
Регистрация: 03.12.2011
Сообщений: 13
По умолчанию

Может хоть кто-нибудь ответит? Пожалуйста!
Playa-RC вне форума Ответить с цитированием
Старый 09.12.2011, 15:04   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, дык..
Цитата:
Код:
mov cx,buflen;число записуемых байт
mov bx,handle;дескриптор
mov ah,40h;функция записи
lea dx,bufout
int 21h
А кто-нибудь удосужился занести информацию в bufout ?!
поэтому то, что Вы в
Цитата:
Код:
bufout db 128 dup (' ')
задали, то и пишется в файл.


p.s. кстати, имхо, сразу после создания файла функцией 3Ch в него можно писать, можно его не переоткрывать...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.12.2011, 21:05   #4
Playa-RC
Пользователь
 
Регистрация: 03.12.2011
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, дык..

А кто-нибудь удосужился занести информацию в bufout ?!
поэтому то, что Вы в задали, то и пишется в файл.


p.s. кстати, имхо, сразу после создания файла функцией 3Ch в него можно писать, можно его не переоткрывать...
спс, это я понял! А как мне записать в файл всю структуру, все ее элементы, без знаков окончания строки '$' и всего лишнего. Вот это я понять не могу!
Playa-RC вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение и запись структуры в бинарный файл. jack291 Помощь студентам 2 20.08.2011 18:07
Запись структуры в файл. Farrel Общие вопросы C/C++ 4 12.04.2011 20:32
Запись структуры в файл Error_kpi Общие вопросы C/C++ 8 28.12.2010 20:03
Чтение и запись структуры в бинарный файл Bed Alice Общие вопросы C/C++ 1 09.11.2010 21:17
Запись структуры в файл. ssi Помощь студентам 0 10.04.2010 07:38