📄 creat.asm
字号:
public begin
desg segment para 'data'
filename label byte
maxname db 16
namelen db ?
pathnam db 16 dup (' ')
long equ 1024
file db long dup(' ')
count dw 0
errcde db 0
handle dw ?
row db 1
wrtpath db '*please input newpathnam*','$'
opnmsg db '* * * open error * * *',0dh,0ah
wrtmsg db '* * * write error * * *',0dh,0ah
desg ends
cseg segment para 'code'
begin proc far
assume cs:cseg,ds:desg,es:desg
start:
push ds
sub ax,ax
push ax
mov ax,desg
mov ds,ax
mov es,ax
repeat :mov ax,0600h
call scren
call curs
call creath
cmp errcde,0
jz contin
ret
contin:
call proch
cmp count,0
je repeat
call clseh
ret
begin endp
creath proc near
mov dx,offset wrtpath
mov ah,9
int 21h
mov ah,0ah
lea dx,filename
int 21h
cmp namelen,0
jz a1
mov al,0
sub ch,ch
mov cl,namelen
lea di,pathnam
add di,cx
neg cx
add cx,16
rep stosb
mov ax,0600h
call scren
call curs
mov ah,3ch
mov cx,0
lea dx,pathnam
int 21h
jc a1
mov handle,ax
ret
a1: lea dx,opnmsg
call errm
ret
creath endp
proch proc near
mov cx,long-1
mov di,offset file
loop1: mov ah,1h
int 21h
cmp al,2eh
jz ldif
cmp al,0dh
jz crlf
inc count
mov [di],al
inc di
loop loop1
jmp exitin
crlf: mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
jmp loop1
ldif: mov al,20h
mov cx,count
lea di,file
add di,cx
neg cx
add cx,long
rep stosb
exitin: call writh
ret
proch endp
writh proc near
mov ah,40h
mov bx,handle
mov cx,count
lea dx,file
int 21h
jnc d1
lea dx,wrtmsg
call errm
mov count,0
d1:
ret
writh endp
clseh proc near
mov di,offset file
mov ah,40h
mov bx,handle
mov cx,1
mov dx,[di+count]
int 21h
mov ah,3eh
mov bx,handle
int 21h
ret
clseh endp
errm proc near
mov ah,40h
mov bx,01
mov cx,21
int 21h
mov errcde,01
ret
errm endp
scren proc near
mov bh,1eh
mov cx,0
mov dx,184fh
int 10h
ret
scren endp
curs proc near
mov ah,02
mov bh,0
mov dl,0
mov dh,row
int 10h
ret
curs endp
cseg ends
end begin
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -