目录

8088内部寄存器

通用寄存器

控制寄存器

段寄存器

内存储器管理

内存地址变换

段寄存器

逻辑段与逻辑地址

堆栈及堆栈段的使用

指令与指令系统

指令的格式

指令中操作数

立即数

寄存器操作数

存储器操作数

指令的寻址方式

寻址方式

立即寻址

寄存器寻址

存储器操作数的寻址方式

小结

8086指令系统

数据传送类指令

通用数据传送指令

地址传送指令

标志传送指令

输入输出指令

算数运算指令


8088内部寄存器

含有14个16为寄存器,按照功能可以分为三类

8个通用寄存器、4个段寄存器、2个控制寄存器

通用寄存器

数据寄存器(AX,BX,CX,DX)

8088/808含四个16位数据寄存器,它们可以分为8个8位寄存器 拆开后彼此相互独立没有高八位,低八位之分。但是当两个寄存器合起来时AH一定是高八位,AL一定是低八位。

AX---->AH,AL

BX----->BH,BL

CX----->CH,CL

DX----->DH,DL

数据寄存器的专用方法

AX:累加器 所有I/O接口都通过AX与接口传送信息,多用于存放中间运算结果

BX:基址寄存器 间接寻址中用于存放基地址

CX:计数寄存器 用于循环或串操作中存放计数值

DX:数据寄存器 间接寻址的I/O指令中存放I/O端口地址 在32位乘除法运算时,存放高16位

地址指针寄存器(SP,BP)

SP堆栈指针寄存器,其内容为栈顶的偏移地址 (只要是堆栈存在,那么SP就作为专用寄存器,作为栈顶指针)

BP基址指针寄存器,常用作在访问内存时存放内存单元的偏移地址

变址寄存器(SI,DI)

SI 源变址寄存器

DI 目标变址寄存器

变址寄存器在指令中常用于存放数据在内存中的地址

控制寄存器

IP 指令指针寄存器,其内容为下一条要取指令的偏移地址

FLAGS 标志寄存器 存放运算结果的特征

6个状态标志位   (CF SF AF PF OF ZF)
CF (Carry Flag):    进位标志位,加减法时最高位有进位(借位)则 CF=1
OF (Overflow Flag): 溢出标志位,当算数超出了有符号数的可表达范围时 OF=1
ZF (Zero Flag):     零标志位,当运算结果为零时 ZF=1
SF (Sign Flag):     符号标志位,当运算结果最高位为1时 SF=1

PF (Parity Flag):            奇偶标志位,运算结果低8位中"1"的个数为偶数时 PF=1
AF (Auxiliary Carry Flag):   辅助进位标志位,加减操作,若bit3向bit4有进位(借位) AF=1
3个控制标志位   (IF TF DF)  
 TF (Trap Flag):             陷阱标志位, TF=1 时使CPU处于单步执行指令的工作方式
IF (Interrupt Enable Flag): 中断允许标志位, IF=1 时使CPU可以响应可屏蔽中断请求
DF (Direction Flag):        方向标志位,在数据串操作时确定操作方向

段寄存器

用于存放相应逻辑的段基地址

代码段:存放指令代码
CS(寄存器): 代码段寄存器,存放代码段的段基地址
数据段:存放操作的数据
DS(寄存器): 数据段寄存器,存放数据段的段基地址
附加段:存放操作的数据
ES(寄存器): 附加段寄存器,存放数据段的段基地址
堆栈段:存放暂时不用但是需要保存的数据
SS(寄存器):堆栈段寄存器,存放堆栈段的段基地址

内存储器管理

8088CPU是16位体系结构的微处理器

可以同时处理(产生)16位二进制码 可以产生64K个编码

8088CPU需要管理1MB内存 需要能够产生1M个地址编码(16×64K)

内存地址变换

欲实现对1MB内存空间的正确访问,每个内存单元在整个内存空间中必须具有唯一地址  ->物理地址 内存地址变换:如何将直接产生的16位编码变换为20位物理地址

内存每个单位的地址在逻辑上都由两部分组成:

段(基)地址:指示存储单元在整个内存空间中处于哪个区域(段)

