“times 510-($-$$) db 0”不起作用

2023-12-03

我正在学习引导扇区。我从以下位置下载了 nasm-installer-x64.exeNASM网站。我的操作系统是win7-64位。当我运行以下代码时,它无法正常工作

mov ah, 0x0e;

mov al, the_secret;
int 0x10;

mov al, [the_secret];
int 0x10;

mov bx, [the_secret];
add bx, 0x7c00;
mov al, [bx];
int 0x10;

mov al, [0x7c1e];
int 0x10;

jmp $;

the_secret:;
    db 'X';

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

我不相信有什么问题times 510-($-$$) db 0。在我看来,您正在尝试找到访问变量的正确方法the_secret然后将其显示到屏幕上。我将基于此尝试提供一种最有希望的机制:

mov al, [the_secret];
int 0x10;

如果你设置了DS正确地,使用设置原点org 0x7c00并确保BH设置为您要写入的页码(您想要 0),那么以下代码应该可以工作:

[bits 16]          ; 16-Bit code
[org 0x7c00]       ; Set the origin point to 0x7c00

start:
    xor ax,ax      ; We want a segment of 0 for DS for this question
    mov ds,ax      ;     Set AX to appropriate segment value for your situation
    mov es,ax      ; In this case we'll default to ES=DS
    mov bx,0x8000  ; Stack segment can be any usable memory

    mov ss,bx      ; This places it with the top of the stack @ 0x80000.
    mov sp,ax      ; Set SP=0 so the bottom of stack will be @ 0x8FFFF

    cld            ; Set the direction flag to be positive direction

    mov ah, 0x0e
    mov al, [the_secret]  ; al = character from memory DS:[the_secret]
    xor bh, bh            ; bh = 0 = video page number
    int 0x10;

    jmp $

the_secret:;
    db 'X';

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

启动代码集DS为零,因为我们设置了原点 0x7c00。引导加载程序加载于 0x0000:0x7c00(物理地址 0x07c00)。这确保了访问变量the_secret将会得到妥善处理。mov al, [the_secret]相当于说mov al, ds:[the_secret]。如果DS段寄存器设置不正确,原点设置不正确,内存访问将无法从正确的位置读取。

INT 0x10/AH=0x0E需要设置页码。第一个视频显示页为0,BH应进行相应设置。

有关其他设置说明的更多信息,请参阅我的 StackOverflow 答案,其中包含一般引导加载程序提示.

我提供的代码应该显示X如果正确写入磁盘映像,则显示到控制台。


要汇编此代码并生成磁盘映像(在我的示例中为 720k 软盘):

nasm -f bin bootload.asm -o bootload.bin
dd if=/dev/zero of=disk.img bs=1024 count=720
dd if=bootload.bin of=disk.img bs=512 count=1 conv=notrunc

第一个命令进行组装bootload.asm到一个名为的平面二进制文件bootload.bin。第二个命令生成一个零填充的磁盘映像(disk.img)的大小为 1024 * 720(720kb 软盘),最后一个命令复制 512 字节的数据bootload.bin到磁盘映像的第一个扇区。conv=notrunc tells DD写入后不要截断文件。如果你把它去掉disk.img写入引导扇区后,长度为 512 字节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“times 510-($-$$) db 0”不起作用 的相关文章

