KaterinaYes » 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
Здравствуйте! очень нужна помощь в написании программа-просмотрщика текстового файла, необходимо чтобы файл выводился и построчно и постранично, в соответствии с желаниями пользователя.
есть примеры для вывода построчно и для постранично, не могу соединить(
построчно:
;вывод строки ФИКСИРОВАННОГО РАЗМЕРА - 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