1. 背景
本文介绍了“调用元神操作系统API向U盘扇区写数据”的程序实现及测试结果。
2. 方法
(1)调用元神操作系统API读U盘扇区
本部分内容已在前面的文章中进行介绍,详细内容请参考“编写程序调用元神操作系统的API”。
(2)调用元神操作系统API写U盘扇区
本例通过调用系统API来向U盘扇区写数据,代码如下所示:
sector_buff: times 512 db 1
demo_write_usb:
pusha
mov edi, API_PARAM
mov dword [fs:edi], API_WRITE_USB_SECTOR
mov dword [fs:edi+4], 2 ;2 parameters
mov dword [fs:edi+8], 3 ;parameter_1: sector no.
xor eax, eax
mov ax, ds
add eax, SEG_BASE
mov bh,byte [fs:eax+7]
mov bl,byte [fs:eax+4]
shl ebx,16
mov bx,word [fs:eax+2]
add ebx, sector_buff
mov dword [fs:edi+12], ebx ;parameter_2: start address of buffer
call pword [fs:OS_API]
popa
ret
代码中先定义了变量sector_buff,用于存储要写入U盘扇区的数据,本例为512个1。然后在代码中如前述文章所描述的那般进行参数设置,将API类型设置为API_WRITE_USB_SECTOR,该API需要2个参数,第一个参数是要写数据的扇区的LBA号(本例要写3号扇区),第二个参数为保存要写入数据的缓冲区起始地址(本例为sector_buff)。设置好参数后通过“call pword [fs:OS_API]”进行API调用、完成写扇区操作。
本例和前述系统API调用的主要差别在于新的API类型和缓冲区地址转换,新增