段内地址(相对地址/偏移地址):指示存储单元在段内中的相对位置(与段内第一个单元的距离)

8088为16位结构,所以段地址和偏移地址均为16位

段地址(16位) 偏移地址(16位)

内存地址变换的目的就是如何将这个32位的地址变换成20位的物理地址

段首的偏移地址为0000H  16位的0和4位的零是一样的,据此我们可以将32位的地址转换为20位的地址 所以段首的物理地址为:

段地址(16位) 0000

内存物理地址由段基地址和偏移地址组成:物理地址=段基地址×16+偏移地址

物理分段的缺点是将内存按照一定的大小进行分块,在实际的使用中可能产生内存浪费,使用效率低的情况所以在实际过程中一般不使用物理分段的方法。

段寄存器

作用:用于存放相应逻辑段的段基地址

8086/8088内存中逻辑段的类型:

代码段:存放指令代码

数据段:存放操作的数据

附加段:存放操作的数据

堆栈段:存放暂时不用但需要保存的数据

8086/8088内存中每类逻辑段的数量最多为64K个

段寄存器

CS代码段寄存器,存放代码段的段基地址

DS数据段寄存器,存放数据段的段基地址

ES附加段寄存器,存放数据段的段基地址

SS堆栈段寄存器,存放堆栈段的段基地址

逻辑段与逻辑地址

内存的分段是逻辑段,不是物理段。各个逻辑段在地址上可以不相连、可以部分重合、也可以完全重合。

每个内存单元具有唯一物理地址,但可能具有多个逻辑地址。即:

一个内存单元可以同时处于两个逻辑段

一个内存单元可以在不同的时刻属于相同(或不同)类型的段

一个内存单元在同一时刻可以属于不同类型的段。

堆栈及堆栈段的使用

堆栈:内存中一个特殊的区域,用于存放暂时不用或者需要保护的数据,常用于响应中断或子程序的调用。

堆栈可以形象的比喻成一个箱子,往箱子里放东西时,首先占用的是箱子底部。

若栈顶=栈底 空栈  SP栈顶指针

若栈顶=栈首 满栈

指令与指令系统

指令:控制计算机完成某种操作的命令(一条指令包含的信息:运算数据的来源、运算结果的去向 、执行的操作)

指令系统:处理器所能识别的所有指令的集合

指令的兼容性:同一系列机的指令都是兼容的

指令的格式

操作码 操作数 操作数
执行何种操作 目标操作数(运算结果的去向) 源操作数(运算数据的来源)
参加操作的数据或数据存放的地址

零操作数指令:操作码

单操作数指令:操作码 操作数

双操作数指令:操作码 操作数 操作数

多操作数指令:三操作数及以上

指令中操作数

立即数 表示参加操作的数据本身
寄存器 表征数据存放的地址
存储器

立即数

由指令直接给出,是常数性质的

无地址含义,指标是运算的数据(不能作为目标操作数)

例如:MOV    AX,1234H  将常数1234H送给目标寄存器AX

MOV BL,22H  将常数22H送给目标寄存器BL

立即数无法作为目标操作数

寄存器操作数

表示运算的数据存放在寄存器中

多数情况下,寄存器操作数指通用寄存器

在三类操作数中所需运行时间最短

例如:MOV AX,BX 将BX中的内容送给AX

MOV DL,CH 将CH中的内容送给DL

在CPU中内部执行所以速度最快

存储器操作数

表示运算的数据存放在内存

指令中【】里是数据所在单元的偏移地址

在三类操作数中所需运行时间最长

例如 MOV AL,[1200H] 表示将内存中偏移地址1200H中的内容送给AL

MOV AX,[1200H] AX是16位寄存器 将1201H 1200H中的内容合并送给AX

指令的寻址方式

寻址方式

操作数可能的来源或运算结果可能的去处:由指令直接给出、寄存器、内存单元

寻找操作数所在地址的方法可能有三种大类型:指令直接给出方式、存放在寄存器中的寻址方式、存放在存储器中的寻址方式

立即寻址

有指令直接给出运算的数据(操作数是立即数)。为常数形式或字符形式

