;大家有什么问题的博客给我留言
;实现 软驱b 内容 到软驱a
assume cs:code
data segment
db 2048 dup (0)
data ends
code segment
start: mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
;写新的7ch入口地址
mov ax,cs
mov ds,ax
mov si,offset int7ch
mov di,200H
mov cx,offset int7chend- offset int7ch
cld
rep movsb
;安装新int7ch中断
mov ax,data
mov es,ax
mov cx,2880
mov si,0
tests: push cx
mov ah,0 ; 0=读
mov dx,si ;0=逻辑扇区号
mov bx,0 ;es:bx 指向存取地址
mov al,1 ;读写扇区数
mov cl,1 ;1=disk b 扇区号
int 7ch
;把diskb从逻辑扇区0~2779数据 写入es:bx
mov ah,1 ; 1=写
mov dx,si ;0=逻辑扇区号
mov bx,0 ;es:bx 指向存取地址
mov al,1 ;读写扇区数
mov cl,0 ;0=disk a
int 7ch
;把es:bx数据 写入 diska的0~2779扇区
pop cx
inc si
loop tests
mov ax,4c00h
int 21h
int7ch:push ax
push dx
push cx
push bx
add ah,2
read: mov bh,ah ;功能号
mov bl,al ;读写扇区数
push bx ;pbx0= 功能号,读写扇区数(ax)
mov bl,cl ;软驱号
mov cx,1440
call divs
mov bh,al ;面号
push bx ;pbx1=软驱号,面号(dx)
mov cx,18
call divs
mov bh,al ;磁道号
inc dl
mov bl,dl ;扇区号
push bx ;pbx2=磁道号,扇区号(cx)
pop cx
pop dx
pop ax
pop bx
int 13h
;输入参数调用 int 13h
pop cx
pop dx
pop ax
iret
divs:mov ax,dx
mov dx,0
div cx
ret
int7chend:nop
code ends
end start |