28.05.2006, 14:45
общий
это ответ
Здравствуйте, Бородин Евгений Викторович / kain!
Если вы решаете такую задачу то я вам рекомендую делать это через модель памяти TINY т.е. формат файла *.COM, где все сегментные Регистры равны между собой, это уменьшит код программы и упростит сопровождение.
Далее идёт код который демонстрирует только Открытие и Закрытие файла.
CSEG segment
assume cs:CSEG,ds:CSEG,ss:CSEG,es:CSEG
org 100h
Begin:
;====================
;Open file
;OUT: ax = handle
mov ax,3D00h
lea dx,filename
int 21h
;====================
xchg ax,bx ;bx = handle
;====================
;Close file
mov ah,3Eh
int 21h
;====================
ret ;exit
;====================
filename db ‘1.txt‘,0
CSEG ends
end Begin
У вас в коде есть отрывок:
mov [numb],ax ;Здесь вы сохраняете Handle
mov ah,3Fh ;Номер функции Чтения из Файла
mov cx,0FF00h ;Колличество считываемых байт
mov dx,offset Buffer ;Адрес буфера куда будут читаться данные
int 21h
Этот отрывок предназначен для чтения из файла. В данном отрывке не хватает загрузки в регистор BX, хэндла файла т.е. правельная версия выглядит так:
mov [numb],ax ;Здесь вы сохраняете Handle
mov bx,ax ;bx = HANDLE FILE
mov ah,3Fh ;Номер функции Чтения из Файла
mov cx,0FF00h ;Колличество считываемых байт
mov dx,offset Buffer ;Адрес буфера куда будут читаться данные
int 21h
С, Уважением MnEm0n!C.