任何装配大师是否都知道第一个USB驱动器的参数(注册 dl )?
我正在完成一些NASM教程,并希望得到一个物理启动(我可以使用qemu获得一个干净的启动)。
这是从磁盘加载“内核”数据的代码部分:
loadkernel:
mov si, LMSG ;; 'Loading kernel',13,10,0
call prints ;; ex puts()
mov dl, 0x00 ;; The disk to load from
mov ah, 0x02 ;; Read operation
mov al, 0x01 ;; Sectors to read
mov ch, 0x00 ;; Track
mov cl, 0x02 ;; Sector
mov dh, 0x00 ;; Head
mov bx, 0x2000 ;; Buffer end
mov es, bx
mov bx, 0x0000 ;; Buffer start
int 0x13
jc loadkernel
mov ax, 0x2000
mov ds, ax
jmp 0x2000:0x00
如果它有任何区别,我正在运行戴尔Inspiron 15 BIOS。
显然,我的正确值是0x80。
BIOS加载硬盘并从0x80 according to this answer开始标记它们。
由于某种原因,我的特定BIOS决定首先加载USB驱动器,因此我可以从那里启动。
答案 0 :(得分:2)
简单的答案是dl
的正确值在dl
。
快乐的答案是dl
值int 13h, ah=8
GET DRIVE PARAMETERS返回要使用的几何体,并允许FAT12软盘映像代码从任何可以从USB启动的BIOS /版本运行闪存盘。
在此处查看我的帖子:USB Booting Secrets