《寄存器(CPU工作原理).ppt》由会员分享,可在线阅读,更多相关《寄存器(CPU工作原理).ppt(33页珍藏版)》请在三一办公上搜索。
1、第二章寄存器(CPU工作原理),信息处理,控制各种器件进行工作,信息存储,总线,连接CPU内部各器件的总线,连接CPU与外部各器件的总线,CPU,寄存器组,一、通用寄存器8086CPU的内部寄存器都是16位。将AX、BX、CX、DX 四个寄存器称为通用寄存器。通用寄存器可分为两个独立的8位寄存器来用。,MOV AX,18,MOV AX,20000,16位寄存器分成两个8位寄存器的使用情况,20000(4E20H),01001110,78(4EH),00100000,32(20H),一个8位寄存器所能存储的数据的最大值是多少?一个16位寄存器所能存储的最大值又是多少?,二、字在寄存器中的存储字节
2、(Byte):由8bit组成;可以存在8位寄存器中。字(word):由2Byte组成;这两个字节分别称为这个字的高位字节和低位字节。注:一个16位寄存器中存放的数据即可以看成一个字型数据,也可以看作两个字节型数据。例:可看成一个字型数据20000存在AX中,也可看成两个独立的字节型数据分为为78和32。P16 关于数制的讨论,三、几条汇编指令注:在汇编语言中英文字母不区分大小字。,设AX=BX=0000H,下列指令执行后,AX、BX中的数据为多少?,4E20H,0000H,6226H,0000H,6226H,2000H,8226H,2000H,8226H,8226H,8226H+8226H=1
3、044CH AX=?,044CH,8226H,注:当所保存的数据位数大于寄存器的位数时,高位的数据会丢失,称为数据溢出。,001AH0000H,001AH0026H,0040H0026H,2640H0026H,2640H4026H,0040H4026H,00C5H4026H,0058H4026H,注:当通用寄存器作为8位寄存器使用时,低8位和高8位相当于两个独立的寄存器,它们之间没有直接关系,不能产生进位。,ADD AX,93H AX=?,注意:在进行数据传送或运算时,要注意指令的操作数的位数要匹配。例:数据位数不匹配的指令MOVAX,BLMOVBH,AXMOVAL,20000ADDAL,10
4、0H,作业:19页检测点2.1(1)、(2),检测点2.1 1、写出每条汇编指令执行后相关寄存器中的值,movax,62627 movah,31H moval,23H addax,ax movbx,826CH movcx,ax movax,bx addax,bx moval,bh movah,bl addah,ah addal,6 addal,al movax,cx,AX=F4A3H,AX=31A3H,AX=3123H,AX=6246H,BX=826CH,CX=6246H,AX=826CH,AX=04D8H,AX=0482H,AX=6C82H,AX=D882H,AX=D888H,AX=D810
5、H,AX=6246H,检测点2.1 2、用学过的汇编指令,最多4条,编程计算2的四次方,movax,2addax,axaddax,axaddax,ax,四、物理地址 物理地址:每个内存单元的唯一编号 不同的CPU有不同的形成物理地址的方式,我们现在讨论8086CPU是如何在内部形成内存单元的物理地址的。,五、16位结构的CPU16位机:运算器一次最多可以处理16位的数据寄存器的最大宽度为16位寄存器和运算器之间的通路为16位问题:8086地址总线为20位8086为16位结构解决:8086用两个16位地址合成一个20位地址,由两个16位地址如何形成20位地址(七)内存单元的物理地址=基础地址+偏
6、移地址,校门,主楼图书馆,主体育场,2826,2000,826,两种表示方法:2826;2000+826。加限定条件:用两张只能写三位数的纸条传递信息则表示为:200和826约定 第一个数 10+第二个数,段地址 16+偏移地址,基础地址,六、8086CPU给出物理地址的方法,1)CPU中的相关部件提供段地址和偏移地址;,物理地址=段地址16+偏移地址,2)段地址和偏移地址通过内部总线送入地址加法器;,3)地址加法器将两个16位地址合成一个20位的物理地址;,4)地址加法器将20位的物理地址送输入输出控制电路;,5)输入输出控制电路将20位物理地址送上外部地址总线;,6)地址总线将20位物理地
7、址送入内存,寻址。,8086CPU访问内存单元工作过程 访问地址为123C8H的内存单元时,地址加法器的工作过程(数据皆为十六进制表示),相关部件提供段地址和偏移地址,段地址和偏移地址送入地址加法器,段地址16,123C8,段地址16+偏移地址形成20位物理地址,输出20位物理地址,123C8H,地址加法器的工作过程,段地址:16=左移4位(2进制)=左移1位(16进制),一个数据的二进制形式左移N位,相当于该数据乘以2N加法器左移4位相当于乘以24(16),八、段的概念 两点注意:1.段地址16必然是16的倍数,所以一个段的起始地址必然是16的倍数(即:XXXX0H)2.偏移地址为16位,所
8、以一个段的最大长度为64KB。段是我们为了管理内存而引入的一个虚拟的概念,我们可以将内存地址连续、起始地址为16的倍数的一组内存单元看作一个段来管理,但事实上,内存并没有被真正划分成段。,思考:1、观察下面的地址:物理地址段地址偏移地址21F60H2000H1F60H2100H0F60H21F0H0060H21F6H0000H1F00H2F60H2、如果给定一个段地址,仅通过变化偏移地址来进行寻址,最多可定位多少内存单元?,CPU可以用不同的段地址和偏移地址形成同一个物理地址。,检测点2.2给定段地址0001H,仅通过变化偏移地址寻址,CPU的寻址范围为_到_。有一数据存储在20000H内存单
9、元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小_,最大_。,九、段寄存器在CPU中提供段地址的寄存器,十、CS和IPCS 代码段寄存器:提供当前要执行的指令的段地址。IP 指令指针寄存器:指向当前要执行的指令的偏移地址。由CS和IP分别提供一个16位的段地址和偏移地址,经地址加法器合成一个20位的物理地址,该地址为当前要执行的指令所在的位置(CS:IP)。,若当前CPU中的状态为:CS=2000,IP=0000,20000,20000,20000,20000,B8 23 01,B8 23 01,20003,B8 23 01,20003,0123,0003,000
10、3,2000,0003,0123,20003,20003,BB 03 00,BB 03 00,0006,20006,BB 03 00,20006,0003,0006,2000,0006,20006,89 D8,89 D8,0008,89 D8,0003,0008,20006,20008,20008,0123,0003,2000,0008,20008,01 D8,01 D8,000A,01 D8,0003,000A,2000A,2000A,0003,0006,20008,2000A,2000A,(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;,(2)IP=IP+N,从而指向下一
11、条指令;,(3)执行和处理取到的指令,重复步骤(1),由CS:IP指向CPU将要执行的指令所在的物理地址,取到指令后,IP会自动增加N指向下一条指令所在的位置;从而使计算机能够自动连续的执行一个完整的程序。,(1)在8086CPU加电启动或复位后,CS的值为FFFFH,而IP的值为0000H,所以CPU刚开始工作时,执行在内存单元地址为FFFF:0000处的指令(2)既然指令和数据都是二进制的,那么CPU如何识别哪些二进制数据是指令,哪些是纯数据呢?现在我们可以说,如果是CS:IP指向的内存单元处的内容,那么可以说它是指令,十一、修改CS、IP的指令若想同时修改CS、IP的内容,可用jmp段地
12、址:偏移地址例:jmp2AE3:3则CS=2AE3H,IP=0003H若只修改IP的内容,可用jmp 某一合法寄存器例:jmp AX则执行后IP=AX,注意:CS和IP不充许直接赋值。,MOV CS,1000HMOV CS,AXMOV IP,2000H,已知:CPU的初始状态:CS=2000H,IP=0000H,内存单元情况见右表,试分析指令执行序列。,MOV AX,6622H,JMP 1000:3,MOV AX,0000H,2000:0000,2000:0003,1000:0003,MOV BX,AX,1000:0006,JMP BX,1000:0008,AX=6622HBX=XXXXH,AX=6622HBX=XXXXH,AX=0000HBX=XXXXH,AX=0000HBX=0000H,AX=0000HBX=0000H,1000:0000,MOV AX,0123H,AX=0123HBX=0000H,1000:0003,十二、代码段,段:我们可以根据需要将内存中从XXXXH:0000H开始到XXXXH:YYYYH之间一段连续的内存空间做为一个段来使用。,代码段:用来存放指令的段称为代码段。,小结检测点2.3 下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?movax,bx subax,ax jmpax,