Регистрация: 03.04.2012
Сообщений: 4
|
Считать файл TWO, удвоив все буквы "а"
Привет всем! Помогите пожалуйста с задачей. мне нужно её исправить, потому что она работает не правильно, должна удваивать буквы а, а она не удваивает, только копирует и всё, а что именно поправить, не знаю. Буду очень признателен.
Код:
include macro.lib
steck segment para 'steck'
dw 256 dup (?)
steck ends
data segment para 'data'
h00001 db'1 Zapis$'
h00002 db'2 Prosmotr 1.txt$'
h00003 db'3 Perezapisivanie$'
h00004 db'4 Prosmotr 2.txt$'
h00005 db'5 Exit$'
h00006 db'You choice: $'
choice dw ?
vert EQU 25
;Data1
mess11 db 'Zapis v file. '
mess21 db 'Vvedite stroku'
sum1 dw 0
filename db '1.txt'
handle dw ?
buflen equ $-str1
strlen dw ?
cp2 dw 20
stroka label byte
maxlen db 130
actlen db ?
str1 db 80 dup ('$')
;Data2
mess12 db 'Chtenie'
mess22 db 'Fila'
sum2 dw '0'
filename1 db '1.txt'
handle1 dw ?
str3 db 1024 dup ('$')
buflen1 equ $-str3
strlen1 dw ?
;Data3
sum3 dw '0'
mess13 db 'Perezapisianie'
mess23 db 'Iz odnogo fila v drugoy'
k dw 0
k1 dw 0
filename3 db '1.txt'
handle2 dw ?
filename4 db '2.txt'
handle3 dw ?
str4 db 1024 dup ('$')
buflen2 equ $-str4
strlen2 dw ?
str5 db 1024 dup ('$')
buflen3 equ $-str5
strlen3 dw ?
cp3 dw 80
;Data4
sum4 dw '0'
mess14 db 'Prosmotr'
mess24 db 'Fila'
filename5 db '2.txt'
handle4 dw ?
str6 db 1024 dup ('$')
buflen4 equ $-str1
strlen4 dw ?
;Data11
Data ends
Code segment para 'code'
begin proc far
assume cs:code, ds:data, ss:steck
mov ax, data
mov ds, ax
mov ss, ax
start:
cls
mov cx, vert
move_cursor 19, 1
message h00001
move_cursor 19, 2
message h00002
move_cursor 19, 3
message h00003
move_cursor 19, 4
message h00004
move_cursor 19, 5
message h00005
move_cursor 19, 6
message h00006
key_$2bin
mov choice, ax
cmp choice, 5
je g0006
jmp l1
g0006:
call g6
begin endp
l1:
cmp choice, 1
je g0001
jmp l2
g0001:
call bc1
l2:
cmp choice, 2
je g0002
jmp l3
g0002:
call bc2
l3:
cmp choice, 3
je g0003
jmp l4
g0003:
call bc3
l4:
cmp choice, 4
je g0004
g0004:
call bc4
wait_key proc
mov ah, 10h
int 16h
ret
wait_key endp
;Prog1
bc1 proc near
cls
message mess11
crlf
message mess21
crlf
mov ah, 0ah
lea dx, stroka
int 21h
mov cx, 0
mov ah, 3ch
mov al, 0
lea dx, filename
int 21h
mov handle, ax
mov ah, 40h
mov bx, handle
mov cx, cp2
lea dx, str1
int 21h
mov ah, 3eh
mov bx, handle
int 21h
call wait_key
bc1 endp
jmp start
;Prog2
bc2 proc near
cls
message mess12
crlf
message mess22
crlf
mov ax, data
mov ds, ax
mov ah, 3dh
mov al, 2
lea dx, filename1
int 21h
mov handle1, ax
mov ah, 3fh
mov bx, handle1
mov cx, buflen1
lea dx, str3
int 21h
mov strlen1, ax
mov ah, 3eh
mov bx, handle1
int 21h
mov cx, strlen1
mov bx, cx
mov al, ' '
mov str3[bx], al
crlf
message str3
call wait_key
bc2 endp
jmp start
;Prog3
bc3 proc near
cls
message mess13
crlf
message mess23
crlf
mov ax, data
mov ds, ax
mov ah, 3dh
mov al,2
lea dx, filename3
int 21h
mov handle2, ax
mov ah, 3fh
mov bx, handle2
mov cx, buflen2
lea dx, str4
int 21h
mov strlen2, ax
mov ah, 3eh
mov bx, handle2
int 21h
mov cx, strlen1
mov bx, cx
mov al, ' '
mov str4[bx], al
message str4 ;vivod informaci iz fala
print_number
crlf
lea si, str5
lea di, str4
mov cx, 4
m1:
mov al,[di]
cmp al, 'a'
jne m2
mov [si],al
inc si
mov [si],al
m2:
inc si
inc di
loop m1
crlf
message str5
crlf
key_$2bin
mov cx, 0
mov ah, 3ch
mov al, 0
lea dx, filename4
int 21h
mov handle3, ax
mov ah, 40h
mov bx, handle3
mov cx, cp3
lea dx, str4
int 21h
mov ah, 3eh
mov bx, handle3
int 21h
call wait_key
jmp start
bc3 endp
;Prog4
bc4 proc near
cls
message mess14
crlf
message mess24
crlf
mov ax, data
mov ds, ax
mov ah, 3dh
mov al, 2
lea dx, filename5
int 21h
mov handle4, ax
mov ah, 3fh
mov bx, handle4
mov cx, buflen4
lea dx, str6
int 21h
mov strlen4, ax
mov ah, 3eh
mov bx, handle4
int 21h
mov cx, strlen4
mov bx, cx
mov al, ' '
mov str6[bx], al
crlf
message str6
crlf
call wait_key
jmp start
bc4 endp
;Exit
g6:
cls
mov ax, 4c00h
int 21h
code ends
end begin
___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.
Последний раз редактировалось Serge_Bliznykov; 18.06.2012 в 14:00.
|