Turbo-C 正在执行从远地址 0xF000FFFE 读取的指令。段是地址的高 16 位,偏移量是地址的低 16 位。在大内存模型中,远指针 0xF000FFFE 指向段 0xF000,偏移量 = 0xFFFE。实模式段:偏移(逻辑)地址通过计算转换为物理地址(segment<<4)+offset
,在这种情况下是物理地址 (0xF000<<4)+0xFFFE = 0xFFFFE,它是内存的 1MiB 标记以下的倒数第二个字节在系统 ID 字节所在的 ROM BIOS 中。
您将需要创建等效的 FASM 代码以将段寄存器之一设置为 0xF000,然后检索偏移量 0xFFFE 处的值。以下代码只是通过Int 21h/AH=4Ch返回的错误级别(代码)将系统 ID 返回给 DOS 。返回值在AL中:
format mz ; Create a DOS EXE program
mov ax, 0xf000
mov es, ax ; ES = 0xf000
mov al, [es:0xfffe] ; Read byte at 0xF000:0xFFFE
mov ah, 4Ch ; DOS Exit and Return with error code function
int 21h ; Exit and return System ID in AL