随机推荐

  • 使用 ImagePicker 时如何去除从 UIImagePickerController 编辑图像返回的图像上的黑底

    使用 UIImagePicker 时 它允许进入编辑模式 然后 对于横向模式拍摄的图像 如果用户不在 UIImagePicker 中手动缩放它 图像的顶部和底部将会有黑色条纹 背景 有没有办法摆脱它并使图像的该部分变得透明 pragma m
  • 如果所有 td 均为空,则隐藏表格行

    有没有一种简单的方法可以在没有每个循环的情况下做到这一点 我想隐藏整个 tr 但前提是所有的 td s 为空 该表是动态生成的 因此空白行可以位于任何位置 table1 tr has td empty remove HTML table t
  • 简单的OpenGL实现[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我致力于将一些休闲游戏移植到 Flash 上 它们基于 OpenGL 使用的OpenGL版本大多是1 x 游戏引擎依赖的是2D 它基于 OpenGL
  • 如何从 UIImage 获取 NSDATE?

    在这种情况下 如何从 UIImage 获取日期或元数据 UIImagePickerControllerSourceType picker sourceType UIImagePickerControllerSourceTypePhotoLi
  • 带有 NDK 的 Android Studio:链接错误:对“stderr”的未定义引用

    我已经编译了针对 android armeabi v7a 的 OpenCV 静态库 现在我尝试通过 Android Studio 中的 CMakeLists txt 文件将我的本机 C 代码与这些库链接起来 但失败并出现以下奇怪的错误 op
  • 你能优化这段代码吗? (姜戈、蟒蛇)

    我添加 添加 字段来检查用户的帖子 服装 添加到哪些类别 听起来很可怕 所以让我们深入研究代码 我想优化 get categories self obj 函数 class CategorySerializer serializers Mod
  • 如何通过 asyncio 使用阻塞函数

    我在一个项目中使用 django ORM 在 django 之外 我的工作流程是 通过 django ORM 选择对象并 然后使用 asyncio lib 将其发送到消息队列 问题是您无法在异步环境中调用阻塞函数 并且无法在阻塞环境中使用
  • 字节分配内存不足

    这是我在 Android 日志上收到的错误 确切地说 是 08 06 12 16 28 763 E dalvikvm heap 27065 Out of memory on a 184 byte allocation 184 要看情况 有时
  • 所有类别的线性时间排序

    我有这个也许很愚蠢的想法 因为我们有针对受限类别的线性时间排序算法 例如使用计数排序 基数排序的整数 就像在计算机单词中一样 所有类别的数字类型最终都以字节序列进行编码 在某种程度上与整数等类似 是否可以说明我们可以使用这些线性时间排序算法
  • 不继承 的字体

    我有输入和标签字段
  • 安装 RVM 后无法加载 Sass / Compass,无法与 Symfony2 中的 Assetic 一起使用

    我尝试使用 Capifony 它需要 Capistrano 而 Capistrano 需要 Ruby 但我的 apt 版本的 ruby 很旧并且抛出语法错误 然后我安装了 RVM 并执行了以下操作 rvm use 1 9 3 rvm rvm
  • IHubContext SignalR MVC 的 Autofac 注入

    我正在尝试让 SignalR 与 Autofac 一起工作 我有一个我在这里所做的精简版本的存储库 https github com justsayno signalr autofac 这是改编自使用的作品GlobalHost https
  • 响应式设计中的字体大小和元视口

    我必须从事一个需要响应的项目 这是我第一次这样做 我被一个 可能是愚蠢的 问题困扰 假设我有一个非常简单的页面 div style font size 6 SO div
  • 如何在安装过程中修改.NET配置文件?

    我使用 app config 文件来存储一些值 映射数据库的路径 数据连接选择 这些设置在用户计算机上有所不同 我希望安装程序能够正确设置它们 是否有一个安装程序可以在安装过程中使用 NET 配置文件并允许我创建一些对话框来帮助我填写这些值
  • WooCommerce 返回 get_total() 价格(保留两位小数)

    您好 我正在实现一个支付网关插件 但遇到了问题 它显示一个错误 他们说这是因为购物车的总量和价格网站为他们发送的总量不同 这是因为他们得到的结果没有十进制数字 在购物车中是519 00他们只收到519 该插件获取购物车总数 order gt
  • 使用 PC 调试 iPad Safari

    我想在 iPad 上的 Safari 上测试我的网站 我只有另一台电脑 有没有办法让我使用移动 Chrome 进行远程调试 如 ADB Android 调试桥 我在 StackOverflow 上搜索 似乎有一个 Adob e Edge I
  • 使用 extern 全局变量的正确方法是什么?

    文件 a cc int a 0 文件 b cc include a cc 文件 main cc include b cc extern int a int main g c a cc g c b cc g main cc a o b o e
  • 在javascript html5中将整个图像包裹在圆柱形杯子上

    我想将图像包裹在圆柱形杯子上 我正在使用 html5 和 Java 脚本来实现这个解决方案 我从这个链接得到了一些想法 https stackoverflow com questions 31424117 但我没有从这个链接得到解决方案 我
  • 开源asp.net mvc项目的项目结构推荐

    您如何看待基于 asp net mvc 应用程序构建的开源 CMS 应用程序的项目结构 该项目的昵称是 Gol 以下帖子概述了基本要求 ASP NET MVC 中开源 CMS 的想法 目前我正在考虑这样放置 Gol Core Session
  • “times 510-($-$$) db 0”不起作用

    我正在学习引导扇区 我从以下位置下载了 nasm installer x64 exeNASM网站 我的操作系统是win7 64位 当我运行以下代码时 它无法正常工作 mov ah 0x0e mov al the secret int 0x1