在引导程序上的程序集中打印寄存器值

问题描述

我正在尝试使用此代码打印存储在ebx中的硬件的vendorID和deviceid,然后将其引导:

_start:
    xor eax,eax
    mov eax,0x80000000
    xor ecx,ecx
.main
    mov dx,0x0cf8
    out dx,eax
    mov dx,0x0cfc
    mov ebp,eax
    in  eax,dx
    cmp eax,0xFFFFFFFF ;eax will fill with 0xFFFFFFFF if no device founded on bus
    je  .count
    xor ebx,ebx
    mov [ebx],eax    ;copy the vendor and Device ID
    add ebx,0x0004
    mov [ebx],ebx    ;their locations
    mov eax,ebx
    add eax,0x00000800 ; next device
    inc ecx
    cmp ecx,0x20
    je break
    loop main

.count
    inc ecx
    jmp main

.break
    mov rax,1
    int 0x80


times 510-($-$$) db 0
dw 0xaa55

您看到的值存储在ebx中,但是我在覆盖和移动光标(INT 100x0e)时遇到问题

第一季度:如何打印这些值?

第二季度:如何查找硬件的实际内存地址?(例如,我的网卡地址为0x7F800000。(可在Windows 10系统信息中找到))

代码资源:https://www.youtube.com/watch?v=NgzT1JfBUr0&t=142s

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)