int 0x13中断的参数传递

int 0x13中断向量所指向的中断服务程序实质上就是磁盘服务程序。

用途:将指定扇区的代码加载到内存的指定位置。

因此,在使用int 0x13中断时要将参数传递给服务程序:

例如:将指定扇区和加载的内存位置传递给服务程序

传递参数的方式:通过几个通用寄存器实现

示例代码:

int 0x13中断的参数传递

时间: 2024-08-06 07:58:19

int 0x13中断的参数传递的相关文章

《Linux内核设计的艺术》学习笔记(二)INT 0x13中断

  ◆ 磁盘复位: AH = 0 DL = 驱动器号 (00,01为软盘:80h,81h,...为硬盘) 返回参数:失败 ⇒ AH = 错误码 ◆ 读磁盘状态: AH = 1 返回参数:AH = 状态字节 ◆ 读磁盘扇区: AH = 2 CX中的0~5位代表扇区号,CX中的6~15位代表磁道号 DH/DL = 磁头号/驱动器号 ES:BX = 数据缓冲区地址 返回参数:读成功 ⇒ AH = 0, AL = 读取的扇区数   读失败 ⇒ AH = 错误码 ◆ 写磁盘扇区: AH = 3 CX中的0

《Linux内核设计的艺术》学习笔记(五)INT 0x10中断

参考书籍:<IBM-PC汇编语言程序设计>   ◆ 设置显示方式: AH = 0 AL = 00 40 × 25 黑白文本,16级灰度 AL = 01 40 × 25 16色文本 AL = 02 80 × 25 黑白文本,16级灰度 AL = 03 80 × 25 16色文本 AL = 04 320 × 200 4色图形 AL = 05 320 × 200 黑白图形,4色灰度 AL = 06 640 × 200 黑白图形 AL = 07 80 × 25 黑白文本 AL = 08 160 × 2

操作系统学习笔记与总结(二)

第二天总结 学习内容:寄存器(eflags,IDTR,GDTR,CR0),bootsect应用的相关知识及其流程,gdt 实验:实践boot相关功能,移动位置,加载扇区,建立gdt以及idt,进入实模式,跳转到gas编译的head第一条语句 总结:1,理论bootsect到setup a,被加载的bootsect移动到0x9000,借助int 0x13中断将setup加载到自身后面 b,加载system到0x1000处,避免覆盖bios中断.之后跳到setup执行 2.加载head代码 1 mo

《30天自制操作系统》读书笔记(4) 绘图

暑假果然是滋生懒散的温床. (╯‵□′)╯︵┻━┻ 好久不动都忘记之前做到哪里了, 上次好像做到了C语言的引入, 这一节所做的东西都相当轻松, 将会绘制出操作系统的基本界面. 绘图的原理 按照书中所说, 将值写入到显存中就能在屏幕上显示相应的像素, 在asmhead.nas 中有这一段: 1 CYLS EQU 0x0ff0 ; 设定启动区 2 LEDS EQU 0x0ff1 3 VMODE EQU 0x0ff2 ; 关于颜色数目的信息,颜色的位数 4 SCRNX EQU 0x0ff4 ; 分辨率

linux内核设计的艺术--载入内核代码

在BIOS触发0x19中断将磁盘的第一个扇区(512B)载入到内存中后.计算机才真正開始运行磁盘上的程序.而这512B的程序就是bootsect.s,此时处理器还处于实模式内存寻址的最大范围是1M(0x0000-0xFFFF),接下来我们看看在bootsect.s的第一批代码中做了些什么? </pre><pre name="code" class="cpp">SYSSIZE = 0x3000 //内核程序的大小 SETUPLEN = 4 //

从开机加电到执行main函数之前的过程

1.启动BIOS,准备实模式下中断向量表和中断服务程序 在按下电源按钮的瞬间,CPU硬件逻辑强制将CS:IP设置为0xFFFF:0x0000,指向内存地址的0xFFFF0位置,此位置属于BIOS的地址范围.关于硬件如何指向BIOS区,这是一个纯硬件动作,在RAM实地址空间中,属于BIOS地址空间部分为空,硬件只要见到CPU发出的地址属于BIOS地址范围,直接从硬件层次将访问重定向到BIOS的ROM区中.这也就是为什么RAM中存在空洞的原因. BIOS程序在内存最开始的位置(0x00000)用1K

bootsect及setup

BIOS和bootsect CPU加电即进入16位实模式 硬件逻辑设计为加电瞬间强行设置:CS=0xF000,IP=0xFFF0,CS:IP=0xFFFF0 而BIOS程序的入口地址即0xFFFF0,是计算机上电后CPU执行的第一条指令的地址 BIOS程序在内存中加载中断向量表和中断服务程序 调用INT 0x19中断,将软盘第一扇区(0面0磁道1扇区)的512字节即bootsect.s加载到内存0x07C00处 bootsect.s将自身复制到0x90000~0x90200,ds:si -> e

linux内核之系统启动(二)

在上一节提到由BIOS构建实模式下的内存中断向量表和中断服务程序,那么接下来就是利用这些中断加载操作系统内核,这一步又有三个步骤:1.引导程序bootsect加载:2.setup程序加载:3.system内核加载. 在中断向量表和中断服务程序构建完成以后,BIOS会产生int 0x19中断,该中断的中断服务程序负责从系统盘的第一个扇区(512B)将bootsect程序拷贝到内存的0X07C00(BOOTSEG)位置.在这里int 0X19中断服务程序与操作系统无关,操作系统厂商与硬件厂商有一个约

linux内核设计的艺术--加载内核代码

在BIOS触发0x19中断将磁盘的第一个扇区(512B)加载到内存中后,计算机才真正开始执行磁盘上的程序.而这512B的程序bootsect.s中的第一批代码,此时处理器还处于实模式内存寻址的最大范围是1M(0x0000-0xFFFF),接下来我们看看在bootsect.s的第一批代码中做了些什么? SYSSIZE = 0x3000 //内核程序的大小 SETUPLEN = 4 //要加载的setup程序长度单位为扇区数 BOOTSEG = 0x07c0 //启动扇区被BIOS加载的位置,也就是