Просмотрщик текстового файла

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
KaterinaYes
Сообщения: 5
Зарегистрирован: 14 май 2013, 09:06

14 май 2013, 09:11

Здравствуйте! очень нужна помощь в написании программа-просмотрщика текстового файла, необходимо чтобы файл выводился и построчно и постранично, в соответствии с желаниями пользователя.
есть примеры для вывода построчно и для постранично, не могу соединить(

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


.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
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

15 май 2013, 10:51

Что-то не понял что именно нужно, если приведены рабочие коды?
It's a long way to the top if you wanna rock'n'roll
KaterinaYes
Сообщения: 5
Зарегистрирован: 14 май 2013, 09:06

15 май 2013, 14:31

cjtlbybnm
Последний раз редактировалось KaterinaYes 11 авг 2019, 01:04, всего редактировалось 1 раз.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

15 май 2013, 16:06

Завтра попробую слепить, давно че-то под DOS не писал
It's a long way to the top if you wanna rock'n'roll
KaterinaYes
Сообщения: 5
Зарегистрирован: 14 май 2013, 09:06

16 май 2013, 19:09

somewhere писал(а):Завтра попробую слепить, давно че-то под DOS не писал

была бы вам безумно благодарна!
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

17 май 2013, 23:18

Извиняюсь, задержался. На работе че-то завал. :mad:
Код + скрин. Все работает. Если надо коменты - напишу, только чур самой разбираться. Простейшие вещи коментить не буду.
была бы вам безумно благодарна!
Да вы что? И насколько именно благодарны? ;)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
It's a long way to the top if you wanna rock'n'roll
KaterinaYes
Сообщения: 5
Зарегистрирован: 14 май 2013, 09:06

18 май 2013, 18:21

[quote="somewhere"]Извиняюсь, задержался. На работе че-то завал. :mad:
Код + скрин. Все работает. Если надо коменты - напишу, только чур самой разбираться. Простейшие вещи коментить не буду.

Спасибо! только вот сегодня запустила - выдал что program not found. Скорее всего, я bat файл с неправильным содержимым запускаю?
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

18 май 2013, 19:44

Ну я не знаю как вы компилируете, но я использую батник, куда параметром передаю имя файла.

Код: Выделить всё

@echo off
d:\distrib\lang\tasm\tasm %1.asm  /id:\distrib\lang\tasm\Includes /q/m3 /la
d:\distrib\lang\tasm\tlink %1.obj /m /e /3 /yx
del *.obj
It's a long way to the top if you wanna rock'n'roll
KaterinaYes
Сообщения: 5
Зарегистрирован: 14 май 2013, 09:06

19 май 2013, 10:10

somewhere писал(а):Ну я не знаю как вы компилируете, но я использую батник, куда параметром передаю имя файла.

Код: Выделить всё

@echo off
d:\distrib\lang\tasm\tasm %1.asm  /id:\distrib\lang\tasm\Includes /q/m3 /la
d:\distrib\lang\tasm\tlink %1.obj /m /e /3 /yx
del *.obj

у меня даже так не работает(
KaterinaYes
Сообщения: 5
Зарегистрирован: 14 май 2013, 09:06

19 май 2013, 18:08

somewhere писал(а):Ну я не знаю как вы компилируете, но я использую батник, куда параметром передаю имя файла.

Код: Выделить всё

@echo off
d:\distrib\lang\tasm\tasm %1.asm  /id:\distrib\lang\tasm\Includes /q/m3 /la
d:\distrib\lang\tasm\tlink %1.obj /m /e /3 /yx
del *.obj

спасибо! все заработало) вот только.. не подскажете ли, как сделать еще одну функцию в этой проге - вывод одной строки. т.е. грубо говоря, при нажатии на пробел на экране остается первая строка и при нажатии на стрелки - листается по одной строке?
Ответить