bios相关内容

多处理器上的Stopwatch.GetTimeStamp

Stopwatch.GetTimeStamp()可能返回由于BIOS或硬件抽象层中的错误,不同处理器上的计时结果不同。 有人知道这些错误在存储什么吗?具体来说? 不同处理器上的时间戳是否可能完全不相关-或仅相差很小(亚毫秒)最多)? 不同处理器上的数字是否会随时间推移而漂移-那么实际上会导致上述“完全不相关的时间戳”吗? (我认为不同处理器上的不同频率可能会这样做) 解决方案 ..
发布时间:2020-10-02 21:02:14 C#/.NET

引导x86机器时的默认寄存器和段值

我发现通常程序员会在启动加载程序的第一行中对寄存器(有时是段)进行修正,并且他们通常建议养成这种习惯.例如: inc cx dec bx inc bp dec di xor ax, ax 我知道的是: BIOS在引导过程中会清除所有寄存器! 在引导加载程序中初始化寄存器和段是个好习惯吗?为什么?默认的寄存器,段和指针值是什么(可能取决于芯片组)? 解决方案 由于您提到了段寄 ..
发布时间:2020-09-22 19:27:04 其他开发

引导顺序为0000:7c00的内存的意义是什么?

为什么bios在0000:7c00的分区引导记录中读取?该地址有何特别之处?参考地址中的':'是做什么的? 解决方案 “:"是分段内存天数的保留,当PC以实模式运行并且一次只能执行64K时. “:"左侧的数字表示是您的细分,右边的数字是您的地址. 如果您想自己在内存中四处浏览,则Windows debug命令会接受此表示法: C:\Users\Seth> debug -d000 ..
发布时间:2020-09-22 19:26:01 其他开发

找出在x86引导程序中引导了哪个驱动器

我正在为x86编写游戏引导程序. 有一次,在启动的早期,我需要将某些部分从启动驱动器加载到内存中.我使用中断0x13(ah = 02)来执行此操作,当我在虚拟机中尝试时,它就像一个超级按钮.但是,当我将映像刻录到USB驱动器时,机器无法启动,并且将其固定到扇区加载指令中,显然我的USB驱动器不是驱动器0(软盘A),因此读取失败. 如何确定用于引导的驱动器? 谢谢! 解决方案 B ..
发布时间:2020-09-22 19:25:56 其他开发

BIOS将哪些信息加载到RAM中?

我知道BIOS在启动时会在内存0x7c00上加载预定义设备驱动器的第一个扇区(512字节),然后跳转到该地址. 因此,占用了从0x7c00到0x7dff的内存. RAM是否还有其他部分被占用? 如果我正在对操作系统进行编程,是否可以将除0x7c00之外的所有RAM都用于ox7dff以实现自己的目的?或者,在引导时是否还有其他部分充满了“宝贵的"信息,我不能覆盖这些信息? 我知道在 ..
发布时间:2020-09-22 19:04:11 其他开发

普通的x86或AMD PC是直接从ROM运行启动/BIOS代码还是将它们首先复制到RAM?

我了解现代计算机已经修改了哈佛体系结构. 他们可以从保存数据的地方以外的其他地方读取指令的事实是否可以使他们直接从ROM芯片中获取指令?他们是先将BIOS加载到RAM,还是直接从芯片上执行BIOS?我没有可以在附近打开的计算机,所以...如果我从内存插槽中删除了所有RAM,计算机将能够启动完整的BIOS,运行POST程序并告诉我我需要RAM吗?有趣的是我从未尝试过... 编辑:我对这个 ..
发布时间:2020-09-22 19:04:10 其他开发

0xffff0和BIOS

