zoukankan      html  css  js  c++  java
  • 编写用逻辑扇区号读写软盘的中断例程

    求安装一个新的int 7ch中断例程,实现通过逻辑扇区号对软盘进行读写操作

    参数说明:

    1、用ah寄存器传递功能号,0表示读,1表示写
    
    2、用bx寄存器传递要读写的扇区的逻辑扇区号
    
    3、用es:si指向存储读出数据或写入数据的缓冲区

    三、分析

          分析可得逻辑扇区号和物理扇区号对应关系如下:

    逻辑扇区号 = (面号*80+磁道号)*18+扇区号-1
    
          那么可以使用下面的算法来计算
    
    int():描述性运算符,取商
    
    rem():描述性运算符,取余数
    逻辑扇区号 = (面号*80+磁道号)*18+扇区号-1
    
    面号 = int(逻辑扇区号/1440)
    
    磁道号 = int(rem(逻辑扇区号/1440)/18)
    
    扇区号 = rem(rem(逻辑扇区号/1440)/18)+1

    四、详细设计

    assume cs:code
    
    
    code segment
    
    ;中断例程:通过逻辑扇区号对软盘读写
    ;参数:ah功能号:0表示读,1表示写;dx要读写的逻辑扇区号;es:si存储读写数据的缓冲区
    ; al写入的扇区数,bl驱动器号
    int7ch:
     call count
     
     cmp ah,0  ;ah为0,转跳到读
     je read
     cmp ah,1  ;ah为1,转跳到写
     je write 
     mov ah,123  ;ah值不合法,返回
     iret
    
    read:
     mov ah,2
     jmp short start
     
    write:
     mov ah,3
     jmp short start
     
    start:
     mov dl,bl
     mov bx,si
     int 13h
     
     iret
     
    
    ;子程序:完成逻辑扇区的分析
    ;参数:dx:逻辑扇区号
    ;返回值:dh:面号,ch:磁道号,cl:扇区号
    count:
     push ax
     push bx
     
     mov ax,dx
     mov dx,0
     mov bx,1440
     div bx
     mov bh,al ;逻辑扇区号/1440的商是面号,暂存于bh中
        ;余数保存在dx中
     
     mov ax,dx
     mov bl,18
     div bl
     mov ch,al ;商是磁道号,保存在ch中
     
     mov dh,bh ;面号传送到dh中
     
     mov cl,ah
     add cl,1 ;余数+1是扇区号,保存在cl中
     
     pop bx
     pop ax
     ret
     
    
    setup:
     ;初始化安装过程
     mov ax,cs
     mov ds,ax
     mov si,offset int7ch
     
     mov ax,0
     mov es,ax
     mov di,200h
     
     ;开始安装
     mov cx,offset setup-offset int7ch
     cld
     rep movsb
     
     ;设置中断向量表
     mov ax,0
     mov es,ax
     mov word ptr es:[7ch*4],0   ;ip
     mov word ptr es:[7ch*4+2],20h  ;cs
     
     ;安装结束,返回操作系统
     mov ax,4c00h
     int 21h
     
    code ends
    end setup
  • 相关阅读:
    Release和Debug的区别[转]
    SVM运用到多分类[引]
    HMM
    [转] 数据挖掘 机器学习 模式识别的关系
    [转]mysql 数据导入
    java 获取当前时间戳
    二叉树遍历建树[zhuan]
    关于c指针[转]
    词法分析
    组合数据类型练习,综合练习
  • 原文地址:https://www.cnblogs.com/qintangtao/p/2869094.html
Copyright © 2011-2022 走看看