第四章 典型CPU及指令系统举例_第1页
第四章 典型CPU及指令系统举例_第2页
第四章 典型CPU及指令系统举例_第3页
第四章 典型CPU及指令系统举例_第4页
第四章 典型CPU及指令系统举例_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、l41 8086/8088 CPU的结构l42 主存储器l43 8086/8088堆栈l44 8086/8088指令系统l45 提高CPU性能的一些措施l理解8086/8088CPU的寄存器结构、主存储器、堆栈结构。l掌握8086/8088指令系统的寻址方式。(本章的重点内容)(本章的重点内容)l理解8086/8088指令类型。l了解提高CPU性能的一些措施与当前常用的实际CPU基本组成。l重点难点:重点难点:l8086/8088指令系统的寻址方式。l课时安排:课时安排:6课时。l媒体使用:媒体使用:l使用多媒体投影,主要采用PowerPoint准备的电子教案。4.1.1 8086/8088C

2、PU的结构的结构1. 8086/8088内部结构:内部结构:l8086/8088CPU采用指令流水线结构指令流水线结构,将取指令(或取操作数)与执行指令的功能分别由两个独立部件实现,l即总线接口部件BIU与执行部件EU主要任务是完成CPU与主存储器或I/O之间的信息传送。主要任务是执行指令1、执行部件、执行部件EU:包括:包括一个一个16位算术逻辑部件位算术逻辑部件ALU、一组通用寄存器、一组通用寄存器、暂存器、标志寄存器和暂存器、标志寄存器和EU控制器。控制器。2、EU主要任务是执行主要任务是执行指令。指令。3、执行部件、执行部件EU功能见功能见教材教材P114。l总线接口部件BIU见教材P

3、115。1、总线接口部件、总线接口部件BIU:包括一段寄存器、指包括一段寄存器、指令指针、令指针、6字节的指令字节的指令队列、队列、20位总线地址位总线地址形成部件和总线控制形成部件和总线控制逻辑。逻辑。2、BIU主要任务是完主要任务是完成成CPU与主存储器或与主存储器或I/O端口之间的信息传端口之间的信息传送。送。3、总线接口、总线接口BIU功能功能见教材见教材P115。段基值:段基值:在BIU中设置段寄存器,用以存放20位段起始地址的高16位,称为段基值。偏移量:偏移量:由EU或指令指针IP提供段内的偏移量,即一个主存单元与所在段的段基址之间的字节距离。(16位)段基址:段基址:由段基值左

