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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2010, 00:21   #1
Garfield_dlc
 
Аватар для Garfield_dlc
 
Регистрация: 16.01.2010
Сообщений: 4
Смущение Модульная структура программ // ASM

Тема: Модульная структура программ
Цель работы: Изучить средства построения многомодульных программ на языке ассемблер Intel 8086; получить навыки использования спецификаций как основы коллективной разработки программ.

Для выполнения данной лабораторной работы авторами методических рекомендаций разработан модуль, содержащий подпрограммы работы с файлами по их дескрипторам в среде MS-DOS. Модуль скомпилирован транслятором TASM в объектный файл DOSFILES.OBJ и должен быть подключен директивой INCLUDELIB. Спецификации подпрограмм, включенных в модуль, приведены ниже.

file_open
Назначение: открытие существующего файла на чтение и запись.
Вход: arg1 (4 байта) – указатель на ASCIIZ-строку с именем файла.
Выход: ax – дескриптор открытого файла или –1 в случае ошибки.

file_create
Назначение: создание или усекновение файла.
Вход: arg1 (4 байта) – указатель на ASCIIZ-строку с именем файла.
Выход: ax – дескриптор открытого файла или –1 в случае ошибки.

file_close
Назначение: закрытие файла.
Вход: arg1 (2 байта) – дескриптор открытого файла.
Выход: нет.

file_read
Назначение: чтение содержимого файла.
Вход: arg1 (2 байта) – дескриптор открытого файла;
arg2 (2 байта) – число пересылаемых байтов;
arg3 (4 байта) – указатель на буфер чтения.
Выход: ax – число прочитанных байтов или –1 в случае ошибки.

file_write
Назначение: запись в файл.
Вход: arg1 (2 байта) – дескриптор открытого файла;
arg2 (2 байта) – число пересылаемых байтов;
arg3 (4 байта) – указатель на буфер записи.
Выход: ax – число записанных байтов или –1 в случае ошибки.

file_seek
Назначение: позиционирование указателя файла.
Вход: arg1 (2 байта) – дескриптор открытого файла;
arg2 (4 байта) – смещение указателя файла;
arg3 (2 байта) – режим позиционирования (0 – абсолютное смещение от начала файла; 1 – знаковое смещение от текущей позиции; 2 – знаковое смещение от конца файла).
Выход: dx:ax – позиция указателя относительно начала файла.

Соглашения о передаче параметров соответствуют принятым в языке Паскаль: параметры помещаются в стек в порядке перечисления, изъятие параметров из стека производится вызываемой подпрограммой. Все подпрограммы используют ближний (near) возврат.

Задание: Дан текстовый файл. Получить новый файл, удалив все символы с кодом 10 из исходного файла.

Плюсом нужен код этого зверя на Паскале!


Прошу квалифицированной помощи!!!
"Я мечтал, чтобы компьютеры стали такими же простыми в использовании, как телефоны. Недавно моя мечта сбылась - я не смог разобраться с моим новым телефоном."
Страуструп Бьёрн
Garfield_dlc вне форума Ответить с цитированием
Старый 16.06.2010, 00:48   #2
Garfield_dlc
 
Аватар для Garfield_dlc
 
Регистрация: 16.01.2010
Сообщений: 4
По умолчанию

Вот пример выполнения задания:
Дописать содержимое файла-источника в конец файла-приемника. Размер файла-источника не превышает одного килобайта.

Текст программы на языке ассемблера:
Код:
.model small
.code

		org	100h

Start:	jmp	Begin

; Подключение библиотеки работы с файлами
includelib	DOSFILES.OBJ

; Внешние идентификаторы (только используемые)
extrn		file_open: proc
extrn		file_read: proc
extrn		file_write: proc
extrn		file_seek: proc

; Данные
filename01	db	'SRC_FILE.TXT',0
filename02	db	'DST_FILE.TXT',0
handle01	dw	?
handle02	dw	?
bytes_read	dw	?
error_msg	db	13,10,'Ошибка работы с файлом',13,10,'$'

Begin:

; Открытие файла-источника
		push	ds
		mov	ax, offset filename01
		push	ax
		call	file_open
		cmp	ax, -1
		je	go_error
		mov	handle01, ax

; Открытие файла-приемника
		push	ds
		mov	ax, offset filename02
		push	ax
		call	file_open
		cmp	ax, -1
		je	go_error
		mov	handle02, ax

; Чтение содержимого файла-источника
		mov	ax, handle01
		push	ax
		mov	ax, 1024
		push	ax
		push	ds
		mov	ax, offset buffer
		push	ax
		call	file_read
		cmp	ax, -1
		je	go_error
		mov	bytes_read, ax

; Установка указателя файла-приемника в конец файла
		mov	ax, handle02
		push	ax
		xor	ax, ax
		push	ax
		push	ax
		mov	ax, 2
		push	ax
		call	file_seek

; Запись содержимого буфера в файл-приемник
		mov	ax, handle02
		push	ax
		mov	ax, bytes_read
		push	ax
		push	ds
		mov	ax, offset buffer
		push	ax
		call	file_write
		cmp	ax, -1
		je	go_error
		jmp	go_exit

; Вывод собщения об ошибке с выходом в DOS
go_error:	mov	ah, 9
		mov	dx, offset error_msg
		int	21h

; Выход в DOS
go_exit:	mov	ax, 4C00h
		int	21h

; Буфер чтения/записи за концом программы
buffer		label	byte

		end	Start
"Я мечтал, чтобы компьютеры стали такими же простыми в использовании, как телефоны. Недавно моя мечта сбылась - я не смог разобраться с моим новым телефоном."
Страуструп Бьёрн
Garfield_dlc вне форума Ответить с цитированием
Старый 16.06.2010, 03:22   #3
Garfield_dlc
 
Аватар для Garfield_dlc
 
Регистрация: 16.01.2010
Сообщений: 4
Восклицание }{нык... :`(

Ребята, если здесь есть добрые профессионалы , то очень прошу помочь!!!
"Я мечтал, чтобы компьютеры стали такими же простыми в использовании, как телефоны. Недавно моя мечта сбылась - я не смог разобраться с моим новым телефоном."
Страуструп Бьёрн
Garfield_dlc вне форума Ответить с цитированием
Старый 16.06.2010, 19:13   #4
Garfield_dlc
 
Аватар для Garfield_dlc
 
Регистрация: 16.01.2010
Сообщений: 4
По умолчанию

Ребят, ну прям вообще пипец! Завтра зачёт, а не хватает только этой лабы!
Помогите пожалуйста!!!
"Я мечтал, чтобы компьютеры стали такими же простыми в использовании, как телефоны. Недавно моя мечта сбылась - я не смог разобраться с моим новым телефоном."
Страуструп Бьёрн
Garfield_dlc вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ASM. код werser Помощь студентам 0 25.05.2010 23:55
с++ и ASM breate Общие вопросы C/C++ 4 04.11.2009 20:56
Модульная программа на С работа с файлами Stiff Master Общие вопросы C/C++ 1 02.04.2009 19:55
[c++]asm Nightwalker Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 14.10.2008 19:39
Загрузка программ из др. программ в АСМе Shacal Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 05.02.2007 08:53