首次启动PC时,它将从物理地址0xffff0开始执行.该地址包含对BIOS的jmp指令. 现在,对于我的问题,我始终假设物理地址已映射到RAM.如果RAM最初包含垃圾值,那么究竟将jmp指令放入0xffff0是什么呢?对于不同的BIOS,jmp指令是否总是相同或不同?那么0xffff0是否会从RAM映射到BIOS(意味着它是“硬映射")? 解决方案 前64kB左右映射到BIOS RO ..
发布时间:2020-09-22 19:03:04 其他开发

在BIOS中发出哔声

计算机启动时,它会从BIOS扬声器中发出蜂鸣声 . 如何在Assembly或C ++中做到这一点? 显然,我想通过BIOS Speaker发出蜂鸣声. 记住我的意思是BIOS扬声器 它为此有中断吗?我搜索了一下,但没有找到.. 我使用了一些中断,但是没有这样做.以下代码: int main(){ cout ..
发布时间:2020-09-13 01:52:27 C/C++开发

如何设定计时器

有什么方法可以使用xor ah,ah 将计时器设置为60秒 Enter_Again: xor ah, ah ; I should put 60 seconds here int 16h ; The user should press S before 60 seconds mov bl,al cmp al,"S" 解决方案 您先前的 ..
发布时间:2020-09-13 01:22:03 其他开发

早期的BIOS如何使用CALL?

我纯粹出于业余爱好,试图理解PC中的一些底层代码.我为随机的旧千兆字节MB下载了过时的BIOS ROM映像( https://www.gigabyte.com/Motherboard/GA-8I845GE775-G-rev-10/support#support-dl-bios ),它已经15岁了,所以我希望不会损害任何人的知识产权.我将使用此文件作为参考. 我一开始就迷迷糊糊了.这些似乎是处 ..
发布时间:2020-09-13 01:19:18 其他开发

INT13H(非扩展型)是否能够访问每个气缸具有16个以上磁头的驱动器?

我知道您需要INT 13H扩展功能才能访问8GB以上的驱动器.该问题涉及标准INT 13H,功能02H. 我还知道旧的504MB硬盘驱动器限制是由于以下原因造成的: 1024个柱面x 16个磁头x 63个扇区x 512字节= 528,482,304字节 但是这种硬盘驱动器限制是由Int 13h本身引起的吗? 当头编号有一个完整的空格(dh)字节时,头编号被限制为16是否有任何特殊原因? ..
发布时间:2020-09-13 01:01:51 其他开发

试图了解asm中断,特别是16h func 01H

这是家庭作业,我不希望您解决我的问题,只需要一些了解... 我必须在Dosbox中使用ASM和C.我的第一个问题是我不太了解如何使用bios中断(任何带有代码示例的优秀教程都将不胜感激),好吧,我到了那里,每个中断都有自己的功能和参数... 无论如何,我尝试过...我需要做的是,从理论上讲,很简单,我只需要从键盘上获取一个字符,如果它是1或0键,如果我有5次击键,就算一下键1,我打开扬 ..
发布时间:2020-09-13 00:47:14 其他开发

x86 asm图形设置的分辨率高于640x480?

我刚刚开始使用汇编语言(感觉就像学习新东西一样),并且遇到了一些问题(到目前为止),我一直在浏览的所有教程都没有回答,或者太老了而无法知道. 1)我尝试了几次搜索(也许我只是不知道正确的关键字),但是找不到用于更改屏幕分辨率等的图形模式的更新列表.是:汇编程序教程,我几乎认为640x480是可以使用最佳分辨率的汇编语言. 有人知道我可以使用更新的教程吗? 编辑:中断10h很旧,并且不能 ..
发布时间:2020-09-12 23:39:59 其他开发

为什么BIOS入口点以WBINVD指令开头?

我正在研究计算机中的BIOS代码(x86_64 Linux,IvyBridge).我使用以下过程转储BIOS代码: $ sudo cat /proc/iomem | grep ROM 000f0000-000fffff : System ROM $ sudo dd if=/dev/mem of=bios.dump bs=1M count=1 然后我使用radare2读取并反汇编二进制 ..
发布时间:2020-09-12 23:20:39 其他开发

实模式汇编:在启动时没有INT指令的情况下将Char打印到屏幕上

以下站点“编写引导扇区代码" 提供了示例代码系统启动时在屏幕上显示"A".从我一直在阅读的内容中,您不是必须使用INT操作码来让BIOS做某些事情吗?上面引用的站点中的以下代码如何在不使用中断的情况下工作?哪一部分代码实际上告诉硬件在屏幕上打印"A"? 有问题的代码: .code16 .section .text .globl _start _start: mov $0xb800, ..
发布时间:2020-09-12 23:19:15 其他开发

即使用户按下另一个键,int 16h/ah = 1也会反复给出相同的按键

我正在用汇编语言编写游戏代码,其中恐龙的运动取决于用户按下的键.我以某种方式实现了我的代码,即如果用户按下空格键,则程序应终止,并且恐龙在按下"a"时应向正确的方向移动.但是我面临的一个问题是,在第一次按下任何键之后,程序将不查找被按下的其他任何键,这表明它一次又一次地按下了第一个被按下的键.如何解决? 我正在使用mov ah,01h和int 16h的功能,该功能返回al寄存器中按下的键的a ..
发布时间:2020-09-12 23:06:35 其他开发

移动方块时无法将方块保持完整的方块

我一直试图在装配中画一个盒子并将其水平移动 在屏幕上.打印正方形本身的代码对我有用,但是当我尝试使其移动时,效果并不很好.如果您明白我的观点,我可以看到它在移动,但不是完整的正方形. 我的代码:在Assembly Tasm中 STA SEGMENT STACK DB 0FFFeH DUP(?) STA ENDS DATA SEGMENT ;----------- ;VARIABLES ..
发布时间:2020-09-12 22:53:17 其他开发

如何在x86实模式下正确设置SS,BP和SP?

我想知道如何正确执行此操作,因为我的操作方式无效. 用7C00h设置BP寄存器,然后用BP设置SP寄存器,然后压入一些ASCII码,然后从存储器中获取数据并用INT 10h打印时,它就可以正常工作. mov ax, 7C00h mov bp, ax mov sp, bp push 'A' mov ah, 0Eh mov al, [7BFEh] int 10h 实际输出是 ..
发布时间:2020-09-12 22:45:24 其他开发

使用DOS或BIOS显示字符

通过拉尔夫·布朗的中断列表, 我发现有很多不同的方法可以将文本字符输出到屏幕上. ROM BIOS API提供以下功能: AH = 09h –在光标位置写字符和属性 AH = 0Ah –仅在光标位置写字符 AH = 0Eh –电传输出 AH = 13h –写字符串 DOS API提供以下功能: AH = 02h –将字符写入标准输出 AH = 06h –直接控制台输 ..
发布时间:2020-09-12 22:31:15 其他开发