主题:我开的一个自由软件的操作系统 文件系统操代码
;文件系统自由代码
org 7600h
jmp bg
db '111,0,0,0
db 'FL'
db 0,0,0,0,0,0,0,0
db 0,0,0,0
db 0,0,0,0
db 'FA'
db 6,0 ;跳
db 'ab.com',0
db 1,2,0,0,0,0,0,0 ;起始地址
db 46,0,0,0,0,0,0,0 ;占用
db 255,255,0,0,0,0,0,0 ;大小
db 127,2,0,0,0,0,0,0 ;结束
db 0,6,11,1,8,25,11,12
db 0,6,11,1,8,25,11,12
db 1,0
bg:
mov ax,0
mov ds,ax
mov es,ax
main:
mov ax,3
int 10h
mov cl,1
mov ch,2
mov dh,0
mov dl,80h
mov ah,2
mov al,5
mov bx,8000h
int 13h
mov di,0
mov ax,0b800h
mov es,ax
mov si,8000h
add di,2
cmp al,'F'
je fa_1
jmp gkey
fa_1:
inc si
mov al,[si]
add di,2
cmp al,'L'
je sFL
gkey:
mov ah,0
int 16h
exit:
mov ax,cs
mov ds,ax
mov ax,7200h
jmp ax
sFL:
add si,13
mov ax,[si]
add si,4
add si,ax
mov al,'F'
mov [si],al
inc si
mov al,'A'
mov [si],al
inc si
inc si
inc si
mov di,si
mov si,7f00h
mov cx,0
copy21: ;复制文件名
mov al,[si]
mov [di],al
inc si
inc di
inc cx
cmp al,0
je sFL
jmp copy21
sFL:
sub di,cx
sub di,2
mov ax,cx
sub ax,1
mov [di],ax ;保存文件名大小
add di,cx
add di,2
mov si,8000h
add si,40
mov al,[si]
mov [di],al ;保存使用的开始扇区
mov cl,al
inc di
inc si
mov al,[si]
mov [di],al ;保存使用的开始磁道
mov ch,al
inc di
inc si
mov al,[si]
mov [di],al ;保存使用的开始柱面
mov dh,al
add di,6
mov si,[7e20h]
mov al,1
subsi_1: ;计算所需扇区
cmp si,512
jl subend_
sub si,512
inc al
jmp subsi_1
subend_1:
mov bl,al
mov [di],al ;保存占用的扇区数
add di,8
mov ax,[7e20h]
mov [di],ax ;保存文件大小
mov si,8000h
add si,40
add di,8
mov al,cl
add al,bl
cmp al,64
jge ch0
mov [di],al ;保存最后扇区
mov [si],al
mov al,ch
jmp ch2
ch0:
cmp ch,255
jge err0
mov al,1
mov [di],al ;保存文件结术扇区
mov [si],al
inc ch
ch2:
inc si
inc di
mov al,ch
mov [di],al
mov [si],al
dh0:
inc si
inc di
mov al,dh
mov [di],al
mov [si],al
add di,6
add di,8
add di,8
add di,2
sub di,8000h
sub di,512
sub di,18
mov ax,di
mov di,8000h
add di,512
add di,14
mov [di],ax ;保存文件列表大小
w13:
mov ax,cs
mov es,ax
mov ds,ax
cmp cx,1h
je err
mov ah,3
mov al,bl
mov bx,2000h
mov dl,80h
int 13h
mov ax,cs
mov ds,ax
mov es,ax
mov bx,8000h
mov cl,1
mov ch,2
mov dh,0
mov dl,80
mov ah,3
mov al,3
int 13h
err:
jmp exit
;调用
mov ax,cs
mov ds,ax
mov ax,7600h
jmp ax
地址 http://axbx.512j.com
org 7600h
jmp bg
db '111,0,0,0
db 'FL'
db 0,0,0,0,0,0,0,0
db 0,0,0,0
db 0,0,0,0
db 'FA'
db 6,0 ;跳
db 'ab.com',0
db 1,2,0,0,0,0,0,0 ;起始地址
db 46,0,0,0,0,0,0,0 ;占用
db 255,255,0,0,0,0,0,0 ;大小
db 127,2,0,0,0,0,0,0 ;结束
db 0,6,11,1,8,25,11,12
db 0,6,11,1,8,25,11,12
db 1,0
bg:
mov ax,0
mov ds,ax
mov es,ax
main:
mov ax,3
int 10h
mov cl,1
mov ch,2
mov dh,0
mov dl,80h
mov ah,2
mov al,5
mov bx,8000h
int 13h
mov di,0
mov ax,0b800h
mov es,ax
mov si,8000h
add di,2
cmp al,'F'
je fa_1
jmp gkey
fa_1:
inc si
mov al,[si]
add di,2
cmp al,'L'
je sFL
gkey:
mov ah,0
int 16h
exit:
mov ax,cs
mov ds,ax
mov ax,7200h
jmp ax
sFL:
add si,13
mov ax,[si]
add si,4
add si,ax
mov al,'F'
mov [si],al
inc si
mov al,'A'
mov [si],al
inc si
inc si
inc si
mov di,si
mov si,7f00h
mov cx,0
copy21: ;复制文件名
mov al,[si]
mov [di],al
inc si
inc di
inc cx
cmp al,0
je sFL
jmp copy21
sFL:
sub di,cx
sub di,2
mov ax,cx
sub ax,1
mov [di],ax ;保存文件名大小
add di,cx
add di,2
mov si,8000h
add si,40
mov al,[si]
mov [di],al ;保存使用的开始扇区
mov cl,al
inc di
inc si
mov al,[si]
mov [di],al ;保存使用的开始磁道
mov ch,al
inc di
inc si
mov al,[si]
mov [di],al ;保存使用的开始柱面
mov dh,al
add di,6
mov si,[7e20h]
mov al,1
subsi_1: ;计算所需扇区
cmp si,512
jl subend_
sub si,512
inc al
jmp subsi_1
subend_1:
mov bl,al
mov [di],al ;保存占用的扇区数
add di,8
mov ax,[7e20h]
mov [di],ax ;保存文件大小
mov si,8000h
add si,40
add di,8
mov al,cl
add al,bl
cmp al,64
jge ch0
mov [di],al ;保存最后扇区
mov [si],al
mov al,ch
jmp ch2
ch0:
cmp ch,255
jge err0
mov al,1
mov [di],al ;保存文件结术扇区
mov [si],al
inc ch
ch2:
inc si
inc di
mov al,ch
mov [di],al
mov [si],al
dh0:
inc si
inc di
mov al,dh
mov [di],al
mov [si],al
add di,6
add di,8
add di,8
add di,2
sub di,8000h
sub di,512
sub di,18
mov ax,di
mov di,8000h
add di,512
add di,14
mov [di],ax ;保存文件列表大小
w13:
mov ax,cs
mov es,ax
mov ds,ax
cmp cx,1h
je err
mov ah,3
mov al,bl
mov bx,2000h
mov dl,80h
int 13h
mov ax,cs
mov ds,ax
mov es,ax
mov bx,8000h
mov cl,1
mov ch,2
mov dh,0
mov dl,80
mov ah,3
mov al,3
int 13h
err:
jmp exit
;调用
mov ax,cs
mov ds,ax
mov ax,7600h
jmp ax
地址 http://axbx.512j.com