Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите с чтением с файла, помогите с чтением с файла 
:(
    Опции темы
xseroxas
  Дата 14.11.2007, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 23.9.2007

Репутация: нет
Всего: нет



вобщем проблема состоит в том что мне надо читать файл с конца насколко я понимаю надо послат сам курсор в конец 
с помощю команды
 
Код

mov ah,42h mov al,2 


но непанимаю как потом мне передвигиватса по файле ровно на столко на сколко мне надо например на 20h


зарание блогадарен

PM MAIL   Вверх
xseroxas
Дата 14.11.2007, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 23.9.2007

Репутация: нет
Всего: нет



насколко я уже разобрался кырсор отаправлаю с помощю 42н функцыйи потом пишу dec ax насколко я панимаю должно мен одпечатать последний символ из моего файла но он нечего непечатает почему или я нитак панимаю


Код

read_duom1: 
      mov ah,42h
      mov al,02h
      mov bx,[duom1_desc]
      xor dx,dx
      xor cx,cx
      int 21h

                  dec ax
      
      mov bx,[duom1_desc] 
      mov ah,3fh
      mov cx,2h
      mov dx,offset duom1_buf
      int 21h
      jc close_duom1

PM MAIL   Вверх
dumb
Дата 15.11.2007, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



функция 42h устанавливает позицию в файле относительно начала(al=0)/текущей позиции(al=1)/конца файла(al=2). относительное смещение указывается в паре регистров CX:DX(32 бита) и является знаковым - т.е. можно, например, сместиться на -2 байта относительно текущей позиции: al=1, cx:dx=-2{FFFFFFFE, т.е. cx=FFFF(-1), dx=FFFE(-2)}
возвращенное функцией в регистрах DX:AX 32битное число есть смещение от начала, получившееся после позиционирования.

ты своим dec ax просто изменил число возвращенное функцией. позиция в файле от этого, очевидно, не меняется и остается по прежнему на конце файла, откуда прочитать ты ничего уже не можешь... чтобы поменять позицию в файле, нужно после твоего dec ax запихать это число опять в cx:dx и заново вызвать функцию позиционирования(только на этот раз - от начала файла):
Код

read_duom1:
      mov ah,42h
      mov al,02h
      mov bx,[duom1_desc]
      xor dx,dx
      xor cx,cx
      int 21h
      jc close_duom1

      dec ax
      mov cx,dx
      mov dx,ax

      mov ah,42h
      mov al,00h
      mov bx,[duom1_desc]
      int 21h
      jc close_duom1
      
      mov bx,[duom1_desc] 
      mov ah,3fh
      mov cx,1 ;2h - определись, один тебе нужен байт или таки два...
      mov dx,offset duom1_buf
      int 21h
      jc close_duom1


или просто сразу установить позицию -1 от конца:
Код

read_duom1:
      mov bx,[duom1_desc]
      mov ax,4202h
      mov cx,-1 ; FFFF
      mov dx,-1 ; FFFF
; полное число в паре CX:DX - FFFFFFFF, т.е. -1
      int 21h
      jc close_duom1

      mov ah,3fh
      mov cx,1 ;2h - определись, один тебе нужен байт или таки два...
      mov dx,offset duom1_buf
      int 21h
      jc close_duom1


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0722 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.