8086和89386寄存器的区别
80x86CPUCPU的编程结构寄存器结构

的各寄存器和标志寄存器的内容自动设置为:
CS FFFFH DS 0000H SS 0000H ES 0000H IP 0000H 指令队列空 FR 0000H (禁止中断)
因CS=FFFFH,IP=0000,所以8086/8088将从 地址FFFF0H开始执行指令。故8086/8088引导程序 的入口地址在FFF8F0x086HCP。UCPU的编程结构寄存器
80x86CPUCPU的编程结构寄存器 结构
2.1.3 8086/8088内部寄存器(重点)
1、通用寄存器 通用寄存器包括: 数据寄存器、地址指针寄存器、变址寄存器。 数据寄存器包括: AX 、BX 、CX 、DX 。 地址指针寄存器包括: SP 、 BP 。 变址寄存器包括: SI 、 DI 。
结构
程序执行过程
设程序的指令代码已存放在存储器中。为执行程序, CPU按照时钟节拍,产生一系列控制信号,有规则地 重复进行以下过程。 (1)BIU从存储器中取出一条指令存入指令队列。 (2)EU从指令队列取指令并执行指令。BIU利用
总线空闲时间,从内存取第二条指令或取第 三条指令存入指令队列。 (3)EU执行下一条指令。如果前面一条指令有写 存储器的要求,则通知BIU把前条指令结果写 到存储器中,然后再取指令存入指令队列。
为提高CPU的工作效率,8086/8088CPU采用流水 线处理方式,取指令与执行指令同时进行。
一方面提高了执行速率; 一方面降低了与之相配的存储器的存取速度的要求。
80x86CPUCPU的编程结构寄存器 结构
2.1 .1 8086/8088 CPU的编程结构
8086/8088的编程结构分两部分:
郑州大学《微型计算机原理及应用》课后习题答案

郑州⼤学《微型计算机原理及应⽤》课后习题答案《微型计算机原理及应⽤》习题解答第⼀章基础知识1.1 解释题(1)微处理器【解答】由⼤规模集成电路芯⽚构成的中央处理器(CPU),叫做微处理器。
(2)微型计算机【解答】以微处理器为基础,配以内存储器、输⼊输出接⼝电路、总线以及相应的辅助电路⽽构成的计算机裸机,叫做微型计算机。
(3)微型计算机系统【解答】微型计算机系统由硬件系统和软件系统组成。
即由微型计算机、配以相应的外部设备(如打印机、显⽰器、键盘、磁盘机等),再配以⾜够的软件⽽构成的系统。
(4)单板机【解答】将微处理器、RA、ROM以及I/O接⼝电路,再配上相应的外设(如⼩键盘、LED显⽰器等)和固化在ROM中的监控程序等,安装在⼀块印刷电路板上构成的微型计算机系统称为单板机。
(5)运算器【解答】运算器是直接完成各种算术运算、逻辑运算的部件,主要由ALU(Arithmetic and Logic Unit,算术逻辑部件)、通⽤寄存器、标志寄存器等组成。
(6)地址总线【解答】地址总线是CPU对内存或外设进⾏寻址时,传送内存及外设端⼝地址的⼀组信号线。
地址总线的条数多少决定了CPU的寻址能⼒。
(7)数据总线【解答】数据总线是CPU与内存或外设进⾏信息交换时,所⽤的⼀组数据信号线。
它决定了CPU ⼀次并⾏传送⼆进制信息的位数,反映出CPU的“字长”这个重要性能指标。
(8)控制总线【解答】控制总线是在CPU与外部部件之间传送控制信息(如读/写命令、中断请求命令等)的⼀组信号线。
1-2 单⽚机应包括哪些基本部件?其主要应⽤于哪些领域?【解答】⼀般单⽚机芯⽚中包括微处理器、RAM、ROM、I/O接⼝电路、定时器/计数器,有的还包括A/D、D/A转换器等。
其主要应⽤于智能化仪器仪表及⼯业控制领域。
1-3 按图1-11和图1-12,写出取第⼆条指令操作码和执⾏第⼆条指令的过程。
【解答】ADD AL,12H指令的取指过程:1)IP的值(002H)送⼊地址寄存器AR;2)IP的内容⾃动加1,变为003H;3)AR将地址码通过地址总线送到存储器的地址译码器,经译码后选中002H单元;4)微处理器给出读命令MEMR;5)所选中的002H单元内容04H送上数据总线DB;6)数据总线DB上的数据04H送到数据寄存器DR;7)因是取指操作,取出的是指令操作码04H,即由DR送⼊指令寄存器IR;8)IR中的操作码经指令译码器ID译码后,通过PLA发出执⾏该指令的有关控制命令。
第2章 8086与80x86系列微处理器

