МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра АПУ
отчет
по практической работе №4
по дисциплине «Системное программирование»
Тема: “Подпрограммы. Работа с файлами через описатели.”
Студент гр. 8391 |
|
Гоглев А.А. |
Студент гр. 8391 |
|
Шушков Д.А. |
Студент гр. 8391 |
|
Маликов А.А. |
Преподаватель |
|
Кораблев Ю.А. |
Санкт-Петербург
2021
Цель работы.
Получить навыки организации подпрограмм и навыки работы с файлами через описатели.
Задание.
Разработать программу, работающую с файлами через описатели. Записать в файл заданную строку. В программе должны использоваться подпрограммы.
1. Разработаем COM-программу:
CODE SEGMENT
ASSUME CS:CODE, DS:CODE, SS:CODE
ORG 100H
START:
MOV AH, 0AH
LEA DX, BUF
INT 21h
XOR BX, BX
MOV BL, [BUF+1]
MOV [BUF+2+BX], 0 // запись в конец имени файла «0»
MOV AH, 3dh
MOV AL, 2
LEA DX, BUF+2
INT 21H
JAE NO_CREATE // переход если такой файл есть (CF = 0)
XOR AX, AX
MOV AH, 02h
MOV DL, 0ah
INT 21h
MOV AH, 09h
LEA DX, WARNING // спрашиваем, нужно ли создать
INT 21h
MOV AH, 01h
INT 21h
CMP AL, 'Y' // если Y то вызываем PROC1
JNE EXIT
CALL PROC1
NO_CREATE:
MOV BX, AX // передача дескриптору
MOV AH, 42h
MOV CX, 0
MOV DX, 0
MOV AL, 2
INT 21h // ставим указатель в конец файла
MOV AH, 40h // запись сообщения
LEA DX, MESSAGE
MOV CX, 16
INT 21h
MOV AH, 3eH // закрытие файла
INT 21h
EXIT:
MOV AH, 4CH
INT 21H
PROC1 PROC // создание файла
MOV AH, 5bh
XOR CX, CX
LEA DX, BUF+2
INT 21H
RET
PROC1 ENDP
BUF DB 130, 00, 130 DUP (0), 0
WARNING DB 'File doesnt exist. Create one? (Y/N)$'
MESSAGE DB 'HELLO WORLD '
CODE ENDS
END START
2. Пример выполнения работы программы
Рис.1 Пример выполнения работы программы.
Рис.2 Содержимое созданного файла.