Files
templates/asm/p_2.asm
2024-09-10 22:24:24 +03:00

140 lines
3.7 KiB
NASM
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

MASM
MODEL small
STACK 256
.data
buffer dw 1
Handle dw 0
Handle2 dw 0
filename db 'file.txt', 0
filename2 db 'file2.txt', 0
.code
ASSUME ds:@data,es:@data
main:
mov ax,@data
mov ds,ax
mov es,0b:8000h
;------------------Открываем файл-------------
mov di,30h
xor cx,cx ;атрибуты файла - обычный файл
mov bx,2 ;режим доступа обычный - доступ для чтения-записи
mov dx,1 ;если файл существует, то открыть его. в обратной случае вернуть ошибку
mov dx,offset filename ;формируем указатель на имя файла
mov ah,3dh ;номер функции DOS
int 21h ;открываем файл
mov [Handle], ax ;сохраним дескриптор файла
mov bx,ax
jnc read ;если файл существовал, то переход
jc ex ;переход в случае ошибки
read: mov ah, 3Fh
mov cx,1
mov dx, buffer
int 21h
cmp ax, cx ; Проверка EOF
jne eof ; Если EOF, то выходим
push ax
push bx
mov bx,dx
mov al,[bx]
mov [di],ax
pop bx
pop ax
inc di
; cmp [buffer], 13 ; Пропускаем 13-ый символ
; je read
; cmp [buffer], 10 ; Проверка конца строки
; je exit
jmp read
eof: mov bx, Handle ; закрываем файл
mov ah, 3Eh
int 21h
cld
sub di,30h
mov ax,di
mov cl,al
mov ah,al
mov al,' '
mov di,30h
jmp first
ex: jmp exit
first:
mov al,'$'
cmp [di],al
mov al,' '
je write;exit
cmp [di],al
je found
inc di
loop first
faild: jmp write
found: mov bx,di
inc di
cmp [di],al
je found2
jmp first
found2:
lea si,[di+1]
mov ah, cl
rep movsb
dec ah
mov cl,ah
mov di,bx
jmp found
write: ; xor cx,cx ;атрибуты файла - обычный файл
; mov bx,1 ;режим доступа обычный - доступ для чтения-записи
; mov dx,1
; mov dx,offset filename2 ;формируем указатель на имя файла
; mov cx,5
; mov ah,5bh ;номер функции DOS
; int 21h ;создаём и открываем файл
; mov [Handle2], ax ;сохраним дескриптор файла
; mov bx,ax
xor cx,cx ;атрибуты файла - обычный файл
mov bx,0002h ;режим доступа обычный - доступ для чтения-записи
mov dx,1 ;если файл существует, то открыть его. в обратной случае вернуть ошибку
mov dx,offset filename2 ;формируем указатель на имя файла
mov al,0001h
mov ah,3dh ;номер функции DOS
int 21h ;открываем файл
mov [Handle2], ax ;сохраним дескриптор файла
mov bx,ax
mov di,30h
; mov bx,
xor ax,ax
mov ah, 40h
mov cx,30
mov dx, di
int 21h
mov ah,0dh
int 21h
cmp ax, cx ; Проверка EOF
mov bx, Handle2 ; закрываем файл
mov ah, 3Eh
int 21h
jc exit ;переход в случае ошибки
exit:
mov ax,4c00h
int 21h
end main