EU由以下几部分组成:
数据寄存器:4个16位数据寄存器AX、BX、 CX和DX,主要用于存放运算过程中的数据 或地址。 4个16位数据寄存器也可以作为8个8位数据 寄存器使用,其中AH、BH、CH和DH用于存 放高字节,AL、BL、CL和DL用于存放低字 节。
指针寄存器:两个16位指针SP和BP,与 堆栈段寄存器SS配合使用,用于存放当 前堆栈段中某个单元的偏移量。 变址寄存器:两个16位变址寄存器SI和 DI,与数据段寄存器DS配合使用,用于 存放当前数据段中某个单元的偏移量。
S6 :指示CPU当前是否连在总线上。S6=0 表示CPU当前连在总线上。 S5 :标志位寄存器中的中断允许标志IF 的当前状态。S5=1表示当前允许可屏蔽 中断请求;S5=0表示禁止一切可屏蔽中 断。 S4和S3:指示当前正在使用的段寄存器, 如表2-1所示
3.控制总线
BHE/S7: 1、三态输出,采用分时复用方式。 2、在总线周期的T1 状态,输出BHE信号, 表示使用高8位数据线AD15~AD8 ;否则, 只使用低8位数据线AD7~AD0。 3、在总线的其他T状态输出状态信息。 4、BHE和A0组合起来表示的功能如表2-2所 示。
TEST:测试信号,输入,低电平有效。 当CPU执行WAIT指令时,每隔5个时钟周 期对TEST进行一次测试。 该信号为高电平时,则CPU处于等待状态; 变为低电平时,等待状态结束,继续执 行被暂停的指令。
READY:准备就绪信号,输入,来自被访问 存储器或I/O端口的响应信号,高电平有效。 该信号为高电平时表示要访问的存储器或 I/O端口准备就绪,将在下一个时钟周期内 完成数据传送;否则,表示存储器或I/O端 口未准备就绪,将插入一个或多个等待周期 直到READAY为高电平为止。
汇编学习笔记(15)-80386从16位32位

