Добавил:
@wequalwo Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АбрамоваИванов0392_Пр4.pdf
Скачиваний:
2
Добавлен:
08.09.2024
Размер:
110.84 Кб
Скачать

4. Выводы

В ходе работы получены навыки организации подпрограмм и навыки работы с фай-

лами через описатели.

9

5. Зачетное задание

На входе текстовый файл. В этом файле удалите из всех групп пробелов все пробелы

кроме последнего и сохраните в файле под другим именем.

CODE SEGMENT

ASSUME CS:CODE, DS:CODE, SS:CODE

ORG 100h

START:

LEA DX, STR1

CALL PRINT

LEA DX, FILENAME1

CALL INPUT

CALL NEXTLINE

LEA DX, STR2

CALL PRINT

LEA DX, FILENAME2

CALL INPUT

CALL NEXTLINE

XOR BH, BH

MOV BL, [FILENAME1+1] ; len(FILENAME)

MOV [FILENAME1+2+BX], BYTE PTR 0 ; because the filename should fit the format 'filepath,0'

XOR BH, BH

MOV BL, [FILENAME2+1]

MOV [FILENAME2+2+BX], BYTE PTR 0

10

READING:

LEA DX, [FILENAME1+2]

CALL OPENFILE ; oppening the file with filename = FILENAME1

MOV BX, AX

LEA DX, MES

CALL READ

MOV CX, AX ; CX holds len(MES)

CALL CLOSEFILE

LEA SI, MES

LEA DI, NOSPACE

MOV DX, 0 ; previous char

MOV AX, 0 ; chars count

EDIT:

CMP DL, [SI]

JE CHECK

CONTINUE:

;MOV DI, [SI]

MOV BX, [SI]

MOV [DI], BX

MOV DL, [SI]

INC DI

INC SI

INC AX

LOOP EDIT

PUSHING:

PUSH AX

11

LEA DX, [FILENAME2+2]

CALL OPENFILE

MOV BX, AX

POP CX

LEA DX, NOSPACE

CALL WRITE

CALL CLOSEFILE

EXIT:

MOV AH, 4CH

INT 21H

CHECK:

CMP DX, ' '

JNE CONTINUE

INC SI

DEC CX

CALL EDIT

OPENFILE: ; Opennig file with filename = FILENAME and access = write and read MOV AH, 3DH

MOV AL, 2

INT 21H

RET

WRITE: ; Write into the file

MOV AH, 40H

INT 21H

RET

READ:

12

MOV AH, 3FH

LEA DX, MES

MOV CX, −1

INT 21H

RET

CLOSEFILE: ; Close file

MOV AH, 3EH

INT 21H

RET

INPUT: ; input string

MOV AH, 0AH

INT 21h

RET

PRINT: ; output notification MOV AH, 09H

INT 21H

RET

NEXTLINE: ; Warp to the next line MOV AH, 02H

MOV DL, 10

INT 21h

RET

FILENAME1 DB 128, 0, 128 DUP(0) FILENAME2 DB 128, 0, 128 DUP(0) MES DB 128, 0, 128 DUP('$')

NOSPACE DB 128, 0, 128 DUP('$')

STR1 DB 'Enter filename to read: $'

13

STR2 DB 'Enter filename to write: $:'

;NOFILE DB 'There is no file with that name. It was created.$'

;STR DB 'Enter the message to write: $' BYE DB 'Done.$'

CODE ENDS

END START

Пример работы программы:

Рис. 5.1

14