学习x86汇编语言7 使用INT13读取软盘数据

一、本章使用工具

二、软盘存储介绍

三、BIOS int13功能

四、引导程序源代码

一、本章使用工具

nasm

FloppyWriter

bochs

二、软盘存储介绍

1.44M的软盘有2面

每面80个柱面

一个柱面18个扇区

每个扇区有512字节

总容量: 280 × 18 × 512 = 1474560 ( 字 节 ) 280 \times 18 \times 512=1474560(字节)280×18×512=1474560(字节)

三、BIOS int13功能

BIOS的int13 中断是扩展的磁盘读取功能。

入口参数:

ah= int 13H 的功能号(2表示读扇区、3表示写扇区)

al= 读取/写入的扇区数

ch= 磁道号

cl= 扇区号

dh= 磁头号(对于软盘即面号,对软盘一个面用一个磁头来读写)

dl= 驱动器号 软驱从0开始,0:软驱A 、 1:软驱B

硬盘从80H开始,80H:硬盘C 、 81H: 硬盘D

es:bx 指向接收从扇区读入数据的内存区/指向将写入磁盘的数据

返回参数:

操作成功,(ah)= 0 ,(al)= 读取/写入的扇区数

操作失败,(ah)= 出错代码

一段写磁盘示例

读屏幕到软盘上,1屏4000Byte,使用8个扇区,使用磁盘的0面0道1~8扇区存储。

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

int 13h

mov ax,4c00h

int 21H

code ends

end start

一段读磁盘示例

读0面0道1扇区到 0000:0200H

assume cs:code

code segment

start: mov ax,0

mov es,ax

mov bx,200H

mov al,1

mov ch,0

mov cl,1

mov dl,0

mov dh,0

mov ah,2

int 13h

mov ax,4c00h

int 21H

code ends

end start

四、引导程序源代码

带读磁盘的功能,把磁盘数据加载到内存的 0x0820处。

从第2个扇区开始读,因为第一个扇区给启动程序用了。

;%define _BOOT_DEBUG_ ; 做Boot Sector时把这行注释掉

; 启用这行就用nasm Boot.asm -o Boot.com生成.com文件用于调试

%ifdef _BOOT_DEBUG_

org 0100h

%else

org 07c00h

%endif

CYLS EQU 10

init:

MOV AX,0

MOV SS,AX

MOV SP,0x7c00 ; 堆栈空间,从0x7c00向前

MOV DS,AX

MOV AX,0x0820 ; 把磁盘数据加载到内存0x0820处。 0x8000~0x81ff的512字节给启动区用的,所以从0x0820开始

MOV ES,AX ; 初始化磁盘接口

MOV CH,0 ; 柱面 0

MOV DH,0 ; 磁头 0

MOV CL,2 ; 扇区 2

readloop:

MOV SI,0 ; 记录失败次数

retry:

MOV AH,0x02 ; 0x02 读磁盘

MOV AL,1 ; 读1个扇区

MOV BX,0

MOV DL,0x00 ; A驱动器

INT 0x13 ; BIOS 读磁盘功能

JNC next ; 成功跳转

ADD SI,1 ; 失败加一次

CMP SI,5 ; 到5次就跳到error

JAE error

MOV AH,0x00 ; 复位磁盘功能

MOV DL,0x00

INT 0x13 ; 重置磁盘驱动器

JMP retry ; 重试

next:

MOV AX,ES ; 内存地址向后移动0x0020

ADD AX,0x0020

MOV ES,AX ; 通过AX给ES加0x0020

ADD CL,1 ; 扇区+1

CMP CL,18 ; 有没有到18个扇区

JBE readloop ; CL<=18,就跳到 readloop

MOV CL,1

ADD DH,1

CMP DH,2

JB readloop ; 如果 DH < 2 ,则跳到readloop

MOV DH,0

ADD CH,1

CMP CH,CYLS

JB readloop ; 如果CH