立即数只能表示运算的数据,无地址含义

立即寻址仅适合于源操作数。即源操作数是参加操作数据本身

寄存器寻址

参加操作的操作数在CPU的通用寄存器中

例如:MOV AX,BX

此种寻址方式中的寄存器主要是通用寄存器,不含控制寄存器,段寄存器限制使用。

存储器操作数的寻址方式

关注点:

  1. 指令操作的对象在内存中,表现形式为:[   ]
  2. 指令中给出运算对象在内存某个逻辑段中的偏移地址 [  偏移地址  ]
  3. 逻辑段的段基地址通过默认或者重设方式给出

存储器操作数的字长本身不确定,其字长取决于指令中另一个寄存器操作数,或通过其他方式指定字长

直接寻址 指令直接给出操作数的偏移地址 例如 MOV AX,[1200H]

直接寻址方式下,操作数默认在数据段,但允许段重设,即由指令给出所在逻辑段 例如MOV AX,ES(段重设符):[ 1200H]    此时表示数据在附加段

寄存器间接寻址 操作数存放在内存中,数据在内存中的偏移地址为方括号中通用寄存器的内容。仅四个通用寄存器可用于存放数据的偏移地址(间址寄存器BX,BP,SI,DI)

例如MOV BX,1200H MOV AX,[BX ]

有寄存器简介给出操作数的偏移地址,存放偏移地址的寄存器称为间址寄存器,操作数的段地址(数据处于哪个段)取决于选择哪一个间址寄存器:BX,SI,DI默认在数据段 BP默认在堆栈段

寄存器相对寻址操作数的偏移地址为寄存器的内容加上一个位移量 例如:MOV AX,[BX+DATA]

MOV AX,2000H
MOV DS,AX
MOV BX,1200H
MOV AL,[BX]5

执行完毕后 AL就是将内存中1205H送入到AL中去。

相对寻址主要用于一维数组的操作,常将位移量作为“表头”地址,间址寄存器的值作为表内相对地址。

基址、变址寻址

操作数的偏移地址为:一个基址寄存器的内容(基址寄存器BX,BP)+一个变址寄存器(SI,DI)的内容

操作数的段地址由选择的基址寄存器决定:基址寄存器为BX,默认在数据段。基址寄存器为BP,默认在堆栈段

基址变址寻址方式与相对寻址方式一样,主要用于一维数组操作

MOV SI,1100H
MOV BX,SI
MOV AX,[SI+BX]

基址、变址、相对寻址

操作数的偏移地址为:基址寄存器内容+变址寄存器内容+位移量

操作数的段地址由选择的基址寄存器决定,基址变址相对寻址方式主要用于二维表格操作。

MOV DI,1100H
MOV BP,DI
MOV AL,[BP][DI]5

隐含寻址

指令中隐含了一个或两个操作数的地址,即操作数在默认的地址中。

MUL BL  //乘法操作 忽略了被乘数
指令执行:
AL×BL----->AX

小结

寻址方式表示指令运算对象的来源和运算结果的去向

注意点:立即寻址仅针对源操作数

寄存器寻址表示指令运算的数据在寄存器中(常为通用寄存器)‘

存储器寻址表示指令运算的对象在内存中 数据在内存中的偏移地址在 [ ]中,段地址可以默认或重设

存储器寻址和寄存器寻址均可用于源或目标操作数

8086指令系统

从功能上包括六大类:数据传输、算术运算、逻辑运算和移位、串操作、程序控制、处理器控制。

数据传送类指令

  1. 通用数据传送指令
  2. 输入输出指令
  3. 地址传送指令
  4. 标志传送指令

除标志传送指令外,其它指令的执行对标志位不产生影响。

通用数据传送指令

  1. 一般数据传送指令
  2. 堆栈操作指令
  3. 交换指令
  4. 查表转换指令
  5. 字位扩展指令

该类所有指令的执行均不影响标志位

一般数据传送指令

注意点:两操作数字长必须相同

两操作数不允许同时为存储器操作数

两操作数不能同时为段寄存器

