Ассемблер.Турбо дебаггер. ОЧЕНЬ нужна помощь!Работа с текстовым файлом.Строчн. и проп
Добавлено: 22 май 2008, 18:12
Здравствуйте!Помогите пожалуйста!Валят в универе,надо срочно сдать задачу.
Необходимо прочесть из текстового файла английский текст (не длинный), преобразовать маленькие символы в заглавные и сохранить в другой текстовый файл.Чисто интуитивно я понимаю,что надо в ASCII аблице прибавить 20 к коду символов.А вот как это сделать,я не знаю...и работа с файлами для меня загадка...Прошу написать полную программу.Заранее огромнейшее спасибо!!!
Вот примерно то,что просят(в плане синтаксиса и пр. -это просто чтение файла и как я понял копирование в буфер)
а вот такого же плана,но с сохранением в файл,но тут ещё заменяют первый символ заданным словом:
Необходимо прочесть из текстового файла английский текст (не длинный), преобразовать маленькие символы в заглавные и сохранить в другой текстовый файл.Чисто интуитивно я понимаю,что надо в ASCII аблице прибавить 20 к коду символов.А вот как это сделать,я не знаю...и работа с файлами для меня загадка...Прошу написать полную программу.Заранее огромнейшее спасибо!!!
Вот примерно то,что просят(в плане синтаксиса и пр. -это просто чтение файла и как я понял копирование в буфер)
Код: Выделить всё
TITLE file
.model small
.stack 100h
.data
buf db 100 dup(?)
FM dw ? ;для хранения номера файла, получаемого от DOS
Name1 db "D:\6421\Lab5\text.txt", 0 ; местоположение файла, заданное в формате
.code
file proc ; ASCII
mov ax, @data
mov ds, ax
mov ax, 3D00h ; в ah задан номер функции открытия файла, в al задан режим
; доступа.
lea dx, Name1 ;в ds:dx размещается адрес строки, содержащей идентификацию
;файла.
int 21h ; вызов функций открытия файла.
mov dl,"O" ; символ для идентификации ошибки, которая могла возникнуть
; при открытии файла
jc _ERR ; если ошибка возникает при открытии файла, то осуществляется
; переход (ближний) к обработке ошибки.
;выполнение дальнего перехода осуществляется так: jnc mm
;jmp _ERR
;mm:
mov FM, ax ; если нет ошибок, то FM сохраняется.
;чтение данных из файла.
mov ah, 3Fh ; в ah задан номер функции чтения из файла.
mov bx, FM ; регистр bx должен содержать логический номер файла.
mov cx, 100 ; в cx количество читаемых байтов.
lea dx, buf ; в ds:dx указывается адрес буфера для ввода данных из файла.
int 21h ; вызов функции чтения.
mov dl, "R"
jc _ERR
; закрытие файла
mov ah, 3Eh ;в ah задан номер функции закрытия файла.
mov bx, FM
int 21h
mov dl, "C"
jc _ERR
jmp exit
_ERR: mov ah, 02h ; вывод символа, идентифицирующего возможную ошибку.
int 21h
exit: ret
file endp
end
Код: Выделить всё
TITLE main
.model small
.stack 100h
.data
buf db 100 dup(?)
FM dw ? ;для хранения номера файла, получаемого от DOS
Name1 db "D:\6421\Zhilin 5\Text1.txt", 0 ; местоположение файла,заданное в формате
Name2 db "D:\6421\Zhilin 5\Text2.txt", 0
myname db "Belov"
buf2 db 106 dup(?)
cx_ dw 0
mes4 db 0Dh,0Ah,'TEXT: ','$'
mes1 db 0Dh,0Ah,'create error ','$'
mes2 db 0Dh,0Ah,'write error ','$'
mes3 db 0Dh,0Ah,'open error ','$'
.code
main: ; ASCII
mov ax, @data
mov ds, ax
mov ax, 3D00h ; в ah задан номер функции открытия файла, в al задан режим
; доступа.
lea dx, Name1 ;в ds:dx размещается адрес строки, содержащей идентификацию
;файла.
int 21h ; вызов функций открытия файла.
mov dl,"O" ; символ для идентификации ошибки, которая могла возникнуть
; при открытии файла
;jc _ERR ; если ошибка возникает при открытии файла, то осуществляется
; переход (ближний) к обработке ошибки.
;выполнение дальнего перехода осуществляется так: jnc mm
;jmp _ERR
;mm:
mov FM, ax ; если нет ошибок, то FM сохраняется.
;чтение данных из файла.
mov ah, 3Fh ; в ah задан номер функции чтения из файла.
mov bx, FM ; регистр bx должен содержать логический номер файла.
mov cx, 100 ; в cx количество читаемых байтов.
lea dx, buf ; в ds:dx указывается адрес буфера для ввода данных из файла.
int 21h ; вызов функции чтения.
mov dl, "R"
;jc _ERR
; закрытие файла
mov ah, 3Eh ;в ah задан номер функции закрытия файла.
mov bx, FM
int 21h
mov dl, "C"
;jc _ERR
;my
lea si,buf
lea di,buf2
mov cx,100
my:
mov cx_,cx
cmp byte ptr [si],20h
je povt
cmp byte ptr [si],30h
jl bukva1
cmp byte ptr [si],39h
jg bukva1
jmp povt
bukva1:
mov cx,7
lea bx,myname
bukva2:
mov al,[bx]
mov [di],al
inc di
inc bx
loop bukva2
mov cx,cx_
inc si
jmp povt2
povt: mov al,[si]
mov [di],al
inc si
inc di
loop my
povt2:
cmp [si],0h
je nome
mov al,[si]
mov [di],al
inc si
inc di
loop povt2
;nomy
nome:
mov ah,3CH
mov cx,00
lea dx,Name2
int 21h
;jc error1
mov fm,ax
mov ah,9
lea dx,mes4
int 21h
mov ah,40h
mov bx,1
mov cx,100
lea dx,buf2
int 21h
mov ah,40h
mov bx,fm
mov cx,100
lea dx,buf2
int 21h
;jc error2
;jmp exit
jmp exit
_ERR: mov ah, 02h ; вывод символа, идентифицирующего возможную ошибку.
int 21h
exit:
mov ah,01h
int 21h
mov ax, 4c00h
int 21h
End main
;ret
;file endp
;end