Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
近调用/跳转表并不总是在引导加载程序中工作
一般问题 我一直在开发一个简单的引导加载程序 并在某些环境中偶然发现了一个问题 在这些环境中 此类指令不起作用 mov si call tbl SI Call table pointer call call tbl Call print c
Assembly
x86
nasm
BootLoader
realmode
在 REP MOVSW 之前 PUSH CS / POP DS 的目的是什么?
为什么在下面的代码中我们压入代码段 PUSH CS 然后将其弹出到数据段 POP DS 我将这些行明确指定为 line1 和 line2 请告诉我 MOVSW 在这里是如何工作的 IF HIGHMEMORY PUSH DS MOV BX D
Assembly
x8616
realmode
x86 实模式下的段大小
我对实模式下段的大小有一个疑问 因为它们不能超过 64K 但可以小于那个 http support microsoft com kb 120069 我的问题是这些段大小和基地址是如何初始化的 就像保护模式下有 GDT 和 LDT 一样 实模
Assembly
x86
memorysegmentation
realmode
实模式内存寻址中的段和偏移量是什么?
我正在阅读有关内存寻址的内容 我阅读了有关段偏移的内容 然后阅读了有关描述符偏移的内容 我知道如何在实模式下计算确切的地址 这一切都可以 但我无法理解偏移量到底是什么 我到处读到 在实模式下 寄存器只有16位 因此只能寻址 高达 64k 为
Assembly
x86
x8616
realmode
memorysegmentation
是否有 43 行或更多的标准 BIOS Int 10h 视频模式?
我正在编写在加载任何操作系统之前以实模式运行的代码 我的程序的一部分涉及将信息转储到视频显示 而标准 80x25 文本模式无法剪切它 许多版本的 Windows 和其他操作系统在显示内核恐慌时似乎可以毫无困难地切换到更大的文本模式 我认为是
video
x86
BIOS
realmode
从给定的物理和有效地址查找段地址
如何从给定的数据中找到段地址 物理地址 0x119B 有效地址 0x10AB 公式可能是什么 x86 16位实模式下的有效地址只是20位的偏移量部分段 偏移量 address https thestarman pcministry com
Assembly
x8616
realmode
memorysegmentation
386+ 处理器中的复位向量
维基百科页面为重置向量 http en wikipedia org wiki Reset vector说 对于 386 处理器 复位时 CS 寄存器选择器部分的值为 F000h CS 寄存器基址部分的值为 FFFF0000h 复位时 IP
x86
Boot
realmode
写入没有段寄存器的地址
我知道这段代码实际上会将数据写入 ds 100h mov 100h ax 但我怎样才能写入线性地址100H直接不使用任何段寄存器作为段基址 没有办法绕过段寄存器 每个内存访问都与某个段寄存器相关 如果要写入绝对地址 请首先向段寄存器加载适当
Assembly
x86
nasm
x8616
realmode
加载引导加载程序的第二阶段
我正在尝试为 x86 机器创建一个小型操作系统 并开始为相当小的引导加载程序编写代码 我创建的引导加载程序非常简单 它从位于主引导记录后面的扇区加载一个小的第二引导加载程序 并跳转到该代码 主引导记录中的引导加载程序代码似乎运行良好 当它尝
Assembly
x86
nasm
BootLoader
realmode
在实模式下跳转到远地址
我遇到一种情况 我必须在实模式下跳转到远地址 我的段值在fs寄存器和偏移量gs寄存器 在跳转过程中我必须保持准确的寄存器内容 我想出了一个想法如下 mov bp fs shl ebp 16 mov bp gs jmp ebp 假设bp fs
Assembly
x86
x8616
realmode
memorysegmentation
MOV AX,CS 和 MOV DS,AX 的概念
谁能解释一下这三个指令的功能吗 ORG 1000H MOV AX CS MOV DS AX 理论上我知道代码 数据和额外的段是什么 但是 它们在这个程序中是如何实现的 为什么整个段被移到另一个段中 MOV AX CS and MOV DS
Assembly
x8616
realmode
memorysegmentation
无法在 16 位实模式汇编中清除整个屏幕
我正在尝试在简单的 16 位实模式操作系统中清除屏幕 下面是代码 clearScreen pusha mov ah 0x7 mov al 0 int 0x10 popa ret 我读了那个设置al为 0 并调用滚动屏幕中断会清理屏幕 但它似
Assembly
operatingsystem
16bit
realmode