在源操作数是立即数的时候,目标操作数不能是段寄存器

IP和CS不作为目标操作数,FLAGS一般也不作为操作数在指令中出现

判断下列指令的正确性

MOV AL,BX × 两操作数字长不同
MOV AX,[SI]05H 源操作数作为相对寻址
MOV [BX][BP],BX × 目标操作数寻址方式错误(基址,基址)
MOV DS,1000H × 不能用立寻址方式给段寄存器赋值
MOV DX,09H
MOV [1200],[SI] × 两操作数不能同时为存储器操作数

堆栈操作指令

堆栈操作的原则先进后出、以字为单位

堆栈操作指令:压栈操作PUSH OPRD (16位寄存器或存储器两单元)、出栈操作 POP OPRD

堆栈操作指令说明 :指令的操作数必须是16位;操作数可以是寄存器或存储器两单元,但是不能是立即数。

交换指令

实现两操作数的互换

XCHG REG ,MEM/REG

两操作数必须有一个是寄存器操作数

不允许使用段寄存器

查表指令

XLAT

用BX的内容表示表格首地址,AL内容为表内位移量 BX+AL得到要查找元素的偏移地址,将BX+AL所指单元的内容送给AL

字位扩展指令

将符号数的符号位扩展到高位

指令为零操作数指令,采用隐含寻址,隐含的操作数为AX及AX,DX 无扩展数的扩展规则为在高位加零。

地址传送指令

取偏移地址指令LEA  (取近地址指针)

LDS指令和LES指令 (取远地址指针)

LEA指令 将变量的16为偏移地址写入到目标寄存器,当程序中用符号表示内存的偏移地址时,需使用该指令。 格式LEA REG,MEM 指令要求:源操作数必须是一个存储器操作数,目标操作数通常为间址寄存器

标志传送指令

LAHF、SAHF隐含操作数AH。 PUSHF、POPF隐含操作数FLAGS

LAHF将FLAGS的低八位装入到AH中

输入输出指令

专门面向I/O端口的操作的指令

端口地址在指令中的表示方式 (寻址方式)

指令的功能:从端口地址读入数据到累加器/将累加器的值输出到端口

指令格式:

输入指令:IN acc,PORT
输出指令:PORT,acc(AL/AX)

指令的寻址方式:根据端口地址码的长度,指令具有两种不同的端口地址表现形式:

直接寻址:端口地址为8位时,指令中直接给出8位端口地址;寻址256个端口

间接寻址:端口地址为16位时,指令的端口地址必须由DX指定;可以寻址64K个端口

IN AX,80H 从80H端口读入16bit数据到AX
MOV DX,2400H
IN AL,DX 从2400H端口读入8bit数据到AL
OUT 35H,AX 将AX的值写入到35H端口中

算数运算指令

加法运算指令、减法运算指令、乘法指令、除法指令

算术运算指令的执行大多对站台标志位会产生影响

加法指令 普通加法指令ADD、带进位的加法指令ADC、加1指令INC

ADD指令的执行会对全部6个状态标志位都产生影响

ADC指令多用于多字节数相加,使用前要将CF归零

INC不能是段寄存器,不能是立即数。INC指令的执行不影响CF,影响其他五位标志位

