[2011-06-14 17:48] 17.4
assume cs:code
data segment
db '1',2,'2',2,'3',2,'4',2,'5',2,'6',2,'7',2,'8',2,'9',2
data ends
;要写入到软盘的数据
code segment
start: mov bx,data ;es:bx指向呗写入软盘的数据段
mov es,bx
mov bx,0
mov al,1
mov cl,0
mov dx,0
mov ah,1
call rwp
mov bx,0b800h
mov es,bx
mov bx,13*160+30*2
mov al,1
mov cl,0
mov dx,0
mov ah,0
call rwp
mov ax,4c00h
int 21h
;-------------------------------------------子列程rwp----------------------------------------------
;功能读或写,ah传递参数1写0读,dx传递逻辑扇区号,al传递读写的扇区数,cl传递驱动器号,es:bx指向读或写的内存区
rwp: cmp ah,1 ;判断ah中策参数是否大于1
ja rets ;大于则返回
jmp short rwps ;否则转移到表号rwps
table db 16 dup (0)
rwps: push ax
push cx
push dx
mov table[0],ah ;读写功能号送入内存
mov table[1],cl ;驱动器号入内存
mov table[2],al ;读写扇区数入内存
mov cx,1440 ;求出面号
mov ax,dx
mov dx,0
div cx
mov table[3],al
mov cx,18 ;求出磁道号
mov ax,dx
mov dx,0
div cx
mov table[4],al
add dx,1 ;求出扇区号
mov cl,dl ;设置扇区号
mov dh,table[3] ;设置面号
mov ch,table[4] ;设置磁道号
mov al,table[2] ;读取的扇区数
mov dl,table[1] ;设置驱动器号
cmp table[0],0 ;判断读或写
jne write
mov ah,2 ;读
int 13h
jmp short rets
write: mov ah,3 ;写
int 13h
rets: pop dx
pop cx
pop ax
ret
;--------------------------子列程rwp结束----------------------------
code ends
end start
;-----------------------------程序结束---------------------------------
data segment
db '1',2,'2',2,'3',2,'4',2,'5',2,'6',2,'7',2,'8',2,'9',2
data ends
;要写入到软盘的数据
code segment
start: mov bx,data ;es:bx指向呗写入软盘的数据段
mov es,bx
mov bx,0
mov al,1
mov cl,0
mov dx,0
mov ah,1
call rwp
mov bx,0b800h
mov es,bx
mov bx,13*160+30*2
mov al,1
mov cl,0
mov dx,0
mov ah,0
call rwp
mov ax,4c00h
int 21h
;-------------------------------------------子列程rwp----------------------------------------------
;功能读或写,ah传递参数1写0读,dx传递逻辑扇区号,al传递读写的扇区数,cl传递驱动器号,es:bx指向读或写的内存区
rwp: cmp ah,1 ;判断ah中策参数是否大于1
ja rets ;大于则返回
jmp short rwps ;否则转移到表号rwps
table db 16 dup (0)
rwps: push ax
push cx
push dx
mov table[0],ah ;读写功能号送入内存
mov table[1],cl ;驱动器号入内存
mov table[2],al ;读写扇区数入内存
mov cx,1440 ;求出面号
mov ax,dx
mov dx,0
div cx
mov table[3],al
mov cx,18 ;求出磁道号
mov ax,dx
mov dx,0
div cx
mov table[4],al
add dx,1 ;求出扇区号
mov cl,dl ;设置扇区号
mov dh,table[3] ;设置面号
mov ch,table[4] ;设置磁道号
mov al,table[2] ;读取的扇区数
mov dl,table[1] ;设置驱动器号
cmp table[0],0 ;判断读或写
jne write
mov ah,2 ;读
int 13h
jmp short rets
write: mov ah,3 ;写
int 13h
rets: pop dx
pop cx
pop ax
ret
;--------------------------子列程rwp结束----------------------------
code ends
end start
;-----------------------------程序结束---------------------------------
评论次数(0) |
浏览次数(551) |
类型(汇编作业) |
收藏此文 |