汇编学习笔记(15)-80386从16位32位简述 80386相⽐于8086 地址线从20位扩展为32位,这意味着80386可以最多访问4G的内存,同时所有的寄存器都扩展为32位寄存器,80386扩展了原来的寄存器,增加了⼀些新的指令,并增加了新的寄存器 80386的寄存器主要分如下⼏类:通⽤寄存器,段寄存器,指令寄存器,标志位寄存器,系统地址寄存器,控制寄存器,测试寄存器,调试寄存器。
80386的指令集也⼤多集成8086的指令集,只是将其扩充为32位寄存器⽽已。
寄存器通⽤寄存器通⽤寄存器是在8086的8个通⽤寄存器(AX,BX,CX,DX,BP,SP,SI,DI)的基础上将其扩展了32位寄存器,名称为在原先的名字前⾯加了个E,分别为EAX, EBX, ECX, EDX, EBP, ESP, ESI, EDI原先的16位和8位寄存器即 AX, AL ,AH等都还是可以使⽤的,同时AX 是EAX的低16位,类似于 AX和AL的关系,EAX的⾼16位⽆法单独使⽤。
段寄存器原先的段寄存器保持不变还是16位,同时增加了FS 和 GS两个新的段寄存器(这两寄存器的全称是啥没查到)指针寄存器扩展为32位,改名为EIP,IP仍然有效,是EIP的低16位标记寄存器标志寄存器也扩展为32位,并层架如下四个标志位 IO 特权(IOPL): 当执⾏IO指令的时候需要IO的特权级⼩于等于此标志位,占2位 嵌套任务标志(NT): ⽤来指⽰中断返回指令 IRET的⼯作⽅式 重启标志(RF): 与故障和调试有关 虚拟8086标志(VM): 表⽰当前⼯作在虚拟8086模式下控制寄存器R0:PG: 分页控制 PG=1: 启⽤内存的分页管理模式 PG=0: 禁⽤内存的分页管理模式PE: 分段控制 PE=1: 启⽤内存的分段管理模式, 同时进⼊保护模式 PE=0: 禁⽤内存的分段管理模式, 同时进⼊实模式MP: 算数存在位EM: 模拟位EM=0: 硬件执⾏浮点指令运算EM=1: 软件模拟浮点执⾏运算TS: 任务切换位ET: 扩展位R1: 保留未使⽤R2: 缺页中断时存储缺的页的地址R3: 页⽬录的地址,只能⽤前20位,后20位必须为0,所以是4K对齐的系统地址寄存器先简单介绍⼀下,在下⼀章会详细介绍他们GDTR: 全局表描述符表寄存器 48位,存放全局段描述符表的地址,前32位存放基地址,后16位是表界限,单位1字节。
80386学习(一)80386CPU介绍

80386学习(⼀)80386CPU介绍⼀.80386CPU介绍 Inter80386CPU是Inter公司于1985年推出的第⼀款32位80x86系列的微处理器。
80386的数据总线是32位的,其地址总线也是32位,因⽽最⼤可寻址4GB的存储空间。
80386作为x86系列CPU的⼀员,保持着对更早⽣产的x86CPU的向前兼容。
80386在当时主要为⽀持⾼性能的应⽤领域和多⽤户、多任务操作系统⽽设计,提供了硬件级的特权级保护、多任务切换、内存分页等功能。
80386有三种运⾏模式:实模式、保护模式和虚拟8086模式。
在实模式下,80386和8086的⾏为保持⼀致,只能访问20位(1M)的地址空间,内部实际32位的寄存器也只有低16位有效。
实模式主要是为了兼容运⾏在8086CPU上的程序,所以80386加电后,默认就运⾏在实模式下。
要想充分发挥80386的对于多任务的⽀持功能,需要使80386进⼊保护模式。
保护模式是80286以及后续的x86CPU都具有的⼀种⼯作模式。
保护模式下的80386内存寻址范围达到了硬件设计的上限:2^32byte,即4GB。
保护模式提供了诸如内存保护、内存分页机制以及硬件虚拟存储管理等功能,为多⽤户。
多任务的⾼效、可靠、安全的操作系统实现提供了良好的⽀持。
因此,主流的现代操作系统例如Linux、Windows(Windows95及以后)其内核均运⾏在x86的保护模式之上。
虚拟8086模式的⼯作模式介于实模式和保护模式之间,虚拟8086⽀持多任务、内存分页等功能。
但运⾏的每⼀个独⽴任务均处于实模式之下。
虚拟8086这⼀模式由于其中庸性,应⽤范围相对较⼩。
⼆.80386对于8086的主要改进 80386能够兼容的运⾏之前在8086、80286CPU上运⾏的程序,但80386⽐起16位的8086CPU⽆论是性能还是功能上都有质的提升。
性能⽅⾯的主要改进:更宽的数据总线和地址总线 扩展到32位的地址总线使得80386能够访问更⼤的地址空间,同时32位的数据总线⽐起8086的16位也增加了数据的传输速度。
汇编语言8086和8088中寄存器

