点滴微机原理

来源:互联网 发布:淘宝好吃又不贵的零食 编辑:程序博客网 时间:2024/04/29 10:49

基本的程序执行寄存器


通用寄存器: 这八个寄存器能用于存放操作数和指针


段寄存器:这些段寄存器最多能保持4个段选择子


FLAGS寄存器:FLAGS寄存器报告正在执行的程序的状态,并允许有限的控制处理器


IP(指令指针)寄存器:IP寄存器包含下一条执行的指令的16位指针


1:通用寄存器

8个通用寄存器AXBXCXDXSIDIBPSP用于处理以下内容


逻辑和算术操作的操作数


用于地址计算的操作数


内存指针


虽然所有这些寄存器都用于存放操作数,结果和指针,但在引用SP寄存器时要特别小心。


SP寄存器保持堆栈指针,通常步用于其他目的


许多指令寄存器赋予特定的寄存器已存放操作数,例如,串操作指令用CXSIDI寄存器的内容


作为操作数


以下是特殊使用要求


AX操作数和结果数据的累计器


BXDS段中数据的指针


CX串和循环操作的计算器


DX I/O指针


SI指向DS寄存器段中的数据指针,串操作的源指针


DI指向ES寄存器段中的数据的指针,串操作的目标指针


SP堆栈指针(在SS段中)


BP堆栈上数据指针


这些通用寄存器中的前四个,即AXBXCXDX通常称为数据寄存器,用以存放操作数;后四个,即SIDIBPSP,通常称为指针寄存器,虽然他们也可以存放操作数,但主要用于地址指针


DSES寄存器指向两个数据段。两个数据段的可用性,允许有效而又安全的访问结构不同的数据类型


SS寄存器包含堆栈段的段选择子,所有的堆栈段操作都以SS以找到堆栈段


指令指针:


指令指针(IP)寄存器包含下一条要执行的指令在当前段中的偏移。通常,它是顺序增加的,从一条指令边界至下一条指令,但在执行JMPJccCALLRET,和IRETD等指令,它可以向前或向后移动若干条指令



存储器组织


处理器在它的总线上寻址的存储器称为物理存储器,物理存储器按字节序列组织。每一个字节赋予一个唯一的地址,称为物理地址。物理地址空间的范围从0220次方-1的最大值。整个1MB存储器如SPIP,以及BPDI等可由CPU处理器的16位偏移量来形成的实际的20位物理地址。这个基地址就是8088中的段寄存器,即代码段寄存器CS,堆栈段寄存器SS,数据段寄存器DS以及附加段寄存器ES中的一个来形成的。在形成的20位物理地址时,段寄存器中的16位数会自动左移4位,然后与16位偏移量相加


每次在需要产生一个20位地址的时候,一个段寄存器会自动被选择,且能自动左移4位再与一个16位地址偏移量相加,一产生所需要的20位物理地址


每当取指令的时候,则自动选择代码段寄存器CS,在加上由IP所决定的16位偏移量,计算得到要取的指令的物理地址


每当涉及到一个堆栈操作时,则自动选择堆栈段寄存器SS,再加上由SP所决定的16位偏移量,计算得到堆栈操作所需要的20位物理地址


每当涉及到一个操作数,则自动选择数据段寄存器DS或附加段寄存器ES,再加上16位偏移量,计算得到操作数的20位物理地址



在不改变段寄存器值的情况下,寻址的最大范围64KB。所以,若有一个任务,他的程序长度,堆栈长度以及数据区域长度都不超过64KB



指针数据类型


指针是内存单元的地址。80*86系列结构定义两种类型的指针:近指针(near)(在8086中是16位,在80386以上处理器中为32位)。Near指针是段内的16位偏移量(也称为有效地址)


Near指针在平面存储器模式中用于所有存储器引用,或在分段存储模式中用于同一段内的存储器引用。Far指针是一个48位的逻辑地址,包含16位段选择子和32位的偏移。Far指针用于在分段存储模式中的跨段存储引用


8086指令的操作数寻址方式


8086机器指令有零个或多个操作数

一个操作数能定位在以下地方之一


1:指令中(立即数)


2:寄存器


3:存储单元


4I/O端口


立即数:某些指令用包含在指令中的数据作为源操作数。这些源操作数称为立即操作数


寄存器操作数:源和目的操作数在寄存器中


存储器操作数: 段超越通常用:处理


交换指令:XCHG


XCHG DOPDSOPD

这时一条交换指令,它有两个操作数:DOPD,和SOPD,该指令的功能是使两个两个操作数交换,这条指令的操作数可以是一个字节或是一个字



CMP比较指令


比较指令完成两个操作数相减,使结果反映在标志位上,但量操作数不变


比较指令主要用于比较两个数之间的关系,即若两者是否相等,或两个中那一个大,在比较指令完后,根据ZF标志即可判断两者是否相等,若两者相等,相减以后结果为零,则ZF1;否则为0


SF=0AX>BX

原创粉丝点击