Здравствуйте! очень нужна помощь в написании программа-просмотрщика текстового файла, необходимо чтобы файл выводился и построчно и постранично, в соответствии с желаниями пользователя.
есть примеры для вывода построчно и для постранично, не могу соединить(
построчно:
;вывод строки ФИКСИРОВАННОГО РАЗМЕРА - 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
Просмотрщик текстового файла
Модератор: Andy
Что-то не понял что именно нужно, если приведены рабочие коды?
It's a long way to the top if you wanna rock'n'roll
-
- Сообщения: 5
- Зарегистрирован: 14 май 2013, 09:06
cjtlbybnm
Последний раз редактировалось KaterinaYes 11 авг 2019, 01:04, всего редактировалось 1 раз.
Завтра попробую слепить, давно че-то под DOS не писал
It's a long way to the top if you wanna rock'n'roll
-
- Сообщения: 5
- Зарегистрирован: 14 май 2013, 09:06
somewhere писал(а):Завтра попробую слепить, давно че-то под DOS не писал
была бы вам безумно благодарна!
Извиняюсь, задержался. На работе че-то завал.
Код + скрин. Все работает. Если надо коменты - напишу, только чур самой разбираться. Простейшие вещи коментить не буду.
Код + скрин. Все работает. Если надо коменты - напишу, только чур самой разбираться. Простейшие вещи коментить не буду.
Да вы что? И насколько именно благодарны?была бы вам безумно благодарна!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
It's a long way to the top if you wanna rock'n'roll
-
- Сообщения: 5
- Зарегистрирован: 14 май 2013, 09:06
[quote="somewhere"]Извиняюсь, задержался. На работе че-то завал.
Код + скрин. Все работает. Если надо коменты - напишу, только чур самой разбираться. Простейшие вещи коментить не буду.
Спасибо! только вот сегодня запустила - выдал что program not found. Скорее всего, я bat файл с неправильным содержимым запускаю?
Код + скрин. Все работает. Если надо коменты - напишу, только чур самой разбираться. Простейшие вещи коментить не буду.
Спасибо! только вот сегодня запустила - выдал что program not found. Скорее всего, я bat файл с неправильным содержимым запускаю?
Ну я не знаю как вы компилируете, но я использую батник, куда параметром передаю имя файла.
Код: Выделить всё
@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
-
- Сообщения: 5
- Зарегистрирован: 14 май 2013, 09:06
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
у меня даже так не работает(
-
- Сообщения: 5
- Зарегистрирован: 14 май 2013, 09:06
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
спасибо! все заработало) вот только.. не подскажете ли, как сделать еще одну функцию в этой проге - вывод одной строки. т.е. грубо говоря, при нажатии на пробел на экране остается первая строка и при нажатии на стрелки - листается по одной строке?