📄 delself.asm
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2003.7.22
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.model small
.stack
.data
nameaddr dw ?
lenth dw ?
path db 30 dup(?)
m1 db 0ah,0dh,'error!',0ah,0dh,'$'
m2 db 0ah,0dh,'ok deleted!',0ah,0dh,'$'
.code
main proc far
start:
mov ax,@data
mov ds,ax
env:
mov ax,es:[2ch] ;PSP偏移2ch为环境段指针
mov es,ax
mov si,00h
again:
cmp byte ptr es:[si],01h ;查找标志0100
jz next1
inc si
jmp again
next1:
inc si
cmp byte ptr es:[si],00h
jz ok
jmp again
ok: ;找到记下偏移地址
inc si
mov nameaddr,si
findend:
cmp byte ptr es:[si],00h
jz next2
inc si
jmp findend
next2:
sub si,[nameaddr]
mov [lenth],si
move: ;构造输出串格式
push es
push ds
pop es
pop ds
mov si,es:[nameaddr]
lea di,path
mov cx,es:[lenth]
cld
rep movsb
push es
push ds
pop es
pop ds
makename:
mov si,lenth
mov byte ptr [path+si],'$'
dispaly:
lea dx,path ;输出
mov ah,09h
int 21h
del:
;读键
mov ah,08h
int 21h
mov dx,[nameaddr]
push ds
push es
pop ds
mov ah,43h ;修改文件属性
mov al,01h
mov cx,00h
int 21h
mov ah,41h ;删除
int 21h
pop ds
lea dx,m1
cmp ax,00h
jnz exit
lea dx,m2
exit:
mov ah,09h
int 21h
mov ax,4c00h
int 21h
main endp
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -