我想要获取我的硬盘参数.使用此处描述的技术.
这是显示软盘正常参数的代码:
mov dl,00h
mov ah,08h
int 13h
Run Code Online (Sandbox Code Playgroud)这是代码,显示硬盘的无效参数(可能是我的硬盘空间很大(LBA)):
mov dl,80h
mov ah,08h
int 13h
Run Code Online (Sandbox Code Playgroud)我写了这段代码:
mov dl,80h
mov ah,48h
int 13h
Run Code Online (Sandbox Code Playgroud)代码给出cf = 1(错误).我如何解决它?
我是大会世界的新手,
我正在尝试编写一些汇编代码来与串行、并行、VGA、键盘等硬件设备进行通信。
我在 x86 英特尔处理器的实模式下执行此操作,通过从我个人编写的用于加载汇编代码的 boostrap 启动我的代码。
好吧,根据我从阅读教程中收集到的知识,对我来说最简单的方法是使用 BIOS INT 服务程序 (ISR),另一方面,最长的方法是访问硬件的不同寄存器,例如:串口状态寄存器和控制寄存器....
Q1:我说的对吗?
我可以使用 BIOS INT 与 VGA 和串行硬件进行通信,但是我找不到 USB 控制器的任何 BIOS 中断......?!
Q2:你能帮我解决这个问题,让我能够与 USB 端口和其他剩余的端口进行通信,只是让它通用吗?
问题 3:
我刚刚读完这在ISO 9660文件系统读取文件的文章,我对我怎么会去读取文件到内存困惑.我知道根目录位于PVD的偏移量156处,如何使用它来查找驻留在根目录中的文件,一旦找到文件名,我将如何找到该文件所在的地址,这样我就可以将它加载到内存中(使用int 0x13 AH = 42)?
VMWare配置文件包含一行
uuid.bios = "56 4d ed cf 3c cd 63 20-53 78 95 86 26 92 22 c8"
Run Code Online (Sandbox Code Playgroud)
而afaik大多数(每个?)物理BIOS都有这样一个UUID.是否有任何Windows API调用来获取此标识符?
我已经尝试了WMI类Win32_ComputerSystemProduct.UUID属性,但该值与uuid.bios值不同.HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\MachineGuid的值也不同.
据说bios程序只能在实模式下才能看到,也知道bios是存放在ROM中的,但是CPU映射的通常是RAM,是不是说在实模式下,内存的一部分空间被映射到了ROM ,这样我们就可以看到bios程序了。
嘿我试着理解INT 10h,13h(19)写了一个字符串与BIOS中断10与13h啊.我已经找到了下面的信息,关于不同的标志放在不同的寄存器中.我仍然没有得到的一件事是BL应该是什么,如果我只是想用这个函数写一个字符串应该在BL中作为属性?现在它写出了没有意义的奇怪的闪烁符号.谢谢你,事先
Writes a string of characters with specified attributes to any display
page.
On entry: AH 13h
AL Subservice (0-3)
BH Display page number
BL Attribute (Subservices 0 and 1)
CX Length of string
DH Row position where string is to be written
DL Column position where string is to be written
ES:BP Pointer to string to write
Returns: None
Notes: This service is available only for XTs dated 1/19/86
and later, ATs, EGAs, and PC Convertibles.
The service …Run Code Online (Sandbox Code Playgroud) BIOS是用汇编语言编写的,机器只能理解二进制文件.BIOS是系统启动时加载到内存中的第一个程序.什么编译BIOS生成二进制文件?
我在Linux中使用汇编语言编写了一个简单程序(使用nasm),出于教育目的,我想使用BIOS中断代替linux系统调用,这可能吗?
我发现通常程序员在启动加载程序的第一行就对寄存器(有时是段)进行修正,并且他们通常会为此建议。例如:
inc cx
dec bx
inc bp
dec di
xor ax, ax
Run Code Online (Sandbox Code Playgroud)
我不知道我知道的是:BIOS在引导过程中清除了所有寄存器。
在引导加载程序中初始化寄存器和段是个好习惯吗?如果是,默认寄存器,段和指针值是什么(可能取决于芯片组)?
bios ×10
assembly ×6
x86 ×5
interrupt ×4
delphi ×2
bootloader ×1
c ×1
chipset ×1
filesystems ×1
iso9660 ×1
kernel ×1
nasm ×1
system-calls ×1
uuid ×1
winapi ×1