L
L
Lyudmila Nesmachnaya2018-12-09 22:37:44
assembler
Lyudmila Nesmachnaya, 2018-12-09 22:37:44

Why is 60 characters removed instead of a word?

It is necessary to delete one word from the file by pressing a key (in particular V). Exactly 60 characters are removed instead of a word. Help me please

.model tiny
.code
org 100h

Entry:  

;----------------открываем файл-----------------------

mov ax,3d00h    ; открываем для чтения
mov dx, offset file_name
int 21h         ; в ax деcкриптор файла
mov descr, ax   ; описатель файла
mov bx, ax

mov ax, 4200h       ;установим указатель на начало файла
xor cx, cx
xor dx, dx
int 21h         

mov ah, 3Fh     ;ф-я чтения
mov cx, 1          ; 1 байт
lea dx, offset buffer
mov bx, descr
int 21h

mov cx, ax          ;реальная длина прочитанного фрагмента

mov ah, 3Eh     ;файл закрываем
mov bx, descr
int 21h

;----------------файл закрыли--------------------------

;----------------ожидание нажатия клавиши--------------

waiting:
mov ah,1            ;если нет нажатия, то переходим далее
int 16h
mov ah,0            ;иначе - считываем нажатую клавишу
int 16h
cmp ah, 2eh         ;если нажали C, то выходим на запись
je recording
cmp ah, 2fh         ;если нажали V, то ищем пробел
je searching
jne waiting         ;иначе переходим снова в ожидание

;----------------поиск пробела--------------------------

searching:
mov di, dx   ;адрес начала буфера
dec di       

search:
inc di
mov al, [di]        ;читаем его
cmp al, 39h         ;пробел?
je Prob_found
jne Clear_symb

Clear_symb:
dec cx
jmp search

Prob_found:         ;найден пробел
dec cx              ;уменьшим длину буфера
jmp waiting         ;и переходим в ожидание

recording:
mov   ah,3Dh  ; открытие файла
mov   al,2
lea   dx,file_name
int   21h
mov   descr,ax

mov   ah,40h  ; запись в файл
mov   bx,descr
lea   dx,buffer
int   21h

mov   ah,3Eh  ; закрытие файла
mov   bx,descr
int   21h
ret


;--------------данные-----------------------------------

.data
file_name  db "myfile.txt",0  ;имя файла
descr   dw  ?
buffer db 512 dup (?)    ;буфер для чтения "хвоста" файла

END Entry

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
Saboteur, 2018-12-09
@nesmachnaja

cmp al, 39h ;space?
And why do you have a gap of 39h, if it has always been 20h?

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question