问题标签 [bios]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - 如何在 16 位 x86 实模式下通过 BIOS 访问 USB 端口?
我是组装世界的新手,
我正在尝试编写一些汇编代码来与串行、并行、VGA、键盘等硬件设备进行通信。
我在 x86 英特尔处理器的实模式下执行此操作,方法是从我个人编写的 boostrap 引导我的代码以加载我的汇编代码。
好吧,根据我从阅读教程中收集到的知识,对我来说最简单的方法是使用 BIOS INT 服务例程 (ISR),另一方面,最长的方法是访问硬件的不同寄存器,例如:串口的状态寄存器和控制寄存器......
Q1:我说得对吗?
我可以使用 BIOS INT 与 VGA 和串行硬件通信,但我找不到 USB 控制器的任何 BIOS 中断..?!
Q2: 你能帮我解决这个问题,以便能够与 USB 端口和其他剩余端口进行通信,让它通用吗?
问题 3:
vmware - 访问 VMware 的 Bios
在 VMware Fusion 中的 Mac 上,当 vm 启动并显示加载栏时,您如何访问引导顺序,就好像它是独立的 Windows 机器一样?
我试过“f8”“删除”但没有运气。
assembly - 使用程序集访问硬盘
我在哪里可以找到如何直接从汇编中寻址硬盘驱动器(假设我在实模式或环 0 下运行)。例如,假设我想将扇区 100-200 的数据加载到 ram 中的某个位置。我将如何处理特定的硬盘驱动器以及如何告诉驱动器我想要哪些扇区?
assembly - asm 更改 cmd 背景颜色
我写了更改文本颜色的部分,但找不到更改背景颜色的方法,此代码用于 tasm 组装:
这是我的代码,但它不起作用:
assembly - 使用引导加载程序执行的 BIOS 中断
我想使用目录和子文件夹,我想通过引导加载程序来完成,但大多数现有中断在 dos 模式下可用 如何找到 BIOS 中断?
x86-16 - BIOS int 13H,AH=02(读取软盘)和堆栈段
如果我不初始化堆栈段,会发生什么?
在某些情况下会导致阅读错误吗?
linux - Linux 中是否存在可以唯一标识 VM 实例的 UUID 类型的值?
我有一个在 Linux 中运行的应用程序。每个人都将尝试从操作系统获取 UUID 并向集中式服务器报告。我想确保所有实例都使用全局唯一的 UUID 运行。
如果 linux 在裸机上,它可以只读取 UUID(例如,从 dmidecode 命令)。但如果它在 VM 上,则 UUID(来自 dmidecode)可能是相等的,因为可以复制或移动 VM。
有任何想法吗?
顺便说一句,对于在物理硬件(而不是 VM)上运行的 Linux,如果用户更改内存、NIC 等,UUID 会改变吗?
提前致谢。
bios - 加载 pendrive 扇区
我们如何使用 bios 中断加载 pendrive 的扇区?从 pendirve 引导需要具有低级别的磁盘访问权限....我听说了,我们可以使用 int 13h加载扇区...但是如何使用相同的中断来加载 pendirve 的扇区?加载扇区需要什么参数......???我们如何加载一个扇区,比如一个 pendrive 的2560 ... 如何计算用于 int 13h 的磁盘参数?如何获得磁头,磁道编号为笔式驱动器??????
keyboard - 为什么键盘输入所需的键盘驱动程序可以从中断或访问键盘缓冲区中获取?
作为扫描码的键盘输入可以通过调用中断 09 IRQ1或类似的或直接访问 BIOS 键盘缓冲区的段0040h 获得
为什么需要单独的键盘驱动程序?或者键盘驱动程序本身是否为操作系统执行上述操作之一?
我的意思是当我们可以 BIOS 键盘缓冲区或一些中断例程时进行键盘输入 为什么需要编写“键盘驱动程序”,因为在某些操作系统(如 minix)中,该操作系统的驱动程序列表中有一条单独的键盘河?
assembly - 实模式 x86 ASM:基础是如何完成的?
我目前正在阅读boot.s
第一个 Linux 内核的源文件(假设 0.01 确实是第一个公开版本)。
我知道 C 和 ASM,后者比前者少得多。即便如此,我似乎能够理解并基本上掌握源文件中的代码。
这个文件让我很困惑。我现在意识到这是因为它处于实模式,而不是保护模式。不用说,我以前从未见过以实模式编写的 ASM 代码。保护模式是 x86 操作系统在我出生之前运行的事实上的模式,所以这是意料之中的。
这是我想更好地理解的例程:
查找outb
,我发现它用于将字节传递到计算机上的端口。我将根据 C 文档大胆猜测,这种情况将“停止电机”字节作为第一个参数传递,并将软盘驱动器端口号作为第二个参数传递。
这个接口是BIOS提供的吗?还是直接通过软驱?我假设 BIOS 具有节俭的“驱动程序”,用于所有基本设备的非常基本的操作。
这就是我被难住的地方:似乎像这样的数字#0x3f2
是凭空捏造的。它们显然是硬件端口号或其他东西。这个文件到处都是这样的数字,没有解释他们指的是什么。我在哪里可以找到一个全面的参考资料,其中显示了他们可以从实模式接收的所有硬件端口和控制号?此外,该文件似乎在整个引导过程中使用硬编码的内存地址在内存中移动内核。我在哪里可以找到关于在实模式下可以写入哪些内存地址范围的指南?
我还阅读了 Linus 关于重新编程中断以避免 BIOS 和内部硬件中断之间的冲突的评论。我不会撒谎,那是在我头上。
帮助会很大;如果您想知道的话,谷歌似乎对这个话题很少。