Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ Вывод сообщения об ошибке

Автор: Selena 12.12.2007 21:16

Здесь приведен текст программы шифрования файлов.
Этот код рабочий, здесь сперва требуется указать имя файла(текстового) для шифрования, а затем ключ по которому оно будет выполнятся. Но есть одно но, если файла нет, то программа продолжает свое действие, а надо, чтобы после ввода имени файла она выдывала сообщение что такого файла нет. Помогите пожалуйста добавить пару строк в этот текст чтобы она заработала так как надо.
Заранее спасибо


.model small
.stack 100h
.data
cr=0dh
lf=0ah
message1 db cr,lf,'File Name:'
mess1len=$-message1
message2 db cr,lf,'Key:'
mess2len=$-message2
password db 80 dup('*')
buf db 4096 dup(?)
filelen dw ?
key db ?
filename db 32 dup(?)
FDescr dw ?
.code
begin:
mov ax,@data
mov ds,ax
mov ah,40h
mov bx,1
mov cx,mess1len
mov dx,offset message1
int 21h
mov ah,3fh
xor bx,bx
mov cx,30
mov dx,offset filename
int 21h
mov bx,ax
sub bx,2
mov filename[bx],0
mov ah,40h
mov bx,1
mov cx,mess2len
mov dx,offset message2
int 21h
mov ah,3fh
xor bx,bx
mov cx,80
mov dx,offset password
int 21h
mov si,offset password
xor al,al
mov cx,80
NextByte1:
add al,[si]
inc si
loop NextByte1
mov key,al
mov ah,3dh
mov al,2
mov dx,offset filename
int 21h
mov FDescr,ax
mov ah,3fh
mov bx,FDescr
mov cx,4096
mov dx,offset buf
int 21h
mov filelen,ax
mov cx,filelen
mov si,offset buf
mov al,key
NextByte2: xor [si],al
inc si
loop NextByte2
mov ah,42h
mov bx,FDescr
xor al,al
xor cx,cx
xor dx,dx
int 21h
mov ah,40h
mov bx,FDescr
mov cx,filelen
mov dx,offset buf
int 21h
mov ah,3eh
mov bx,FDescr
int 21h
mov ah,4ch
xor al,al
int 21h
end begin



Автор: xds 12.12.2007 22:01

.model small
.stack 100h
.data
cr=0dh
lf=0ah
message1 db cr,lf,'File Name:'
mess1len=$-message1
message2 db cr,lf,'Key:'
mess2len=$-message2
message3 db 'File does not exist!',13,10,'$'
password db 80 dup('*')
buf db 4096 dup(?)
filelen dw ?
key db ?
filename db 32 dup(?)
FDescr dw ?
.code
begin:
mov ax,@data
mov ds,ax
mov ah,40h
mov bx,1
mov cx,mess1len
mov dx,offset message1
int 21h
mov ah,3fh
xor bx,bx
mov cx,30
mov dx,offset filename
int 21h
mov bx,ax
sub bx,2
mov filename[bx],0
mov ah,3dh
mov al,2
mov dx,offset filename
int 21h
jc error ;переход на обработчик ошибки открытия файла
mov FDescr,ax
mov ah,40h
mov bx,1
mov cx,mess2len
mov dx,offset message2
int 21h
mov ah,3fh
xor bx,bx
mov cx,80
mov dx,offset password
int 21h
mov si,offset password
xor al,al
mov cx,80
NextByte1:
add al,[si]
inc si
loop NextByte1
mov key,al
mov ah,3fh
mov bx,FDescr
mov cx,4096
mov dx,offset buf
int 21h
mov filelen,ax
mov cx,filelen
mov si,offset buf
mov al,key
NextByte2: xor [si],al
inc si
loop NextByte2
mov ah,42h
mov bx,FDescr
xor al,al
xor cx,cx
xor dx,dx
int 21h
mov ah,40h
mov bx,FDescr
mov cx,filelen
mov dx,offset buf
int 21h
mov ah,3eh
mov bx,FDescr
int 21h
mov ah,4ch
xor al,al
int 21h
;вывод сообщения об ошибке
error:
mov ah,9
lea dx,message3
int 21h
mov ax,4C01h
int 21h
end begin