1980年代,汇编语言8086和8088在个人电脑中广泛应用。
这两种语言使用16位和8位寄存器,这些寄存器是编程中不可或缺的组成部分。
接下来我将根据这两种汇编语言的寄存器,深入探讨其特性和用途,帮助你全面了解这一主题。
一、汇编语言8086和8088中寄存器的基本概念在汇编语言8086和8088中,寄存器是一种保存数据的特殊存储器。
它们用于存储指令中的临时数据和位置区域。
这两种汇编语言使用的寄存器包括通用寄存器、段寄存器和指令指针寄存器。
通用寄存器用于存储操作数和中间结果,段寄存器用于存储内存访问的段位置区域,指令指针寄存器用于存储当前执行指令的位置区域。
二、8086和8088中的通用寄存器1. AX寄存器AX寄存器是一个16位的累加器,用于存储算术运算的结果。
在8086和8088中,它可以分为AH和AL两个8位寄存器,分别存储较高位和较低位的数据。
2. BX寄存器BX寄存器是一个16位的基址寄存器,用于存储数据的基址。
在8086和8088中,它也可以分为BH和BL两个8位寄存器。
3. CX寄存器CX寄存器是一个16位的计数寄存器,用于存储循环次数。
在8086和8088中,它可以分为CH和CL两个8位寄存器。
4. DX寄存器DX寄存器是一个16位的数据寄存器,用于存储I/O端口的数据。
在8086和8088中,它也可以分为DH和DL两个8位寄存器。
三、8086和8088中的段寄存器1. CS寄存器CS寄存器是一个16位的代码段寄存器,用于存储当前执行代码段的基位置区域。
在8086和8088中,它存储着指向当前代码段的位置区域。
2. DS寄存器DS寄存器是一个16位的数据段寄存器,用于存储当前数据段的基位置区域。
在8086和8088中,它存储着指向当前数据段的位置区域。
3. SS寄存器SS寄存器是一个16位的堆栈段寄存器,用于存储当前堆栈段的基位置区域。
在8086和8088中,它存储着指向当前堆栈段的位置区域。
8086-8088微处理器
令取出来。 EU的运行步骤是“执行指令1-执行指令2-· · · · · · 执 行指令n”,实际上把取指令的时间省掉了。这样可以提高 CPU运算的速度。(见图4.1.1) 由于EU部分的寄存器和总线都是16位的,所提提供的 地址也是16位的。而8086/8088所访问的存储空间是1M字节, 需要20位地址信号。固此,BIU要对EU提供的地址重新处 理。处理的方法是将EU提供的地址和左移4位的段地址相加, 以得到实际要访问的20位的存储地址。图中的4个段寄存器 (CS、DS、SS和ES)就是专门存放段地址用的,BIO中的 运算器则完成地址相加、产生实际地址的功能。 三、8086/8088的寄存器结构 8086/8088有14个寄存器,它们都是16位的,这些寄存 器按功能可为6类通用寄存器4个、地址指针寄存器2个、变 址寄存器2个、段寄存器4个、指令指针寄存器和标志寄存器
二、总线接口部件(BIU)
总线接口部件由指令指针存器(即程序列、地址产生及 总线控制逻辑等部分组成。 BIU执行EU所要求的全部总线操作,按照EU的要求, 向存储器和I/O器件传送数据。 BIU具有预取指令的功能。在EU执行指令其间,BIU提 前从存储器取出一些指令,按执行的顺利,装入指令队列中。 该队列共同体个单元,能保存折个字节的指令,队列按“先 进先出”的原则组织。EU执行完当前指令后,指令队列中 的指令依次送入EU,EU又开始执行下一条指令。 在8位微型机中,一般CPU都是按“取指令1-执行指令 1-取指令2-执行指令2· · · · · · -取指令n-指行指令n”这样一个步骤 执行的。如果把这种方式比喻为单轨制,则8086/8088采用 的就是双轨制。EU负责执行指令,BIU提前把要执行的指
寄存器(IP)的内容,就是下一条要执行的指令地址。 2.DS寄存器 数据段寄存器。它含有当前数据段的首地址,通常数据 段用来存放数据和变量,数据段寄存器内容加上指令中的偏 移值,即为对数据段指定单元操作的地址。 3.SS寄存器 堆栈段寄存器。它保存当前堆栈的首地址,堆栈是存储 器中设置的一种数据结崐构,用于存放数据和地址,有先进 后出的特点,在调用子程序时,保留返回主程序崐的地址, 也用来保留进入子程序将要改变其值的各寄存器的内容等。 4.ES寄存器 附加段寄存器。附加段是在进行字符串操作时,作为目 地段地址使用,这个附加段是附加的一个数据段,如用DS 作为数据段段地址,SI为源地址偏移,将一崐个字串从源
02_8086 8088系统结构与80x86微处理器
│ AH │ AL │ AX 累加器 ┐
├──────┼──────┤ │
│ BH │ BL │ BX 基址寄存器 │
├──────┼──────┤ │ 数据寄存器 ┐
│ CH │ CL │ CX 计数寄存器 │ │
④,控制寄存器组
a,指令指针 IP
----保存下一条要执行指令的偏移地址
b,标志寄存器 FLAG
----即处理器状态字(PSW)寄存器
----8086/8088 CPU 设立了一个两字节的标志寄存器,共9个标志
----6个反映前一次涉及ALU 操作结果的状态标志,3个是控制CPU 操作特征的控制标志
指示欲传信息的来源或目的地址的地址总线
管理总线上活动的控制总线
2,8086/8088 CPU 的功能结构
①,8086有16条数据总线,可以处理8位或16位数据。
②,8086有20条地址总线,可以直接寻址1M字节的存储单元和64K个I/O端口
③,8088外部数据总线是8位的
----在功能上的共同点:在堆存储器操作数寻址时,用于形成20位物理地址码的组成部分
----在任何情况下,都不能独立地形成访问内存的地址码,因为他们只有16位
--访问存储器的地址码由段地址和段内偏移地址两部分构成
--这4个寄存器用于存放段内偏移地址的全部或一部分
----SP 堆栈指针
└────────┘ └────────┘ └────────┘
存储器三级结构
d,80386之前的CPU都没有Cache。
80386 CPU 内无 Cache,而由与之配套使用的 Intel 82385 Cache控制器实现CPU之外的Cache管理
8051与8086、8088的区别
8051与8086、8088的区别主要8051是8位,⽽8086和8088是16位,所以汇编时会在书写⽅⾯不⼀样,那就要注意算法了,但只要掌握好8051就很快可以过度到16位机以下是⼀些概括性的资料:(是复制粘贴的)8086是intel的CPU,地球上⽣产CPU的不只intel还有motorola.随着⼈类的进步cpu也不断发展。
8086发育得越来越丰满了,也就是以后的/80286/80386/80486/奔腾/p2/p3/p4.8051是单⽚机,是⼀种计算机了,实际上8051内除有CPU外,内部还包括RAM、ROM、定时器、等,只是她⽐PC机⼩得多,⽤处也不⼀样⽽已。
为什么说8051系列呢?8051是intel发明的技术,它有⾃⼰的这种技术的产品--MCS-51。
MCS-51系列单8086/8088微处理器8086是Inter系列的16位微处理器,芯⽚上有2.9万个晶体管,采⽤ HMOS⼯艺制造,⽤单⼀的+5V电源,为5MHz~10MHz。
8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据。
可寻址的内存空间为1MB.Inter公司在推出8086的同时,还推出了⼀种准16位微处理器8088,8088的内部寄存器,运算部件及内部数据总线都是按16位设计的,单外部数据总线只有8条。
推出8086的主要⽬的是为了与当时已有的⼀套Inter接⼝芯⽚直接兼容使⽤。
8086与8088在1.3.1 8086/8088的寄存器结构图1-3⽰出了8086/8088的寄存器结构1. 数据寄存器数据寄存器为图中最上边所⽰的4个寄存器AX,BX,CX,DX。
这些寄存器⽤以暂时保存计算过程中所得到的操作数及结果。
他能处理16位数,也能处理8位数,当处理8位数时,这4个16位寄存器作为8个8为寄存器AH,AL,BH,BL,CH,CL,DH,DL来使⽤。
这4个数据寄存器除了作为通⽤寄存器以外,还有各⾃的专门⽤途:AX(accumulator)做累加器⽤,是算术运算的主要寄存器。
3现代微机结构-8086及80286
理 器
器 存储器 存储器 I/O
AD15~AD0 双向
DT/R DEN
数据 锁存 器
第二节 Intel 80286
与8086的显著区别:
1. 地址线和数据线不再分时复用, 简化了硬件设计;
2. 增加了地址线的宽度, 物理地址空间增加到16M 3. 增加了新的指令, 以增强其控制能力。 4. 引入存储管理中的虚存管理机制。通过“虚地址”
结论:
采用地址流水线后, 由于地址信号的提前建立, 与非地址的流水线相比, 可以尽量减少插入Tw 等待周期。因而加快了访存速度。 (但并没有提高存储器的速度)。
四、80286的工作模式
(一) 实地址模式
系统开机复位时,自动进入实地址模式, A23~A20自 动置为0, 以 A19~A0寻址1M的存储空间。
实地址模式下的寻址过程:
段基地址
段基地址 0000
+ 20位物理地址 内存单元
偏移量
为实施“虚地址保护”所希望的寻址过
程:
应用设计 者给出的 虚地址
• 实施保护 • 实现虚地址到
物理地址
内存单元
实地址的转换
“虚地址保护” 实施的中间平台
“ 中 间 平 台 ” 的 核 心 部描述子 (Descriptor) 分描:述子的作用:
(物理地址)
左移4位
偏移量 基地址
…
15
0 15
0ห้องสมุดไป่ตู้
段寄存器
偏移量
19
0
一 个
16位基地址 0000
段
+
20位的物理地址
外部地址总线
三、8086的中断系统
(一) 中断源
1、外部中断
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8086的通用寄存器有AX,BX,CX,DX,SI,DI,BP,SP80386的通用寄存器则在相应的寄存上把字长又增加了16位即变成相应的EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESPAX为16位,EAX就为32位,但在80386中也可以访问AX即EAX的低16位其他的同理80386还增加了其他的寄存器,一时是说不完的,你慢慢去学吧AX称为累加器(Accumulator),是CPU中使用最多、功能最强的寄存器。
用累加器进行的操作可能需要更少时间。
BX称为基地址寄存器(Base Register),CX称为计数寄存器(Count Register),DX称为数据寄存器(Data Register)。
|评论检举| 2009-5-28 21:05 文刀舍予|七级寄存器的不同主要体现在指令上比如8086里的mul和div指令,就是乘法和除法,哪个寄存器是干什么的都是定义好的还有loop指令,是根据CX来判断是否循环的最重要的就是有的寄存器可以用来寻址而有的不能比如ax不能用于寻址,就是说这样的指令是错误的:mov bx,[ax]而bx可以用于寻址,这条指令就是正确的:mov ax,[bx]这些说的只是在8086里面,32位的CPU的eax,ebx,ecx,edx都能用于寻址(这四个我试验了,其他的没试验)在8086里面,16位通用寄存器为ax,bx,cx,dx,在80386里,寄存器为32位,对应8086,即为eax,ebx,ecx,edxdword ptr fs:[0] 表示fs*16+0处的一个双字另外,div ebx 即(edx,eax)/ebx这里显然应为mov edx,0 ,或者直接用CDQ对cdx进行扩展,CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)整个代码的意思就是:先将00501a32入栈,再将fs*16+0处的一个双字入栈,再做除法(edx,eax)/ebx附:关于寄存器:计算机寄存器分类简介:32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。
对低16位数据的存取,不会影响高16位的数据。
这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。
4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。
程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。
寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。
可用于乘、除、输入/输出等操作,使用频率很高;寄存器EBX称为基地址寄存器(Base Register)。
它可作为存储器指针来使用;寄存器ECX称为计数寄存器(Count Register)。
在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器EDX称为数据寄存器(Data Register)。
在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。
在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。
2、变址寄存器32位CPU有2个32位通用寄存器ESI和EDI。
其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。
寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
变址寄存器不可分割成8位寄存器。
作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。
它们可作一般的存储器指针使用。
在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。
3、指针寄存器其低16位对应先前CPU中的BP和SP,对低16位数据的存取,不影响高16位的数据。
32位CPU有2个32位通用寄存器EBP和ESP。
它们主要用于访问堆栈内的存储单元,并且规定:EBP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据;ESP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶。
寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
指针寄存器不可分割成8位寄存器。
作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。
4、段寄存器段寄存器是根据内存分段的管理模式而设置的。
内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。
CPU内部的段寄存器:ECS——代码段寄存器(Code Segment Register),其值为代码段的段值;EDS——数据段寄存器(Data Segment Register),其值为数据段的段值;EES——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;ESS——堆栈段寄存器(Stack Segment Register),其值为堆栈段的段值;EFS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;EGS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值。
在16位CPU系统中,它只有4个段寄存器,所以,程序在任何时刻至多有4个正在使用的段可直接访问;在32位微机系统中,它有6个段寄存器,所以,在此环境下开发的程序最多可同时访问6个段。
32位CPU有两个不同的工作方式:实方式和保护方式。
在每种方式下,段寄存器的作用是不同的。
有关规定简单描述如下:实方式:前4个段寄存器CS、DS、ES和SS与先前CPU中的所对应的段寄存器的含义完全一致,内存单元的逻辑地址仍为“段值:偏移量”的形式。
为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移量。
保护方式:在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为“选择子”(Selector)的某个值。
5、指令指针寄存器32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU 中的IP作用相同。
指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。
在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。
所以,在理解它们的功能时,不考虑存在指令队列的情况。
6、标志寄存器一、运算结果标志位1、进位标志CF(Carry Flag)进位标志CF主要用来反映运算是否产生进位或借位。
如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。
使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。
2、奇偶标志PF(Parity Flag)奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。
如果“1”的个数为偶数,则PF的值为1,否则其值为0。
利用PF可进行奇偶校验检查,或产生奇偶校验位。
在数据传送过程中,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位。
3、辅助进位标志AF(Auxiliary Carry Flag)在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:(1)、在字操作时,发生低字节向高字节进位或借位时;(2)、在字节操作时,发生低4位向高4位进位或借位时。
对以上6个运算结果标志位,在一般编程情况下,标志位CF、ZF、SF和OF 的使用频率较高,而标志位PF和AF的使用频率较低。
4、零标志ZF(Zero Flag)零标志ZF用来反映运算结果是否为0。
如果运算结果为0,则其值为1,否则其值为0。
在判断运算结果是否为0时,可使用此标志位。
5、符号标志SF(Sign Flag)符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。
在微机系统中,有符号数采用码表示法,所以,SF也就反映运算结果的正负号。
运算结果为正数时,SF的值为0,否则其值为1。
6、溢出标志OF(Overflow Flag)溢出标志OF用于反映有符号数加减运算所得结果是否溢出。
如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。
“溢出”和“进位”是两个不同含义的概念,不要混淆。
就说这么多了,希望能够帮到你|评论。