汇编网首页登录博客注册
gecko的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  好男儿当志在天下,好男儿亦不负红颜!
  • 『姓名』:GECKO_LIN           
  • 『性别』:保密  『发送消息
  • 个人说明:好男儿当志在天下,好男儿亦不负红颜!
  • 详细信息『加为好友』
学习动态

[2007-12-23 18:02] 实验十七_请前辈检查

assume cs:code

code segment
int7ch:
jmp begin
Fun db 32 dup(0)  ;设置一段空间保存临时数据
Begin:
push ax
push dx
push cx          ;保存现场

mov Fun[0],ah    ;先将功能号保存
mov Fun[1],al    ;先将要读取的扇区数保存

;取面号即磁头号
mov ax,bx      ;低为存放逻辑扇区号
mov dx,0       ;高位置零
mov cx,1440    ;cx做除数
div cx         ;取ax=int((逻辑扇区号)/(1440)) 及dx=rem((逻辑扇区号)/(1440))
mov Fun[2],al  ;临时存放面号

;取磁道号,扇区号
mov ax,dx
mov dx,0
mov cx,18
div cx         ;取得ax=int((rem(逻辑扇区号)/1440)/18),dx=rem((rem(逻辑扇区号)/1440)/18)
mov Fun[3],al  ;临时存放磁头号
add dl,1       
mov Fun[4],dl  ;存放扇区号

;设置功能号
Cmp Fun[0],0
jne write
mov ah,2
jmp int13H
write:
Cmp Fun[0],1
jne return
mov ah,3      

;根据参数执行int13H中断
Int13H:
mov al,Fun[1]    ;设置读取的扇区数
mov dh,Fun[2]    ;设置面号
mov ch,Fun[3]    ;设置磁道号
mov cl,Fun[4]    ;设置扇区号
mov dl,0         ;设置驱动器号
mov bx,si        ;设置读/写位置 es:bx
int 13H          ;执行中断

return:
pop cx
pop dx
pop ax           ;取回现场
Iret
int7cHend:

Setup:
mov ax,0020H
mov es,ax
mov di,0

mov ax,cs
mov ds,ax
mov si,offset int7ch

mov cx,offset int7cHend - offset int7cH
cld
rep movsb

mov ax,0
mov es,ax
mov word ptr es:[7cH*4],0
mov word ptr es:[7cH*4+2],20H

mov ax,0B800H
mov es,ax
mov si,0          ;设置读/写位置,用si暂时保存本该由bx保存的值
mov ah,0
mov al,1
mov bx,0
int 7cH

nop
mov ax,4c00H
int 21H

code ends
end setup
评论次数(1)  |  浏览次数(627)  |  类型(汇编作业) |  收藏此文  | 

[  wdm   发表于  2007-12-24 14:05  ]

博主马上就要完成学习计划了!再接再厉哟!!

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码