linux 汇编 读取软盘,学习x86汇编语言7 使用INT13读取软盘数据相关推荐

  1. MASM学习x86汇编语言3 BIOS简介

    MASM学习x86汇编语言3 BIOS简介 一.说明 1. 本章准备工具 2. BIOS相关概念 (1) BMC和IPMI (2) EFI (3) UEFI 统一可扩展固件接口 3. 主流的一些BIO ...

  2. Linux汇编代码中加打印,汇编语言中调用C函数打印“hello world”

    linux中的汇编语言开发一般采用的是AT&T语法,而一些老版本的as对于intel的语法支持还不是很好,保险起见还是用AT&T语法才是王道啊 呵呵 # filename:hello. ...

  3. 简明x86汇编语言教程

    我不想夸大或者贬低汇编语言.但我想说,汇编语言改变了20世纪的历史.与前辈相比,我们这一代编程人员足够的幸福,因为我们有各式各样的编程语言,我们可以操作键盘.坐在显示器面前,甚至使用鼠标.语音识别.我 ...

  4. 简明x86汇编语言教程_转载

    第○章 写在前面 我不想夸大或者贬低汇编语言.但我想说,汇编语言改变了20世纪的历史.与前辈相比,我们这一代编程人员足够的幸福,因为我们有各式各样的编程语言,我们可以操作键盘.坐在显示器面前,甚至使用 ...

  5. linux平台学x86汇编语言学习集合帖

    linux平台学x86汇编语言学习集合帖 linux平台学x86汇编(一):https://blog.csdn.net/shallnet/article/details/45543237 linux平 ...

  6. AM335X的汇编语言与c语言,X86汇编语言学习手记 -- 汇编和C协同

    X86汇编语言学习手记(3) 2004年12月 在X86汇编语言学习手记(1)(2)中,可以看到栈(Stack)作为进程执行过程中数据的临时存储区域,通常包含如下几类数据: 局部变量 函数调用的返回地 ...

  7. 操作系统实验报告2:Linux 下 x86 汇编语言1

    操作系统实验报告2 实验内容 了解 Linux 下 x86 汇编语言编程环境: 验证实验 Blum's Book: Sample programs in Chapter 04, 05 (Moving ...

  8. X86汇编语言学习手记(1)

    X86汇编语言学习手记(1) 作者: Badcoffee Email: blog.oliver@gmail.com 2004年10月 原文出处: http://blog.csdn.net/yayong ...

  9. c汇编语言程序框架培训,[010][x86汇编语言]学习用户程序的编写(c08.asm)

    源程序来源 加载程序 c08_mbr.asm 用户源程序:增加注释 ; ;文件名:c08-2.asm ;文件说明:用户程序 ;创建日期:13:08 2018/5/23 ;--------------- ...

最新文章

  1. CentOs 7.2下ELK日志分析系统搭建
  2. @Autowired 注释的作用和用法
  3. QT 5 安装 vs2017 后,出现找不到 rc.exe 问题
  4. 一个漫长的程序人生路程,如何突破5000元大关?几年前的2-3线城市的参考,现在未必...
  5. pythonwindows程序开发课程_Windows深入编程全集视频课程(七日成蝶)
  6. ajax jsonp img
  7. 模拟ios_王者荣耀策划Donny:安卓IOS今年或实现互通!模拟战一周一更新
  8. zabbix服务器搭建
  9. java构造函数中启动线程_通过构造器启动线程的实现方式及其缺点记录。
  10. 《5分钟商学院》--读书笔记
  11. 惠普硬盘测试工具_不掉速的黑科技,HP固态硬盘测试与拆解
  12. 24L01配置函数详解
  13. 【4G5G基础学习】物理层-物理随机接入信道PRACH与随机接入过程
  14. SNIPER: Efficient Multi-Scale Training解读
  15. 开源杀毒软件CLAMWIN
  16. 洛谷P3386:网络流之二分图匹配,最大流算法
  17. CentOS 初次登录mysql
  18. 海外博士/博士后职位网站汇总
  19. [HDOJ 3638] Go , SuSu [模拟]
  20. IT专家的十大热门领域

热门文章

  1. 腾讯安全与青藤云安全联合发布“天眼云镜”主机安全产品
  2. wms仓库管理软件的七大产品特点
  3. 【2】Kubernetes集群安装
  4. 男人至少的道德底线(男女都该看)
  5. 清华大学赵明国:AI芯片 +机器人,突破算法瓶颈
  6. 杂谈---名言警句记录
  7. 计算机表演赛601卢昊洋,小学教导处工作总结(精选3篇).pdf
  8. Android bugreport 充电日志解读
  9. 情人节福利,恋爱话术微信小程序它来了(开源,看了就懂~,2万字真香警告)
  10. 背书吧 2021.1.10日记