-
-
[求助]扩展int 13h读取驱动器参数的问题
-
发表于:
2017-7-8 11:08
5232
-
写了一段代码,用nasm编译,然后仅仅用WinHex将U盘的第一扇区覆盖。最后通过BIOS的U盘启动,读取失败。屏幕打印的no DriveParametersPacket。
驱动器号dl=0x80是对应的C盘么?还是主板BIOS不支持扩展int 13h。
请求大神指点、讨论。
主要代码如下,其余都是打印调试的代码。
mov ds,ax
mov di,structDriveParametersPacket ;ds:di structDriveParametersPacket地址
mov ah,0x48
mov dl,0x80
int 0x13
全部代码如下
mov ax,0x900
mov ss,ax
xor sp,sp ;随便设置一下栈
mov ax,0x07c0
mov ds,ax
mov di,structDriveParametersPacket ;ds:di structDriveParametersPacket地址
mov ah,0x48
mov dl,0x80
int 0x13
jnc ok ;cf = 0成功
push 24
push 0x07c0
push msg_wrong
call println_string
add sp,6
jmp $
ok:
push 25
push 0x07c0
push msg_ok
call println_string
add sp,6
jmp $
println_string:
;push 字符串个数
;push 字符串段地址
;push 字符串偏移地址
pusha
push bp
mov ah,0x03 ;读光标位置
xor bh,bh ;页号
int 0x10 ;dh = 行 dl = 列
inc dh ;简单得实现一下换行
mov bp,sp
mov cx,[ss:bp+0x18]
mov ax,[ss:bp+0x16]
mov es,ax
mov ax,[ss:bp+0x14]
mov bp,ax ;es:bp
mov ah,0x13 ;在Teletype模式下显示字符串
mov al,0x01 ;字符串中只含显示字符,其显示属性在bl中。显示后,光标位置改变
mov bl,0x07
;BIT7:背景是否闪烁。0不闪烁,1闪烁
;BIT6~BIT4为背景色,分别为RGB,000为黑色,111为白色
;BIT3为1,则前景色加亮,为0则不加亮
;BIT2-BIT0为前景色,意义同背景色
int 0x10
pop bp
popa
ret
structDriveParametersPacket: resb 26
msg_ok: db 'get DriveParametersPacket'
msg_wrong: db 'no DriveParametersPacket'
times 510-($-$$) db 0
dw 0xAA55
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法