Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дописать в файл "хвост" и блок окружения 
:(
    Опции темы
ФедосеевПавел
Дата 16.10.2012, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(boobie @  16.10.2012,  05:18 Найти цитируемый пост)
Я знаю только один способ вывода на экран:

Без обид. Ты читаешь мои посты? Для кого я привёл пример вывода на экран как в файл (второй способ)?

Файл уже разбит на строки - в нём в конце каждой строки присутствует пара CR и LF.
К чему это я...
Читаешь из файла блок кратный 80 (длине строки) и выводишь на экран как в файл. А ОС сама разберётся с переводом на новую строку.
Читаешь в цикле до тех пор, пока количество считанных байт не станет меньше размера буфера. Такая ситуация будет означать, что считан последний буфер.

Описание int 21h Fn=3fh
На входе:
ah=3fh - номер функции DOS
bx - описатель (хендл) файла
cx - размер буфера для чтения, считано будет не более чем размер буфера
ds:dx - адрес буфера для чтения
На выходе:
если была ошибка чтения: CY=1, AX-код ошибки
если чтение безошибочно: CY=0, AX-количество реально считанных байт. AX будет меньше размера буфера, если считан последний буфер.

COM и EXE в исходниках отличаются лишь в оформлении - ничто не мешает использовать то, что я приводил ранее в COM. Вот COM программа чтения из файла "text.txt" и вывода на дисплей.
Код
.model    tiny
.code
    org    100h
main    proc
    ;OPEN
    mov    ah,    3dh    ;open file
    mov    al,    02h    ;mode: read+write
    lea    dx,    azFileName
    int    21h
    jc    @@EndOfProg
    mov    hFile,    ax

    ;READ
    mov    ah,    3fh
    mov    bx,    hFile
    mov    cx,    BuffSize
    lea    dx,    ibBuffer
    int    21h
    jc    @@CloseFile
    mov    cx,    ax    ; в ax сейчас количество реально считанных из файла 
    ;WRITE
    mov    ah,    40h
    mov    bx,    hConOutput
    lea    dx,    ibBuffer
    mov    cx,    cx
    int    21h

@@CloseFile:
    mov    ah,    3eh
    mov    bx,    hFile
    int    21h

@@EndOfProg:
    mov    ax,    4c00h
    int    21h
main    ENDP

.data
hConOutput    equ    0001h    ; стандартный файл вывода в консоль
BuffSize    equ    400

azFileName    db    "text.txt", 0
hFile        dw    ?
ibBuffer    db    BuffSize dup(?)

end main


Это сообщение отредактировал(а) ФедосеевПавел - 16.10.2012, 19:07
PM   Вверх
boobie
Дата 15.11.2012, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

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

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


 




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


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

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