4、移4位后,得到一个物理地址。二者相加形成20位主存单元的物理地址物理地址。我们把提供一个我们把提供一个20位地址的两个寄存器中的值位地址的两个寄存器中的值分别称之为:分别称之为:20位寄存器中的值称之为段基址(位寄存器中的值称之为段基址(Segment base value)16位寄存器中的值称之为偏移量(位寄存器中的值称之为偏移量(Offset)或有)或有效地址效地址(Effective address)段基址是由四个段寄存器提供段基址是由四个段寄存器提供20位的高位的高16位,低位,低四位补四位补0形成的形成的偏移量是由偏移量是由CPU内的内的EU部分提供的部分提供的l1. 段寄存器:lC

5、S(代码段寄存器)用来存放程序的指令代码序列,用来存放当前代码段段首址的高16位,即段基值。lDS(数据段寄存器)存放程序的有关数据,用来存放当前数据段的段基值。lSS(堆栈段寄存器)用来存放按后进先出顺序存取的信息。存放当前堆栈段的段基值。lES(附加段寄存器)存放运算结果或辅助数据,存放当前附加段的段基值。2 . 通用寄存器(1)地址指针寄存(2)数据寄存器3. 用于控制的寄存器(1)指令指针IP:(2)标志寄存器FR进位标志位CF奇偶标志位PF辅助进位标志位AF零值标志位ZF符号标志位SF溢出标志位OF单步(或跟踪)标志位TF中断标志位IF方向标志位DF作用类似于PC,当现行指令执行完毕

6、,由IP提供下一条指令地址p8086/8088CPU有20条地址引出线,因此具有1M字节(210*210=220)的寻址能力,即可以在1M个字节单元中寻找出所需的一个存储单元。p在8086/8088主存中,一个字节数据占用一个存储单元。一个字(Word)数据(16位)则占用二个相邻的存储单元,数的低8位(低字节)存放在低地址单元;高8位(高字节)存放在高地址单元,并以低字节所在存储单元地址作为字数据的单元地址。p8086/8088把1MB主存空间按需要划分为若干段(segment)。每个段都由连续的字节单元组成,最大长度为64K(即65536),可作为独立寻址的逻辑单位。p一个段起始单元的地址

7、,称为对应段的段基址(20位)。p在程序中设置的段称为逻辑段。p主存可分成任意多个段,但在某一时刻,一个程序只能访问4个段寄存器指向的当前段的内容。4个段寄存器CS、DS、SS和ES,分别保存代码段、数据段、堆栈段和附加段这4个当前段的段基址的高16位段基值。p逻辑地址段基值:偏移量(书写形式)(1)段基值:由某个段寄存器(CS,DS,SS,ES)给出,它是段基址的高16位。(2)偏移量:(也称偏移地址)由IP或EU按寻址方式产生的有效地址提供,它是段内某存储单元与段基址之间的字节距离。p物理地址是指实际的20位主存单元地址,1MB主存空间的每个存储单元只对应惟一的物理地址,其范围为00000

8、HFFFFFH。逻辑地址物理地址的转换方式: 将段基值左移4位形成20位段基址,再加上偏移量,产生20位物理地址。p逻辑地址的来源CPU在执行指令时,是按指令所需的操作类型从不同的来源获得存储单元的逻辑地址,然后形成对应的物理地址以访问主存。(具体内容见教材的P124表4-2逻辑地址的来源)l4.3.2 4.3.2 堆栈操作堆栈操作(AL)=34H(AH)=12H(BH)=56H(BL)=78HBXAX56781234(SP)-2SP;(AX) (SP)压栈之前压栈之前(SP)(SP)-2SP;(BX) (SP)压栈指令压栈指令p出栈-用弹出指令POP可以将当前栈顶字单元内容取出送到通用寄存器

9、、段寄存器或字存储单元中。p执行出栈指令执行出栈指令POP的操作过程分二步进行:的操作过程分二步进行:(1)(SP)寄存器/字单元;将栈顶单元内容送到指定的寄存器或字单元(2)(SP)+2SP;修改栈顶指针,SP加2以指向新栈顶BXAX56781234(BL)=78H(BH)=56H(AL)=34H(AH)=12H(SP) BX;(SP)+2SP(SP) AX;(SP)+2SP出栈之后出栈之后(SP)AXBX1 . 1 . 寄存器寻址方式:寄存器寻址方式:指令所需的操作数存放在CPU的寄存器(通用寄存器或段寄存器)中,通过指令中给出寄存器地址去找到操作数。寻址过程:例:(BX) =1234H

10、MOV AX,BX :将BX中的内 容送到AX中 (AX) =1234H 操作码 REC操作数SRi是指令代码中的寻址字段,表示操作数的寄存器地址l立即数寻址方式:指令所需的操作数直接在指立即数寻址方式:指令所需的操作数直接在指令代码中,随着取指令一起取到令代码中,随着取指令一起取到BIU的指令队的指令队列中。列中。操作码操作码F5H12H34H一条指令一条指令AHALAXAHALAX(A)MOV AX,1234H(B)MOV AL,0F5Hl在汇编语言程序中,一个存储单元的地址采用逻辑地址来表示:(形式:段基值:偏移量)l段基值:是由某个段寄存器提供,由指令隐含给出。l偏移量:是指存放操作数

11、的存储单元与段起始(段基址)之间的字节距离,字由CPU的EU按指令中操作数的寻址方式计算而得到,又称为有效地址EA。l有效地址EA:由位移量、基地址、变址量三个地址分量的某种组合求得。段基址段基值左段基值左移四位移四位段基值l定义:指令所需的操作数存放在存储单元中,操作数的有效地址EA直接由指令代码中的位移量提供。l寻址过程:l在源程序中,直接寻址方式可用数值地址或符号地址来表示。操作码位移量EA用数值地址表示:用数值地址表示:l在采用直接寻址方式的汇编指令中,用数值表示操作数的有效地址,则操作数所在段的段寄存器必须指明,不能缺省。MOV BX,DS:1000H完成将当前数据段偏移1000H个

12、字节的字单元内容1234H送入BX中。用符号地址表示:用符号地址表示:l在源程序中,常用符号地址表示存放操作数的存储单元,所以在汇编指令中,可用符号地址表示的直接寻址方式来存取操作数。l若指令中不必给出数据段寄存器名,即隐含使用DS;其他须指定。l例题:P130MOV BX,VARMOV BX,DS:VARMOV DA_BYTE,0FHMOV DS:DA_BYTE,0FHMOV CL,DA+3MOV CL,DA+3l寄存器间接寻址方式:指令所需的操作数在存储单元中,操作数的有效地址EA直接从基址寄存器(BP或BX)或变址寄存器(SI或DI)中获得。l见P131的图4-22 寄存器间接寻址方式。

13、l若以BX,SI或DI间接寻址时,隐含使用的段寄存器是DS,若以BP间接寻址时,隐含使用的段寄存器是SS。MOV CH,SIMOV CH,DS:SIMOV DI,BXMOV DS:DI,BXMOV AL,BXMOV AL,DS:BXMOV CX,BPMOV CX,SS:BP操作码MOD R/MSIDIBXBPOROROREA寻址过程是指令代码中的寻址字段是指令代码中的寻址字段寄存器间接寻寄存器间接寻址方式址方式实际上是实际上是将有效地址事先将有效地址事先存放在一个寄存存放在一个寄存器中,如同一个器中,如同一个地址指针。因此地址指针。因此在程序中只要修在程序中只要修改间址寄存器的改间址寄存器的内

14、容,就可以用内容,就可以用一条指令访问不一条指令访问不同的存储单元。同的存储单元。l 变址寻址和基址寻址方式:变址寻址和基址寻址方式:指令所需的操作数在存储单元中,操作数的有效地址EA是基址寄存器(BP或BX)或变址寄存器(SI或DI)的内容与指令中给出的位移量(8位或16或)两个地址分量之和。l使用SI或DI称为变址寻址。l使用BX或BP称为基址寻址。操作码MOD R/M位移量SIDIBXBPOROROR+EAl寻址方式的使用格式:l变址或基址寻址方式用来访问顺序存放在主存中的一维数组、表格、字符串等。l典型用法:是将指令中不能修改的位移量作为基准地址,而变址或基址寄存器内容作为修改量l例题

15、4-1:见教材132页。MOV AX,10HSIMOV AX,DS:10HSIMOV TABLEDI,12HMOV DS:TABLEDI,12HMOV AX,ARRYBXMOV AX,DS:ARRYBXMOV TAB1BP,CLMOV SS:TAB1BP,CL操作码MOD R/M位移量SIDIBPBXOROR+EA寻址过程l寻址方式的使用格式:l基址变址寻址方式用来访问存放在主存中的二维数组。(其寻址方式中有两地址分量可在程序执行过程中进行修改)l例题4-2:见教材133-134页。MOV AX,200HBXSIMOV AX,DS:200HBXSIMOV TABLEBXDI,0FFHMOV D

16、S:TABLEBXDI,0FFHMOV AX,ARRYBPSIMOV AX,SS:ARRYBPSIMOV TAB1BPDI,DLMOV SS:TABBPDI,DL上半部分表示上半部分表示由由CPU的执行的执行部件部件EU根据寻根据寻址方式计算有址方式计算有效地址效地址EA。下半部分表示下半部分表示由总线接口部由总线接口部件件BIU形成操作形成操作数的物理地址。数的物理地址。按操作数的物按操作数的物理地址就可直理地址就可直接访问操作数接访问操作数的存储单元。的存储单元。l串操作寻址方式:l串操作指令规定:l隐含使用SI作为在数据段中的源串(即源操作数)的地址指针l隐含使用DI作为在附加段中的目的

17、串的地址指针。SIDI源串有效地址EA目的串有效地址EAl了解l8086/8088指令按操作数地址划分: 双操作数指令:OPR DEST,SRC 单操作数指令:OPR DEST 无操作数指令:OPRl8086/8088指令按功能划分: 传送类指令 算术运算类指令 位操作类指令 串操作类指令 程序转移类指令 处理器控制类指令l分类:(仅存标志指令SAHF、标志出栈指令POPF对标位有影响)数据传送类指令交换指令标志位传送指令地址传送指令l格式:MOV DEST,SRCl功能: DEST(SRC)将源地址的内容(源操作数)传送到目的地址中。传送指令执行后源操作数保持不变。l注意:MOV指令中的两个

18、操作数可同为字或字节,但两者位数必须一致。目的操作数不能为立即数。两个操作数不能同时为存储器操作数。MOV指令中立即数不能直接传送给段寄存器,而且段寄存器之间也不能直接传送数据,但可以通过寄存器实现间接传送。一条MOV指令不能完成两个存储单元之间的数据传送,但可以用两条指令来实现。 数据传送指令(数据传送指令(Move)(指令中只允许两个操作数的其中指令中只允许两个操作数的其中一个在主存储器中,立即数不能直接送段寄存器,段寄存一个在主存储器中,立即数不能直接送段寄存器,段寄存器也不能之间直接传送器也不能之间直接传送)例子例子错误原因错误原因MOV 60H,AL立即数不能作目的操作数立即数不能作

19、目的操作数MOV BX,SI存储器之间不能直接传送存储器之间不能直接传送MOV CS,AXCS不能作目的操作数不能作目的操作数MOV BX,IP通用寄存器无通用寄存器无IP寄存器寄存器MOV DS,ES段寄存器间不能直接传送段寄存器间不能直接传送MOV CX,AL源和目的操作数长度不一致源和目的操作数长度不一致l格式:XCHG DEST , SRCl功能:将源地址的内容(源操作数)与目的地址的内容(目的操作数)相互交换。通用寄存器通用寄存器AX BX CX DX SI DI BP SP存储器存储器图4-30 CXHG指令的数据交换l注意:注意:数据交换只能在通用寄存器之间或通用寄存器数据交换只

20、能在通用寄存器之间或通用寄存器与存储单元之间进行。与存储单元之间进行。交换指令不能使用段寄存器,也不能使用立即交换指令不能使用段寄存器,也不能使用立即数。数。(1)取标志指令()取标志指令(LAHF)l格式:LAHFl功能:AH (FR)7-0,将标志寄存器FR低8位内容传送到AH寄存器中。l见如下图(一一对应)l76543210这种指令用于对标志寄存器进行存取操作,共4条指令且都是无操作数指令SF符号ZF零值AF辅助进位PF奇偶CF进位AHFR低低8位位l(2)存标志指令)存标志指令l格式:SAHFl功能:(FR)7-0 AH,将AH寄存器的内容传送给标志寄存器FR低8位。l(3)标志压栈指

21、令()标志压栈指令(PUSHF)l格式:PUSHF l功能:PUSHF指令先将栈顶指针SP内容减2指向空字单元,然后把16位标志寄存器FR的所有内容送到SP指向的新栈顶字单元中。l(4)标志压栈指令()标志压栈指令(POPF)l格式:POPF l功能:POPF指令先SP指向的栈顶字单元的内容弹出标志寄存器中,然后SP内容加2指向新的栈顶。各标志位的状态由堆栈弹出字的对应位内容决定。(1)装入有效地址指令LEAl格式:LEA DEST,SRCl功能:DEST SRC的EA,即将源操作数的有效地址EA传送到目的地址(16位通用寄存器)中。(2)装入地址指针指令LDS 格式:LDS DEST,SRC

22、 LES DEST,SRC 功能:是从作地址指针的4个存储单元中,同时取出段基值与偏移量(即源操作数),分别送到段寄存器DS(ES)和通用寄存器中。1加法运算指令加法运算指令(1)加法指令(ADD)l格式:ADD DSET,SRCl功能:DEST (SRC)+(DEST),影响OF,SF,ZF,AF,PF和CF标志位。l见教材P141页,例4-8注意各标志位的变化。例:例:ADD DL,0A4Hl格式:ADC DSET,SRCl功能:DEST (SRC)+(DEST)+CF,即在完成两个操作数相加的同时,将标志位CF加上,求出的和数送入目的地址中。影响OF,SF,ZF,AF,PF和CF标志位。

23、l注意:ADC主要用于大于16位数的相加运算。l例4-9 有一个32位无符号数存放在DX(高16位)、AX(低16位)中,若要加上常数76F1A23H,则用以下指令来实现:lADD AX,1A23H;lADC DX,76FH;完成把完成把16位常数加在位常数加在AX中,中,若产生进位,则记录在若产生进位,则记录在CF中。中。由由ADC指令在完成高指令在完成高16位相位相加的同时,将低加的同时,将低16位进位(即位进位(即CF中的数)也加上。中的数)也加上。+7+6F+1A+23DXAXCF DH DL AH ALl格式:INC DSETl功能:DEST (DEST)+1,即目的操作数加1后送回

24、目的地址中,影响OF,SF,ZF,AF和PF,但不影响CF。l注意:q操作数只能在通用寄存器或存储单元中,不能是立即数。qINC指令主要用于计数器的计数或修改地址指针。(1)减法指令(SUB)l格式:SUB DEST,SRCl功能: DEST (DEST)(SRC),即完成从目的操作数中减去源操作数,其差值送入目的地址中。影响OF,SF,ZF,AF和PF,但不影响CF。l例:有例:有2个字节单元个字节单元A、B,可用指令实现,可用指令实现(A)(B) A 。 MOV AL,B SUB A,ALl格式:SBB DEST,SRCl功能: DEST (DEST)-(SRC)-CF,即在完成2个操作数

25、相减的同时,还要减去借位CF,影响OF,SF,ZF,AF和PF,但不影响CF。l注意:用于大于16位数的相减运算,将低位部分的相减的借位引入高位部分的减法。l格式:DEC DSETl功能:DEST (DEST)-1,即目的操作数减1后送回目的地址中,影响OF,SF,ZF,AF和PF,但不影响CF。l注意:q操作数只能在通用寄存器或存储单元中,不能是立即数。qDEC指令主要用于计数器的计数或修改地址指针,但它的计数或修改方向与INC指令相反。l格式:NEG DSETl功能:DEST 0- (DEST),即用0减去目的操作数,相减结果送回目的地址中。影响OF,SF,ZF,AF和PF,但不影响CF。

26、l见教材P143l例4-13l例4-14l格式:CMP DSET,SRCl功能:(DEST)-(SRC),两个操作数相减后,仅按相减结果设置标志位OF,SF,ZF,AF,PF和CF,但不保留差。lCMP和SUB之间的区别:l运算结果不送回目的地址中,因此CMP指令执行后,两个操作数都不变,只影响状态标志位。lCMP主要是利用所设标志位的状态来反映两个操作数的大小。(1)无符号数乘法指令(MUL)l格式:MUL OPRDl功能:l l注意:(OPRD)是乘法运算的一个操作数,只能在通用寄存器或存储单元中,另一个操作安息则隐含在AL或AX寄存器中。(2)带符号数乘法指令(IMUL) 该指令中的操作

27、数及积均为带符号且用补码表示。字节无称号数相乘:AX (OPRD)*(AL)字无称号数相乘:AX (OPRD)*(AX)(1)无符号数除法指令(DIV)l格式:DIV OPRDl功能:l l注意:DIV指令对标志寄存器无有效标志结果,有两种情况将产生0型中断,转入除法出错中断处理。(除数为0或商溢出)字节除法:AL (AX)/(OPRD)字无称号数相除:AX (DX:AX)/(OPRD)(2)带符号数除法指令(IDIV)l格式:IDIV OPRDl功能:该指令中的操作数、商及余数均带符且用补码表示,其余均与DIV操作相同。l(3)字节/字符号扩展指令l格式:CBW;扩展AL中的符号位至AH中l

28、 CWD;扩展AX中的符号位至DX中l两个指令主要用在除法指令前,形成双倍长度的被除数,对标志寄存器均无影响。(1)非组合型加法校正指令AAA(2)组合型加法校正指令DAA(3)非组合型减法校正指令AAS(4)组合型减法校正指令DASBCD十进制:先用二进制数的加减、乘除指令十进制:先用二进制数的加减、乘除指令对对BCD码进行运算,接着用码进行运算,接着用BCD码校正指令对运码校正指令对运算结果进行校正。算结果进行校正。例题请参见教材P147。1.逻辑运算指令(1)逻辑与指令(二(二1为为1)l格式:AND DEST,SRCl功能:DEST (SRC)(DEST)(2)逻辑或指令(有(有1为为

29、1)l格式:OR DEST,SRCl功能:DEST (SRC) (DEST)这些指令常用于对操这些指令常用于对操作数的某些位进行分作数的某些位进行分离、组合或设置离、组合或设置(3)逻辑异或指令(同为同为0,异为,异为1)l格式:XOR DEST,SRCl功能:DEST (SRC)O(DEST)(4)逻辑非指令l格式:NOT DESTl功能:DEST (DEST)例例1:l AND AL,0F0H;分离出AL中的高4 位lOR AL,80H;将AL中最高位置“1”lXOR AX,AX;将AX内容清零lXOR AL,01H;将AL中最低位变反l例例2:实现将标志寄存器的第:实现将标志寄存器的第8

30、位位TF位置位置1。lPUSHF;标志压栈指令(将16位标志寄存FR的内容送入栈顶单元)lPOP AX;出栈,即(栈顶单元)AXlOR AX,100H;将AX中第8位置1,其余不变lPUSH AXlPOPF;通过堆栈将修改的结果送回标志寄存器中格式:TEST DEST,SRCl功能:(SRC)(DEST);将源操作数与目的操作数进行按位逻辑与运算,仅按结果设置标志位SF,ZF,PF,相与的结果不保存。l移位指令分算术移位、逻辑移位和循环移位,共8条指令,其特点是:q具有相同的指令格式:OPR DESR,COUNTq每条指令都是单操作数指令,即只需一个操作数DESTqDEST只能是8/16位通用

31、寄存器或存储器操作数,不能是立即数qCOUNT表示移位的次数,移位一次,为1;移位多次,则须有CL替代,CL中存放移位的次数。q格式:算术左移指令算术左移指令 SAL DEST,COUNT;将将DEST指定的操指定的操作数左移作数左移COUNT,最高位移入,最高位移入CF中,最低位补中,最低位补0算术右移指令算术右移指令 SAR DEST,COUNT;将将DEST指定的操指定的操作数右移作数右移COUNT,最高符号位保持不变,连同符号位依,最高符号位保持不变,连同符号位依次右移,最低位移入次右移,最低位移入CF中中q算术移位指令主要用于对带符号数的移位,左移一位相当于乘2;右移一位相当于除2。q格式:逻辑左移指令 SHL DEST,COUNT逻辑右移指令 SHR DEST,COUNTq功能:将DEST指定的8/16位寄存器或存储器操作数移位COUNT。SHL最高位移入CF中,最低位补0SHR最低位移入CF中,最高位补0q格式:循环左移指令 ROL DEST,COUNT循环右移指令 ROR DEST,COUNT带进位循环左移指令 RCL DEST,COUNT带进位循环右移指令 RCR DEST,COUNTq功能:将D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论