zoukankan      html  css  js  c++  java
  • 汇编学习--第十九天

    17.4 应用int 13h中断例程对磁盘进行读写

    3.5英寸软盘:2面,80磁道/面,18扇区/磁道,512字节/扇区,大小:1440KB≈1.44MB

    面号,磁道号从0开始,扇区号从1开始。

    将当前屏幕的内容保存在磁盘上

    assume cs:code
    code segment
    start:
        mov ax,0b800h
        mov es,ax
        mov bx,0
        
        mov al,8;写入的扇区数
        mov ch,0;磁道号
        mov cl,1;扇区号
        mov dl,0;驱动器号
        mov dh,0;磁头号(面)
        
        mov ah,3;2是读,3是写
        int 13
        
        mov ax,4c00h
        int 21h
    code ends
    end start

    试验17 编写包含多个功能子程序的中断例程

    测试程序

    assume cs:code
    code segment
    start:
        mov ah,0
        mov dx,36
        mov bx,0b800h
        mov es,bx
        mov bx,160*12+40*2
        
        int 7ch
        
        mov ax,4c00h
        int 21h
    code ends
    end start

    中断例程

    assume cs:code
    code segment
    start:
        mov ax,0
        mov es,ax
        mov di,200h
        mov ax,cs
        mov ds,ax
        mov si,offset func
        mov cx,offset funcend-offset func
        cld
        rep movsb
        
        mov bx,0
        mov es,bx
        mov word ptr es:[7ch*4],200h
        mov word ptr es:[7ch*4+2],0
        
        mov ax,4c00h
        int 21h
        
        org 200h
    func:
        jmp short main
        table dw func0,func1
    main:
        ;cmp ah,0
        ;je func0
        ;cmp ah,1
        ;je func1
        mov al,ah
        mov ah,0
        mov si,ax
        add si,si
        call word ptr table[si]
    
        mov ax,4c00h
        int 21h
        
    func0:
        push bx
        
        ;扇区号
        mov ax,dx
        mov bl,18
        div bl
        inc ah
        mov cl,ah
        
        ;磁道号
        mov ah,0
        mov bl,80
        div bl
        mov ch,ah
        
        ;面号
        mov dh,al
        
        ;驱动器号
        mov dl,0
        
        ;读取
        mov ah,2
        
        ;读取的扇区数
        mov al,1
        
        pop bx
        int 13
        
        ret
        
    func1:
        push bx
        
        ;扇区号
        mov ax,dx
        mov bl,18
        div bl
        inc ah
        mov cl,ah
        
        ;磁道号
        mov ah,0
        mov bl,80
        div bl
        mov ch,ah
        
        ;面号
        mov dh,al
    
        ;驱动器号
        mov dl,0
    
        ;写入
        mov ah,3
        
        ;写入的扇区数
        mov al,1
        
        pop bx
        int 13h
        
        ret
    
    funcend:nop
    code ends
    end start
  • 相关阅读:
    聚集索引和非聚集索引的区别有哪些
    材料管理框架:一个共通的viewModel搞定所有的分页查询
    常用到的Linux命令
    Mybatis的使用中的一些不太注意的技巧
    Maven使用yuicompressor-maven-plugin打包压缩css、js文件
    Redis实现Mybatis的二级缓存
    zookeeper分布式协调服务的使用一
    Redis Cluster集群
    Spring+Struts2+Hibernate的整合
    SpringMVC,采用的是SpringJDBC
  • 原文地址:https://www.cnblogs.com/Mayfly-nymph/p/11261612.html
Copyright © 2011-2022 走看看