Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Чтение из файла,алгоритм обработки  (Прочитано 16661 раз)
0 Пользователей и 1 Гость смотрят эту тему.
pokk
Помогающий

ru
Offline Offline

« : 12-09-2011 12:56 » 

Я думаю здесь ка-то всё просто идёт но что-то не могу ни как придумать   Улыбаюсь

Из  файла который находится на жёстко диске считать  данные(к примеру  там будет 1111b,111b,11b) (это я сделал)
3  цифры в двоичном коде.Записываю их в двух байтный массив(хотя вот тут есть не большой вопросик есть ли  разница в какой записывать ? в  dw или db )
ну так вот записать  то записал 
но как мне от туда выделить то свои числа ?  они же там  записываются  каждый бит в свою ячейку 
если бы они все слитно шли то  проблем бы не было  но тут же ещё у каждого числа и свой размер  Меня одолевают смутные сомнения


Чтение сделал вот так вот:
Код:
;----------------------------------------------------------------открываем файл
   LEA  DX,read       ;DS:DX указывают на путь
   MOV  AL,02h          ;код открытия только для записи
   MOV  AH,3DH        ;номер функции
   INT  21H           ;открываем файл

   MOV  HANDLE,AX     ;сохраняем номер файла

   
;------------------------------------------------------------------чтение
   MOV  AH,3FH        ;номер функции
   MOV  BX,HANDLE     ;номер файла в BX
   MOV  CX,100       ;число записываемых байтов
   LEA  DX,V2  ;DS:DX указывают на буфер данных
   INT  21H           ;добавляем данные
;------------------------------------------------------------------закрытие   
   MOV  AH,3EH       ;номер функции
   MOV  BX,HANDLE    ;номер файла
   INT  21H          ;закрываем файл



Записан
Basurman
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 12-09-2011 13:41 » 

pokk, не лучше ли всё-таки для начала почитать литературу по ассемблеру?
В соседнем топике я указывал для примера две книги. Очень полезные издания, особенно Ирвин.
Там и узнаешь разницу между словным массивом (определяется dw) и байтовым массивом (определяется db). А так же, получишь информацию о файлах (типизированных и нетипизированных) и, о методах работы с ними.
Ты спрашиваешь об элементарных вещах, которые необходимо знать, приступая к написанию кода. Но, что бы разъяснить их, надо потратить много слов. А всё это прекрасно описано в литературе по программированию на ассемблере.
Так что не ленись, почитай первоисточники. Кстати к Ирвину 4-го издания прилагается бесплатная версия MASM 6.15.
Записан
pokk
Помогающий

ru
Offline Offline

« Ответ #2 : 14-09-2011 07:33 » 

Скачал книгу читаю =) 

Но у меня тут возникли какие-то не понятные  явления =)   
компиляция программы проходит  нормально ошибки не какие не возникают   
выполнение программы происходит  не понятно то что должно делаться не делается

открываю через  Turbo Debugger (TD)   там она   почти работает   (при открытии файла в ах записывается число 05)
но всё равно  дальше  всё делается как и должно

так вот код ошибки 05  говорит о том ,что отказано в доступе   но этот файл не где не открыт и не используется
так вот  у меня 2 вопроса  что  сделать что бы  в доступе было не отказано и почему отказанно?  и почему в   TD  она работает ?

Код:
model	small
.data
read    DB    'C:\ASM\MAKET\lab\lab2\123.txt',0
write    DB    'C:\ASM\MAKET\lab\lab2\1234.txt',0
HANDLE dw 1 DUP(?)
.code
mov ax,@data
mov ds,ax

;----------------------------------------------------------------открываем файл
   LEA  DX,read       ;DS:DX указывают на путь
   MOV  AL,00h          ;код открытия только для чтения
   MOV  AH,3DH        ;номер функции
   INT  21H           ;открываем файл

   MOV  HANDLE,AX     ;сохраняем номер файла
.................
Записан
Basurman
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 14-09-2011 13:35 » 

Бегом читать первоисточники!!!
Где проверка флага переноса (признак ошибки)? Если признак ошибки не установлен - что содержит AX?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 14-09-2011 13:36 » 

pokk, а какая операционная система? И в чём ты запускаешь tasm и td?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
pokk
Помогающий

ru
Offline Offline

« Ответ #5 : 14-09-2011 14:01 » new

Цитата
Где проверка флага переноса (признак ошибки)?
Хм ага  про флаг забыл.Флаг  С  не  меняет своего значения  да и собственное не один из флагов  
Цитата
Если признак ошибки не установлен - что содержит AX?
манипулятор ?
Цитата
pokk, а какая операционная система?
windows  xp
Цитата
И в чём ты запускаешь tasm и td?
Через bat файл запускаю  
Код:
SET name=vvv.asm
tasm lab\%name% lab\%name%
tlink lab\%name%
pause=null
Вы про это спрашивали ?
А  TD  exe  файл





Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines