bootloader相关内容

BIOS int 10h 在 QEMU 上打印垃圾

我在编写在 QEMU 中作为引导加载程序运行的 x86 实模式汇编程序时遇到问题.我正在尝试通过 BIOS 中断 0x10 打印文本.我的代码是: 打印:普萨.环形:mov AL, [SI]cmp AL, 0je .end调用printChar股份有限公司循环.结尾:波帕退打印字符:普萨移动啊,0x0E移动 BH, 0移动 BL, 0x0F整数 0x10波帕退 我使用 [ORG 0x7c00] ..
发布时间:2021-12-18 09:34:24 其他开发

引导加载程序的第二阶段使用 Int 0x10/ah=0x0e 打印垃圾

我正在尝试学习汇编和编写引导加载程序.以下代码将软盘驱动器的内容加载到内存并跳转到它(从地址 0x1000 开始加载).这段代码应该在屏幕上打印“X",但由于某种原因它打印了一个空格.有人可以告诉我有什么问题吗? [位 16]jmp重置reset: ;重置软盘驱动器xor ax,ax ;0 = 重置软盘mov dl,0 ;驱动器0是软盘整数 0x13jc reset ;如果设置了进位标志,再试一 ..
发布时间:2021-12-18 09:34:07 其他开发

如何修复“os.asm:113: error: TIMES value -138 is negative"汇编语言

我正在用汇编语言开发操作系统.在某个时间,我从 NASM 收到此错误: os.asm:113: 错误:TIMES 值 -138 为负 我想把这个项目进行到底.只有这样的错误让我绝望! 代码如下: BITS 16开始:移动斧头,07C0h;在此引导加载程序之后设置 4K 堆栈空间添加斧头,288;(4096 + 512)/每段 16 字节mov ss, 斧头mov sp, 409 ..
发布时间:2021-12-18 09:32:28 其他开发

Near call/jump 表并不总是在引导加载程序中工作

一般问题 我一直在开发一个简单的引导加载程序,并在某些环境中偶然发现了一个问题,在这些环境中,这些指令不起作用: mov si, call_tbl ;SI=调用表指针呼叫 [call_tbl] ;使用近间接绝对调用调用 print_char;通过内存操作数呼叫 [ds:call_tbl] ;使用近间接绝对调用调用 print_char;通过带段覆盖的内存操作数在 [si] 附近打电话;使用 ..
发布时间:2021-12-18 09:22:15 其他开发

如何将 bin 文件(512 字节)写入软盘的第一个扇区(扇区 0)?

如何将 .bin 文件写入软盘/虚拟软盘/软盘映像的第一个扇区? 我正在尝试启动一个简单的 512 字节引导加载程序.到处都显示“512 字节"的大小,所以我应该已经很好了. 附加信息: 引导加载程序只显示一个字符串,我正在学习简单汇编.一些工作在 Windows 中完成,一些在 Ubuntu 14.04(可信赖的塔尔)(如果这很重要). 即使有引导加载程序标志,它也无法启 ..
发布时间:2021-12-18 09:21:10 其他开发

使用 GAS AT&T 指令为引导扇区计算填充长度?

所以我想在引导扇区中添加填充.假设,目前只有一个无限循环:jmp ..该扇区的长度需要为 512 字节.此外,还需要在末尾添加魔术数字 0xaa55. jmp ..跳过 508, 0.word 0xaa55 但是如果我想打印一些东西但不想计算所有字节以将其填充到正确的大小怎么办? 在 Intel/NASM 语法中,它是: ;打印一些东西乘以 510-($-$$) db 0dw 0xaa55 ..
发布时间:2021-12-18 09:16:21 其他开发

用于在第二阶段引导实模式代码的传统 BIOS 引导加载程序