微机原理(FPGA设计CPU理解)相关推荐

  1. 微型计算机原理小闹钟8253,微机原理课程设计-电子钟设计.doc

    微机原理课程设计-电子钟设计 摘要 数字闹钟 1.通过8253定时器产生秒脉冲定时中断.在中断服务程序中实现秒.分.小时的进位(24小时制). 2.将当前时分秒在七段LED显示器上显示(如:09113 ...

  2. 微型计算机原理小闹钟8253,微机原理课程设计-电子钟的设计.doc

    微机原理课程设计-电子钟的设计 摘要 数字闹钟 1.通过8253定时器产生秒脉冲定时中断.在中断服务程序中实现秒.分.小时的进位(24小时制). 2.将当前时分秒在七段LED显示器上显示(如:0911 ...

  3. 课程设计用计算机演奏音乐,微机原理课程设计--音乐演奏.doc

    微机原理课程设计--音乐演奏 学 院: 计算机科学技术 专 业: 计算机科学与技术(工) 班 级: 计10-1班 姓 名: 学 号: 指导教师: 2013年3月10日 微机原理与汇编语言课程设计任务书 ...

  4. 8255交通灯实验的微型计算机,微机原理课程设计——8255,8253交通灯模拟实验.doc...

    文档介绍: 微机原理课程设计 设计任务及要求: 交通信号灯的控制: 通过8255A并口来控制LED发光二极管的亮灭. A口控制红灯,B口控制黄灯,C口控制绿灯. 输出为0则亮,输出为1则灭. 用825 ...

  5. 微型计算机测控系统课程设计报告,微机原理课程设计实验报告--步进电机控制.docx...

    文档介绍: 2010-2011学年第一学期 微机原理课程设计实验报告 课题名:步进电机控制 一.课题内容和提示: 编程提示: (1)步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机做步进式旋 ...

  6. 西安电子科技大学计算机微原课设,西安电子科技大学我机电院微机原理课程设计.doc...

    西安电子科技大学我机电院微机原理课程设计 微机原理课程设计 学 院 机电工程学院 专 业 自动化 姓 名 ******* 学 号 ******** 指导教师 千博 董瑞军 一.微元课程设计 课程设计的 ...

  7. java音乐播放器文库_微机原理课程设计报告——音乐播放器.doc

    微机原理课程设计报告--音乐播放器.doc 微机 应用系统 课程设计报告 题 目 电子音乐播放器 专业班级 电子信息科学与技术 1001 班 设计学生 完成时间 2012 年 6 月 27 日 湖南文 ...

  8. 微机原理课程设计-模拟十字路口交通信号灯

    一.设计任务描述 1.1设计目的 通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解.通过查阅资料,结合所学知识进行软.硬件的设计,使学生初步 ...

  9. FPGA设计CPU书籍

      一直以来CPU内部是绝大多数IT工程师难以触及的领域.纵使学习过计算机架构相关课程,自己动手实现CPU也始终遥不可及,因为这涉及计算机系统的最底层--芯片设计.   而近年来FPGA芯片产品的发展 ...

最新文章

  1. Yii2.0 RESTful API 之版本控制
  2. ECMAScript 6 一些有意思的特性
  3. 通过数据挖掘组织营销潜力的三个重要途径
  4. 【iCore4 双核心板_FPGA】例程七:状态机实验——状态机使用
  5. winform之窗体固定
  6. linux 命令综述
  7. vue3 v-model变化
  8. 类库,随机数,属性,值类型和引用类型
  9. select ... into ... 与 insert into .... select .... 语句
  10. YII2 实现后台操作记录日志
  11. 【树】判断给定森林中有多少棵树(简单做法)
  12. 前端-【学习心得】-事件委托方法
  13. pythonplot画多图间隔,matplotlib实现一页多图
  14. Flutter实战一Flutter聊天应用(一)
  15. xp计算机u盘重装系统,用U盘给旧电脑重装XP系统,自己摸索的方法:两大步骤、两个关键...
  16. 平稳时间序列分析:ARMA模型
  17. Word文档中快速插入分隔线的技巧_C#教程
  18. FeignClient中每一个@RequestParam 都要设置value,否者报错
  19. 如何制作公众号首图?教你一键套用图片模板
  20. Java计算平均成绩

热门文章

  1. Synthesys:语音合成和视频生成平台
  2. 如何判断网站SSL证书是否安装成功?
  3. Java-Tomcat的请求参数解析分析
  4. 怎么把qlv格式转换成mp4?快速转换qlv格式的方法
  5. 计算机视频剪辑教程,VLOG视频剪辑教程
  6. matplotlib入门-直方图、饼图、散点图
  7. 准备女儿的学前班毕业典礼
  8. win7系统设置无线临时(计算机到计算机)网络 手机,win7系统添加设置无线临时网络的操作方法...
  9. 凯利讯讲解为什么MOS管可以防止电源反接?
  10. 2019年Q1美国手游市场总收入24.3亿美元,中国手游贡献2.8亿美元