8086的1M地址空间ffff:000f之后回绕问题

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

昨天在使用Debug工具的时候,想看看BIOS第一条指令的跳转之后是如何的。

在16位80x86的机器上,机器上电,第一条指令的地址在FFFF:0000处。我想尽管我在Win7的cmd命令中的虚拟8086环境下,但在这环境里应该和实际的实模式是差不多的,比如BIOS的所在的位置什么的。

于是使用debug

放心的输入-u ffff:0000

随便一看,恩,第一条指令的确是一个长跳转。再仔细一看,不对头啊,怎么还有FFFF:0011及之后的东东呢?按道理讲应该最后顶多是ffff:000f啊。

然后用d命令一看


前面5个字节的长跳转指令,跟着一些BIOS的信息,比如出厂时间等等,然后还真的有FFFF:000F之后的东西啊。

后来想想,难道地址回绕了?溢出之后当从0000:0000开始算起了?

那看一下0000:0000吧

发现不对啊,似乎对应不起来,然后就搞不懂了。在网上搜索一番,发现了这个帖子。

转载上来(转载的内容是考虑的FFFF:FFFF的回绕,其实应该从FFFF:000F之后就开始了)

以下部分属于转载:


debug                       &n

03(分段,内存,地址加法器,寻址,机器码拆分,8086手册) 分段,机器码,也就是指令拆分。 阅读详情

相关推荐

《X86汇编语言从实模式到保护模式》第05章:编写主引导扇区代码

从第5章开始写起,第一部分主要是介绍写基础知识,看书即可,从第5章开始涉及代码编写。 这些文章的主要结构如下: 总结书中涉及的知识点。 调试和验证书中的代码部分。 1:知识点 1.1 主引导扇区 在电脑已启动就会去读0面0道1扇区,这个扇区就是主引导扇区(main boot sector)。 程序从0X7C00开始,一个扇区是512字节(0X200),所以主引导扇区是从0X7C00--...

RedMorning的专栏 814

镁光M4 SSD固件000F

镁光固态硬盘升级固件000F,稳定,适合在新版本固件不稳定时刷回

从8088到DSP:为什么说搞懂F28335的存储空间,得先重温《微机原理》?

本文探讨了TMS320F28335 DSP存储空间设计与8088处理器的历史渊源,揭示了现代DSP存储管理如何继承《微机原理》的核心思想。通过对比分析存储器映射、寄存器配置等关键概念,帮助开发者理解F28335的SARAM分配策略和外设帧保护模式,提升嵌入式系统开发效率。

weixin_33728708的博客 222

开启保护模式前为什么要打开A20地址线?--8086中的地址“绕回”

A20 地址线是第 21 根地址线,因为地址线从 A0 开始计数。8086/8088 CPU 最早只能使用20 根地址线(A0~A19)2201MB(兆字节)的内存空间2^{20} = 1MB\text{(兆字节)} \text{的内存空间}2201MB(兆字节)的内存空间Bit位含义(在8042键盘控制器中)0xDF 设置值是否安全bit 0系统复位(System Reset)1✔️ 通常为1,代表正常工作bit 1A20 地址线开关1

m0_54691290的博客 1663

内存开始1M地址空间,用户空间和内核空间

<br />存储器(仅指内存)分为rom和ram,在物理上是独立的器件,cpu操作他们时,都做为内存来处理,把他们总的看作一个若干存储单元构成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间<br />8086内存地址空间分布如下:<br />0x00000-0x9ffff 为主存(ram)<br />0xa0000-0xbffff为显存地址空间<br />0xc0000-0xfffff为各类rom地址空间<br />bios(各个部件的,包括主板,显卡,网卡等)使用rom存储,所以存储在第三段地址

jiaocj223的专栏 3143

地址回绕及A20地址线

地址回绕             早期的8086只有20根地址线,只能访问1M的地址空间。CPU寻址则按段+偏移的方式进行。16位段+16位偏移的可能的范围是0~0x10FFEF(即0xFFFF0+0xFFFF),即1M+65520字节的范围。由于只有20根地址线,所以在对1M~1M+65520范围进行访问时,会发生“地址回绕”的现象,就是说实际会访问到0~65520的地方。据说某个著名的/臭

菠菜的专栏 2247

BIOS入口地址:FFFF:0000是指什么意思?在物理上是指内存条的什么位置?

问题:“当我们按下电源开关时,电源开始供电,芯片组撤去RESET信号,CPU马上就从地址FFFF0H处开始执行指令,这个地址在系统BIOS的地址范围内,无论是Award BIOS还是AMI BIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。” 我想知道这个地址(FFFF0H)是内存的地址 还是主板BIOS地址? 我自己是这样想的: 1、系统硬件(系统bios、显卡

rongwenbin的专栏 9662

一步步编写操作系统 26 打开A20地址线

打开A20地址线 还记得实模式下的wrap-around吗?也就是地址回绕。咱们一起来复习一下。实模式下内存访问是采取“段基址:段内偏移地址”的形式,段基址要乘以16后再加上段内偏移地址。实模式下寄存器都是16位的,如果段基址和段内偏移地址都为16位的最大值,即0xFFFF:0xFFFF,最大地址是0xFFFF0+0xFFFF,即0x10FFEF。由于实模式下的地址线是20位,最大寻址空间是1M...

sinolover的专栏 4055

8086汇编】王爽汇编语言(第三版)实验1详解 —— 查看CPU和内存,用机器指令和汇编指令编程

实验任务1 任务 使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。 ① mov ax,4E20H ② add ax,1416H ③ mov bx,2000H ④ add ax,bx ⑤ mov bx,ax ⑥ add ax,bx ⑦ mov ax,001AH ⑧ mov bx,0026H ⑨ add al,bl ⑩ add ah,bl ⑪ add...

Mculover666的博客(嵌入式) 2245

1.汇编基础(8086基础、通用寄存器、物理地址寻址、CS和IP)

一、8086CPU基础和通用寄存器 8086是一种16位的CPU,有20根地址线、16根数据线,最大寻址为1M,单次处理16位数据。 8086的通用寄存器:AX、BX、CX、DX 每个寄存器都是16位的,都可以当作两个8位寄存器使用。 注意: 两个十六位寄存器相加时,超出范围后只留存最后十六位的数据,超出部分有地方保存(目前还不知道在哪),八位寄存器相加相同,如下: MOV AX,FFFFH MOV BX,0008H ADD AX,BX # AX此后值为0007H 二、8086CPU给出物理地址

qq_22655017的博客 2225

(第三章 4)A20地址线

     A20地址线困惑我了很久,这篇文章终于揭开了这个谜团。详细阐述之前,我先来总结一把—— 8086/8088和80286地址转换方式一样,寻址范围不一样 。     8086/8088和80286中“逻辑地址--&gt;线性地址”的转换方式是一样的:segment:offset--&gt;segment&lt;&lt;4+offset,而且segment和offset均只有16bit. ...

chuanwang66的专栏 821

【xv6学习之lab1】Booting a PC

进入lab1使用git下载lab文件。然后略过Introduction,从Part 1开始看。 Part 1 按照介绍一步一步来,make qemu后会出现 QEMU window。(记得先安装qemu)。 若此处使用make qemu-nox,则不会跳出QEMU 窗口,只在你的终端里显示。

mick_seu的博客 5725

微型计算机原理DL,微机原理试题

微机原理复习大纲复习范围: 1.作业 2.书上例题3.课堂上反复强调的内容 4.复习题微机原理复习题一、单项选择题1.PC机是( C )A、单片机 B、单板机 C、微型计算机 D、微型计算机系统 2.CPU中运算器的主要功能是( D )A、算术运算 B、逻辑运算C、函数运算 D、算术运算和逻辑运算 3.8086CPU中的段寄存器用来存放( C )A、存储段的物理地址 B、存储器的逻辑地址 C、存储...

weixin_40004960的博客 1023

王爽《汇编语言》第二章 寄存器(CPU工作原理)210908

目录关于CPU通用寄存器字与字节几条汇编指令16位结构CPU8086给出物理地址的方法段的概念段寄存器CS与IP修改CS、IP的指令代码段小结 关于CPU 在CPU 中:运算器进行信息处理;寄存器进行信息存储;控制器控制各种器件进行工作;内部总线连接各种器件,在它们之间进行数据的传送 不同的 CPU,寄存器的个数、结构是不相同的。8086CPU 有14个寄存器,每个寄存器有一个名称。这些寄存器是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW 通用寄存器 8086

Bitfart的博客 336

汇编学习笔记【2】

汇编,寄存器介绍

Mr_竇的专栏 757

cpu执行第一条指令时情形

cpu执行的第一条指令不在内存中,众所周知,内存是由ram组成的 ,而ram不断电,可以保存信息,一旦断电,ram中的信息将会丢失,所以cpu要执行的第一条指令被固化在rom中以前8086年代,由于内存是1M的,所以rom被编址在1M的最后的64K中,所以它的段地址是0xFFFF0,这样就不至于不ram分成两个部分,就是将cs设置成0XF000,cpu执行的BIOS第一条指令的地址

932

自己动手写cpu 光盘_自己动手写操作系统(要了解的知识点)

自己动手写操作系统(开篇)自己动手写操作系统(字符显示)说明:Intel 8086 或者不同的处理器,开机寄存器数据可能不一样,但是大致原理差不多了解过计算机启动的同学肯定知道,当计算机启动的时候 BIOS 会加载 MBR 数据 512 字节到 0x7c00 处。为什么会加载到这个地方了?这里给出参考链接:英文参考链接:https://www.glamenv-septzen.net/en/view...

weixin_39933082的博客 429

新手也能懂:用面包板和8088/8086 CPU最小系统搭建你的第一台复古电脑

本文详细介绍了如何用面包板和8088/8086 CPU搭建复古电脑最小系统,适合新手入门。从硬件清单、核心原理到实际搭建步骤,包括地址锁存电路、时钟配置和固件开发,帮助读者深入理解微处理器的工作原理。通过不到100元的成本,实现一个能运行简单程序的复古系统,体验硬件开发的乐趣。

weixin_30367169的博客 356
上一篇: ecos内核概览--bakayi译
下一篇: 一篇关于PC上多操作系统安装的文章(用简单的比喻说明复杂的问题)
半字节
博客等级 码龄19年 29粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值