Задание
В конец файла с
расширением ASM
в текущем каталоге дописать строку
«Done».
Создать новый файл PROCESS.NUM
и выдать сообщение об успешном завершении
работы.
Решение
data segment ;сегмент
данных
fname db 'PROCESS.NUM ', 0 ;
ASCIIZ-имя файла
find db 'lab7.asm',0
string db ';Done' ;
записываемая строка
len = $-string ; длина
строки
ern db 'File doesnt create!$'
erf db 'File doesnt find!$'
mok db 'OK. All right!$'
data
ends ;конец
сегмента данных;
code
segment ;сегмент
кода
assume
cs:code,ds:data ;инициализация
сегментов
begin proc ;начало
программы
mov ax,data
mov ds,ax
mov ax,3D02h ;
функция открыть файл на чтение-запись
lea dx, find
int 21h
jc er
; Запишем в файл
строку
mov bx,
ax ;
сохраним дескриптор созданного файла
mov ah,
42h ;перемести
муказатель
mov al,2 ;в
конец
mov cx,0 ;смещение
относительно конца
int
21h
mov ah,
40h ;
функция записи в файл или на устройство
lea dx,
string ;
DS:DX
-> записываемая строка
mov cx, len ;её длина
int 21h
; Закроем файл (в
BX
- дескриптор)
mov ah, 3Eh
int 21h
mov ah, 9
lea dx, mok
int 21h
; Создадим файл
mov ah,
3Ch ;
функция ’Создать файл’
lea dx,
fname ; DS:DX -> ASCIIZ-имя
xor cx,
cx ;
без атрибутов
int 21h
jc er ;
если ошибка – на обработку
mov bx,
ax ;
сохраним дескриптор созданного файла
; Обработка ошибки
создания файла
er:
cmp
ax,2
je fn
cmp ax,7
je error
jmp exit
exit: mov ax, 4C00h
int 21h
fn:
mov ah, 9
lea dx, erf
int 21h
jmp exit
error: mov ah, 9
lea dx, ern
int 21h
code ends
end begin
5