Вот прога:
Код: Выделить всё
ideal
model small
stack 256
dataseg
filename db 40 dup(24h)
str1 db 80 dup(24h)
nl db 10,13,24h
handle dw 0
msg_file_create db '‚ўҐ¤ЁвҐ Ё¬п б®§¤ ў Ґ¬®Ј® д ©« :',10,13,24h
msg_file_open db '‚ўҐ¤ЁвҐ Ё¬п ®вЄалў Ґ¬®Ј® д ©« :',10,13,24h
msg_str db '‚ўҐ¤ЁвҐ бва®Єг:',10,13,24h
msg_er_create db 'ЋиЁЎЄ ЇаЁ б®§¤ *ЁЁ д ©« !',10,13,24h
msg_er_open db 'ЋиЁЎЄ ЇаЁ ®вЄалвЁЁ д ©« !',10,13,24h
codeseg
startupcode
; Ї®«гзҐ*ЁҐ Ё¬Ґ*Ё б®§¤ ў Ґ¬®Ј® д ©«
mov ah,09h
lea dx,[msg_file_create]
int 21h
mov ah,0Ah
lea dx,[filename]
int 21h
mov ah,09h
lea dx,[nl]
int 21h
; ASCII -> ASCIIZ
xor ax,ax
mov al,[filename+1]
mov si,ax
mov [filename+2+si],0
; б®§¤ *ЁҐ д ©«
xor cx,cx
mov ah,3Ch
lea dx,[filename+2]
int 21h
jnc next1
er_create:
mov ah,09h
lea dx,[msg_er_create]
int 21h
jmp exit
next1:
mov [handle],ax
; Ї®«гзҐ*ЁҐ бва®ЄЁ
mov ah,09h
lea dx,[msg_str]
int 21h
mov ah,0Ah
lea dx,[str1]
int 21h
mov ah,09h
lea dx,[nl]
int 21h
; § ЇЁбм бва®ЄЁ
xor cx,cx
mov cl,[str1+1]
mov bx,[handle]
lea dx,[str1+2]
mov ah,40h
int 21h
; § ЄалвЁҐ д ©«
mov ah,3Eh
int 21h
; Ї®«гзҐ*ЁҐ Ё¬Ґ*Ё ®вЄалў Ґ¬®Ј® д ©«
mov ah,09h
lea dx,[msg_file_open]
int 21h
mov ah,0Ah
lea dx,[filename]
int 21h
mov ah,09h
lea dx,[nl]
int 21h
; ASCII -> ASCIIZ
xor ax,ax
mov al,[filename+1]
mov si,ax
mov [filename+2+si],0
; ®вЄалвлҐ д ©«
mov ah,3Dh
mov al,00b
;mov al,2
lea dx,[filename+2]
int 21h
jnc next2
er_open:
mov ah,09h
lea dx,[msg_er_open]
int 21h
jmp exit
next2:
mov [handle],ax
mov bx,ax
; звҐ*ЁҐ д ©«
read:
mov ah,3Fh
mov cx,79
lea dx,[str1]
int 21h
mov di,ax
mov [str1+di],24h
; ўлў®¤ бзЁв **ле ¤ **ле
mov ah,09h
lea dx,[str1]
int 21h
cmp di,cx
jb close
jmp read
; § ЄалвЁҐ д ©«
close:
mov bx,[handle]
mov ah,3Eh
int 21h
exit:
exitcode
end