我正在编写自己的操作系统.到目前为止,我的代码超过了 512 字节,这对于一个简单的引导扇区来说太大了. 我知道我现在必须编写一个引导加载程序来读取任意代码,这些代码可能大于或不大于单个 512 字节扇区. 引导加载程序需要: 用作具有磁盘签名 0xaa55 的引导记录. 从内存地址 0x7E00 开始,从任意长度的 LBA 1(LBA 0 是引导扇区)开始读取第二阶段(测试代 ..
发布时间:2021-12-18 08:53:37 其他开发

如何为我的引导加载程序制作内核?

我正在尝试制作自己的自定义操作系统,但我的代码需要一些帮助.这是我的bootloader.asm: [ORG 0x7c00]开始:命令行异或斧头,斧头mov ds, 斧头mov ss, 斧头移动,斧头mov [BOOT_DRIVE], dl移动 bp, 0x8000mov sp, bp移动 bx, 0x9000mov dh, 5mov dl, [BOOT_DRIVE]调用 load_kernel ..
发布时间:2021-12-18 08:53:08 其他开发

为什么我的根目录没有被加载?(FAT12)

我正在汇编中编写第 1 阶段引导加载程序,我试图将 FAT12 文件系统加载到内存中,以便我可以加载第 2 阶段引导加载程序.我已经设法将 FAT 加载到内存中,但是我正在努力将根目录加载到内存中. 我目前正在使用 this 作为参考,并制作了以下内容: .load_root:;es 是 0x7c0异或 dx, dx ;除法的空白 dxmov si, fat_loaded ;通知用户 FA ..
发布时间:2021-12-18 08:49:07 其他开发

如何在没有操作系统的情况下运行程序?

如何在不运行操作系统的情况下自行运行程序?您能否创建计算机可以在启动时加载和运行的汇编程序,例如从闪存驱动器启动计算机并运行 CPU 上的程序? 解决方案 如何在不运行操作系统的情况下自行运行程序? 您将二进制代码放在处理器重新启动后查找的位置(例如 ARM 上的地址 0). 您能否创建计算机可以在启动时加载和运行的汇编程序(例如,从闪存驱动器启动计算机并运行驱动器上的程序 ..
发布时间:2021-11-30 11:16:24 其他开发

引导加载程序不会跳转到内核代码

我正在编写小型操作系统 - 用于练习.我从引导加载程序开始. 我想创建在 16 位实模式下运行的小型命令系统(目前). 我创建了重置驱动器的引导加载程序,然后在引导加载程序之后加载扇区. 问题是因为在 jmp 函数之后没有实际发生. 我没有尝试在 0x7E00 处加载下一个扇区(我不完全确定如何使用 es:bx 指向地址,所以这可能是一个问题,我相信它的地址:偏移量),就在引导加载程序 ..
发布时间:2021-11-30 11:06:07 其他开发

是否有 64 位 UEFI ELF 引导程序?

我有 ELF 内核.所以我需要一个引导加载程序来加载我的 64 位 ELF 文件.我不需要过时的 Legacy BIOS 引导加载程序,我需要带/不带 GUI 的 UEFI 引导加载程序. 解决方案 我有 ELF 内核.所以我需要一个引导加载程序来加载我的 64 位 ELF 文件. 你有一个 ELF 内核;所以你可能需要一个引导加载程序: 加载内核的 ELF 文件 告 ..
发布时间:2021-11-25 07:37:52 C#

Java Webstart 报告错误的引导加载程序选项

我在通过 Java Webstart 运行 Java RCP 应用程序时遇到问题. 这适用于团队中的其他人,但不适用于我.(你不就是喜欢这类问题吗) 我认为问题在于它下载的是 32 位版本的应用程序,而不是 64 位版本. 当我查看机器上的 webstart .log 文件时,我可以看到以下内容. !SESSION 2012-07-06 16:24:37.672 ------- ..
发布时间:2021-11-18 22:27:48 Java开发

U-boot CONFIG_SYS_TEXT_BASE与SDRAM的关系

目前我对u-boot的理解如下 ROM 代码加载 SPL SPL 初始化 RAM,并将 u-boot 加载到 CONFIG_SYS_TEXT_BASE RAM 地址 u-boot 自行重新定位 启动内核 我检查了我的 u-boot 配置,CONFIG_SYS_TEXT_BASE 是 0x80000000,但我很好奇,我的 RAM 大小只有 1G,它仍然可以正常工作. 1G 等于 ..
发布时间:2021-11-17 22:37:33 其他开发

为什么这个汇编程序以无限循环结束?

这个程序是我教科书中的一个例子,这个程序的目的是计算 N+N-1+...+2+1 ,并将结果存储在 R1 中.为什么它以死循环块结束,它可以做什么? ; asm4-1.sN EQU 10Stack_Size EQU 0x00000400AREA MyStack,NOINIT,READWRITE,ALIGN=3Stack_Mem 空间 Stack_Size__initial_sp区域重置,数据,只 ..
发布时间:2021-11-17 22:37:31 其他开发

Cortex M4 的引导加载程序 - 跳转到加载的应用程序

我在 Atmel SAM4E-EK 板上使用 Atmel SAM4E-16e.我已经为此配置编写了一个引导加载程序.引导加载程序通过 UART 接收 .bin 文件并将其写入闪存.这没有问题,我做了一个十六进制转储,这正是我所期望的: 0x400000 处的引导程序(AT SAM4E 的闪存起始地址) 我的应用程序在 0x420000 0x800000 是闪存结束地址 这是 C 代 ..
发布时间:2021-11-17 22:37:19 其他开发

Cortex M4 的引导加载程序 - 跳转到加载的应用程序

我在 Atmel SAM4E-EK 板上使用 Atmel SAM4E-16e.我已经为此配置编写了一个引导加载程序.引导加载程序通过 UART 接收 .bin 文件并将其写入闪存.这没有问题,我做了一个十六进制转储,这正是我所期望的: 0x400000 处的引导程序(AT SAM4E 的闪存起始地址) 我的应用程序在 0x420000 0x800000 是闪存结束地址 这是 C 代 ..
发布时间:2021-11-17 22:36:25 其他开发

使用 USB 引导加载程序时如何设置 ARM 用户应用程序起始地址?

刚刚拿起其中一个 ARM Cortex-M3 LPC1768 mini来自 eBay 的板.它基本上是一个分线板. 但是,根据随附的小文档,我确定它具有类似于 NXP LPC1700 辅助 USB 引导加载程序 (AN10866) 应用说明. 两个文档(应用笔记和板子文档)都表明用户程序将被构建为起始地址为 0x2000.因为 USB 引导加载程序已经在 0x0 并且占用了 8K. ..
发布时间:2021-11-17 22:32:21 其他开发

使用 USB 引导加载程序时如何设置 ARM 用户应用程序起始地址?

刚刚拿起其中一个 ARM Cortex-M3 LPC1768 mini来自 eBay 的板.它基本上是一个分线板. 但是,根据随附的小文档,我确定它具有类似于 NXP LPC1700 辅助 USB 引导加载程序 (AN10866) 应用说明. 两个文档(应用笔记和板子文档)都表明用户程序将被构建为起始地址为 0x2000.因为 USB 引导加载程序已经在 0x0 并且占用了 8K. ..
发布时间:2021-11-17 22:31:25 其他开发