Важная информация
Показано с 1 по 2 из 2

Тема: программа-просмотрщик текстовых файлов

  1. #1 программа-просмотрщик текстовых файлов 
    Новичок
    Регистрация
    14.05.2013
    Сообщений
    1
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Здравствуйте! ОЧень нуждаюсь в вашей помощи, так как задали написать просмотрщик текстовых файлов, который открывает текст и построчно, и постранично, в зависимости от желаний пользователя. есть кусок программы выводящей построчно, и есть - постанично. Не могу соединить. Помогите. пожалуйста

    построчно:

    ;вывод строки ФИКСИРОВАННОГО РАЗМЕРА - 8 СИМВОЛОВ
    ;работает почуть криво, но хоть что-то((((

    Код asm:
    .model small
    .stack  100h
    data segment
     
    ;sourcestring    db 257  dup(?) ; зачем то
    ;resultstring    db 257  dup(?) ; --
     
    handle  dw      0       ;дескриптор файла
    file    db 'rec.txt',0,'$'
    buf     dw      ?
    Ok      db      'OK','$'
    er      db      'Error','$'
    Buffer equ $
    data ends
    .code
    begin:
        assume ds:data
            mov     ax, data
            mov     ds, ax
     
            mov     ah,3dh ;открытие
            mov     al,0
            lea     dx,file 
            int     21h
            jc      erro
     
           mov Handle,ax         
        M:     mov bx,ax ;вывод
            mov ah,3Fh             
            mov cx,8h           
            mov dx,offset Buffer     
            int 21h
     
        mov cx, ax
            mov ah,40h
            mov bx, 1
        int 21h
     
        mov ah,00h
        int 16h
     
     
        cmp ah,01h ;если нажали энтер выводит еще 1 строку, если нет - выход
        je M
        jne Out_prog  
        
            mov ah,3Eh               
            mov bx,Handle
            int 21h
     
            mov dx,offset ok
     
    Out_prog :
            mov ah,9h
            int 21h
     
        xor ax, ax
        int 16h
     
            int 20h
    erro:
            mov ah,3ch
            mov cx,2
            int 21h
     
            mov dx,offset er
            jmp Out_prog
    end     begin           ;конец программы с точкой входа main
     
     
    постранично:
    ;рабокий код. выводит содержимое файла rec.txt
    ;стрелочками прокрутка
     
     
     
    .model small
    .stack  100h
    data segment
     
    ;sourcestring    db 257  dup(?) ; зачем то
    ;resultstring    db 257  dup(?) ; --
    ofset dw ? 
    handle  dw      0       ;дескриптор файла
    file    db 'rec.txt',0,'$'
    buf     dw      ?
    Ok      db      'OK','$'
    er      db      'Error','$'
    Buffer equ $
    data ends
    .code
    begin:
        assume ds:data
            mov     ax, data
            mov     ds, ax
     
            mov     ah,3dh ;открытие файла
            mov     al,0
            lea     dx,file 
            int     21h
            jc      erro
     
       Vw: mov Handle,ax       ;вывод содержимого файла  
            mov bx,ax
            mov ah,3Fh             
            mov cx,0FDE8h           
            mov dx,offset Buffer     
            int 21h
     
        mov cx, ax
            mov ah,40h
            mov bx, 1
        add dx, ofset
        int 21h
     
            mov ah,3Eh               
            mov bx,Handle
            int 21h
     
            mov dx,offset ok
     
    inp:         ;вызов функции считывающих нажатие клавиши
    mov ah, 6
    mov al, 0
    mov dl, 0ffh
    int 21h
     
     
    cmp al, 72  ;стрелочка вверх
    jz up
     
    cmp al, 80  ;стрелочка вниз
    jz down
     
    cmp al, 113  ;это вроде энд или эскейп - выход из программы - какая точно не помню))))))
    jz Out_prog
     
    jmp inp
     
    up:                         ;стрелочки для скроллинга
    sub ofset, 10
    jmp vw
     
    down:
    add ofset, 10
    jmp vw
     
     
     
    Out_prog:
            mov ah,9h
            int 21h
     
        xor ax, ax
        int 16h
     
            int 20h
    erro:
            mov ah,3ch
            mov cx,2
            int 21h
     
            mov dx,offset er
            jmp Out_prog
    end     begin           ;конец программы с точкой входа main
    Последний раз редактировалось Абадябер; 14.05.2013 в 18:54. Причина: Засунул код в блок.
    Ответить с цитированием  
     

  2. #2  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,931
    Сказал(а) спасибо
    1,842
    Поблагодарили 982 раз(а) в 840 сообщениях
    Записей в блоге
    1
    Это в любом другом ВУ языке можно наспех склеить 2 кода, асм как раз и характерен тем, что - нельзя.
    Я бы на вашем месте раздобыл справочник по ассемблеру, функциям DOS и воспользовался бы, прямым
    выводом в память текстового экрана(сегмент 0B800h). Может тут кто из прогеров свободен и поможет,
    я к сожалению занят да и задание не совсем понятно, построчный вывод охватывает постраничный,
    зачем тогда нужен постраничный?
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Конвертер музыкальных *.VGM файлов в *.MID
    от >Quiet Snow< в разделе Старые игры
    Ответов: 0
    Последнее сообщение: 20.04.2013, 21:29
  2. Экологическая программа
    от VadimT в разделе Turbo Pascal
    Ответов: 8
    Последнее сообщение: 20.01.2013, 13:28
  3. Проигрование Wav-файлов на QBASIC'e
    от Kakos_nonos в разделе Разработки на QBasic
    Ответов: 14
    Последнее сообщение: 27.08.2012, 20:53
  4. Ответов: 11
    Последнее сообщение: 17.11.2011, 12:14
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •