查看: 92|回复: 1

[原创] 【汇编教程系列】8086CPU

[复制链接]

0

技术

12

魅力

1

原创

网站编辑

心如止水,笑对人生!

Rank: 8Rank: 8

积分
11864
人气
145
分享
528

最佳新人活跃会员

发表于 2026-1-28 23:12:44 | 显示全部楼层 |阅读模式

前言

        很久没来发过教程了。。。

        说实话我最近两年感觉论坛一篇正儿八经的技术文章都没有,毕竟那白嫖个存储桶都可以建议扔技术区了。。。于是我这个老登编辑回来发些文章吧。。。也是不想看到自己计算机起步的地方就这么凉下去了。。。

        YFSafe、hjz713你们也都来多发点呀!

       OK,先自我介绍一下。我,faryou,一个还没有脱离低级趣味(指汇编这种“低级语言”)的物竞生,来发一些非常基础的8086汇编教程。这个系列是我在看了王爽老师的《汇编语言》之后,根据自己的理解,用我觉得更适合有C语言基础但从没有接触过汇编的人的方式来讲解汇编语言。教程中有些地方需要专业术语的直接用了原书原文,不再一一说明~

        本文是系列第一篇文章,介绍8086CPU的工作原理。下面开始~


CS、IP寄存器介绍



        要理解CS、IP(段地址、偏移地址),可以通过我下面这个形象的比方:

        假设A和B只有两张能容纳三个数字的纸条,而他们需要进行四位数的交流。正常情况下,三个数字的纸条无法容纳四位数,但此时因为有两张纸条,所以A可以预先和B商量好暗号,从而达到通信目的。比如说,A要告诉B8086这个四位数,那么A可以先在一张纸条上写上086,另一张纸条上写800。由于B与A有约定,所以B可以通过800(段地址)*10+086(偏移地址)得到8086(物理地址)这一数据。

        CS、IP就是这样两张纸条。在8086CPU中,这一约定可表示为物理地址=段地址*16+偏移地址。



8086CPU工作原理

        前面我们了解了CS、IP,下面我带领大家来学习一下8086CPU的工作原理——

      (以下过程的前提:CS中的内容为2000H,IP中的内容为0000H)

        首先,在CS、IP发生改变后,CPU将CS、IP送入地址加法器,地址加法器利用物理地址=段地址*16+偏移地址求出物理地址。完成计算后,得到的结果数(此处为20000H)送入输入输出控制电路。

        输入输出控制电路将得到的数值送入地址总线。

        内存在得到这个物理地址后,将从内存20000H单元开始存放的机器指令(此处假设为B8 23 01,转化为汇编指令即mov ax,0123H)通过数据总线送回输入输出控制电路。

        输入输出控制电路将命令送入指令缓冲器。此时指令缓冲器会对IP的值进行改变(IP中的数=IP中的原数+指令字节数,例如此处命令B8 23 01长3个字节,因此IP加上3改为0003H)。

        IP完成变更后,执行控制器开始执行命令(此处命令B2 23 01将寄存器ax中的值改为0123H)。

        完成以上操作后,CPU开始根据现有的CS、IP开始执行下一条指令。

        由此可见,CS、IP指示CPU工作的地址,因此,我们需要熟练运用这一点。

        最后补一个小知识:在8086CPU刚开始工作时,CS:IP=FFFFH:0000H,FFFF0H是CPU开机后执行的第一条指令。



结语

        本文一步步讲解了8086CPU的基本工作过程,真正的将这一原理投入应用,才是学习它的最终目的。我是faryou,再见!

评分

参与人数 3经验 +30 魅力 +5 人气 +7 分享 +3 收起 理由
xiaomeng + 5 + 1 很给力!
henry217 + 30 + 3 + 3
holley + 3 赞一个!

查看全部评分

faryou的个人主页博客
一名在学业与生活夹缝中生存的小站长

0

技术

0

魅力

0

原创

略有小成

Rank: 4

积分
1704
人气
0
分享
0
发表于 2026-2-3 09:21:44 | 显示全部楼层
路过支持一下,谢谢楼主的分享!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表