assembly - bootsector编程中无限跳转有什么用

标签 assembly infinite-loop x86-16 bootloader boot

我在读一本关于如何构建操作系统的书,我读了这段代码,代码所做的只是打印你好,但我想了解更多关于无限跳转的信息:

  mov ah,0x0e
  mov al,'H'
  int 0x10
  mov al,'e'
  int 0x10
  mov al,'l'
  int 0x10
  mov al,'l'
  int 0x10
  mov al,'o'
  int 0x10

  jmp $

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

我知道 jmp $ 会跳转到它自己。

我真的很想为什么他们在代码中间使用了无限循环。有什么用???

最佳答案

它完全按照您的想法行事:它会导致您的程序卡住。它通常在您的代码仅将某些内容打印到屏幕并结束时完成,并且不需要除此之外的任何其他输入。由于没有可返回的操作系统,您需要一些方法来“捕获”程序计数器,这是最简单的方法。

关于assembly - bootsector编程中无限跳转有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39666602/

相关文章:

C 将值而不是地址传递给汇编函数 (x64)

c++ - 如何检查用户输入是否有效? (C++)

DOS 在运行时插入段地址

assembly - 如何选择排序 - assembly 8086

unix - 汇编代码。 = 60^。在UNIX V6源代码的low.s文件中

assembly - 为什么LDR指令中的标签需要减1?

assembly - 段寄存器的汇编程序使用

c++ - 使用 Visual Studio 2012 的无限循环 C++

golang 中所有 url 的 Markdown url 的正则表达式

assembly - X86 余数的 IDIV 符号取决于 8/-3 和 -8/3 的被除数符号?