1、第四章,典型的CPU及指令系统,第四章的内容章节,4.1、8086/8088CPU 4.2、主存贮器 4.3、8088/8086堆栈 4.4、8088/8086指令系统 4.5、提高CPU性能的一些措施,第三章的模型计算机CPU图,IBM公司于1981年8月12日所推出的第一台IBM PC5150 1985年,中国自行研制成功了第一台微型计算机,长城的0520,第一台IBM PC,4.1、8086/8088CPU(主要内容),4.1.1 8086/8088CPU的结构1.8086/8088的内部结构2. 8086/8088主存地址的形成 4.1.2 8086/8088寄存器1.段寄存器2.通用
2、寄存器3.用于控制的寄存器,8086/8088CPU,8088/8086,8086/8088CPU,8088/8086,8086/8088CPU,8088/8086,8086/8088CPU,8088/8086,8086/8088CPU,8088/8086,8086/8088CPU,IBM公司于1981年8月12日所推出的第一台PC机的主板图,8086/8088CPU,4.1、8086/8088CPU(概述),相同点:都是16位机,外部地址线都是20条。 内部结构基本相同,4.1、8086/8088CPU,不同点:最主要的区别就是系统总线中的数据线8086是16位,而8088地址线是8位。此外
3、,8088/8086都是16位宽度的计算机 但常常称8088是准16位机,8086/8088CPU,1.8086/8088的内部结构,4.1.1、8086/8088CPU的结构,流水线式的取指-执行,8086/8088CPU,8086/8088CPU,1.EU2.BIU,1.8086/8088的内部结构,1.EU(Execute Unit) 从指令队列里取出指令代码,由EU控制器进行译码后产生对应的控制信号到各部件以完成指令规定的操作 对操作数进行算逻运算,并将运算结果的特征状态存放在标志寄存器中 由于EU不直接与系统总线连接,由此当需要与主存储器或I/O端口传送数据时,EU向BIU发出命令,
4、并提供给BIU16位有效地址与传送的数据,8086/8088CPU,8086/8088CPU,1.8086/8088的内部结构,2.BIU(Bus Interface Unit)从主存取出指令送到指令队列中排队 从主存或I/O端口取操作数或存放运算结果 计算并形成访问贮存的20位物理地址,8086/8088CPU,2. 8086/8088主存地址的形成,先给大家学习以下计算机科学中的量词210=1024=1K220=1024K=1M230=1024M=1G我们学习的8088/8086有20根地址线,可以将主存储器编上220个内存单元,即1M内存,即使有多于1M内存的内存,对于8088/8086
5、来说,也是浪费。,8086/8088CPU,2. 8086/8088主存地址的形成,现在有一个问题,20根地址线需要一次提供20个信号,但是我们的计算机是16位宽度,16位的CPU宽度如何由CPU提供20位的地址信号呢?,8086/8088CPU,16位,?,20位,2. 8086/8088主存地址的形成,其实答案很简单,一个寄存器的宽度是16位,两个寄存器不就是32为宽度了吗我们没有用两位寄存器并在一起来提供32位的信号,而让一个20位的寄存器和一个16为寄存器进行加法来得到一个20位的地址信号,8086/8088CPU,2. 8086/8088主存地址的形成,8086/8088CPU,2.
6、 8086/8088主存地址的形成,8086/8088CPU,半导体主存贮器的发展1,8086/8088CPU,半导体主存贮器的发展2,8086/8088CPU,半导体主存贮器的发展3,8086/8088CPU,半导体主存贮器的发展4,8086/8088CPU,2. 8086/8088主存地址的形成,我们把提供一个20位地址的两个寄存器中的值分别称之为: 20位寄存器中的值称之为段基址(Segment base value) 16位寄存器中的值称之为偏移量(Offset)或有效地址(Effective address) 段基址是由四个段寄存器提供20位的高16位,低四位补0形成的 偏移量是由C
7、PU内的EU部分提供的,8086/8088CPU,4.1.2 8086/8088寄存器,1.段寄存器 2.通用寄存器 (1)地址指针寄存器 (2)数据寄存器 3.用于控制的寄存器 (1)指令指针IR (2)标志寄存器FR,8086/8088CPU,1.段寄存器 2.通用寄存器 (1)地址指针寄存器 (2)数据寄存器 3.用于控制的寄存器 (1)指令指针IR (2)标志寄存器FR,8086/8088CPU,1.段寄存器,四个段寄存器都可以提供16位信号,这个二进制数再加上四位为0的低位就可以行成段基址,1M的内存最多可有64K个段基址,每个段基址都可以加上一个16位的值(小于64K)最终形成20
8、位的物理地址,8086/8088CPU,1.段寄存器,8086/8088CPU,2.通用寄存器,(1)地址指针寄存器 (2)数据寄存器,8086/8088CPU,2.通用寄存器,(1)地址指针寄存器 (2)数据寄存器,8086/8088CPU,3.用于控制的寄存器-(1)指令指针IR,8086/8088CPU,3.用于控制的寄存器(2)标志寄存器FR,8086/8088CPU,3.用于控制的寄存器(2)标志寄存器FR,8086/8088CPU,3.用于控制的寄存器(2)标志寄存器FR,8086/8088CPU,3.用于控制的寄存器,(2)标志寄存器FR 进位标志位CF(Carry Flag)
9、奇偶标志位PF(Parity Flag) 辅助进位标志位(Auxiliary Flag) 零值标志位(Zero Flag) 符号标志位SF(Sign Flag) 溢出标志位OF(Overflow Flag) 单步(跟踪)标志位TF(Trae Flag) 中断标志位IF(Interrupt enable Flag) 方向标志位DF(Direction Flag),8086/8088CPU,4.2、主存贮器,4.2.1 8086/8088主存储器的特点 4.2.2 主存储器的段结构 4.2.3 逻辑地址与物理地址1.逻辑地址2.物理地址3.逻辑地址的来源,8086/8088主存储器的特点,8086
10、/8088主存储器的特点,8086/8088主存储器的特点,8086/8088主存储器的特点,4.2.3 逻辑地址与物理地址,1.逻辑地址 段基值:偏移量 2.物理地址 3.逻辑地址的来源,8086/8088主存储器的特点,4.3 8086/8088堆栈,4.3.1堆栈组织 4.3.2堆栈操作1.压栈2.出栈,堆栈组织,堆栈操作-1.压栈2.出栈,4.4 8086/8088指令系统,4.4.1 8086/8088寻址方式 4.4.2 8086/8088指令,4.4.1 8086/8088寻址方式,1.寄存器寻址方式(Register Address) 2.立即数寻址方式(Immediate A
11、ddress) 3.存储器寻址方式 (1)直接寻址方式(Direct Address) a.用数值地址表示 b.用符号地址表示 (2)寄存器间接寻址方式(Register Indirect Address),4.4.1 8086/8088寻址方式,(2)寄存器间接寻址方式(Register Indirect Address) (3)变址寻址(Indexed Addresssing)和基址(Based Addressing)寻址方式 (4)基址变址寻址(Based Indexed Addressing) (5)串操作寻址方式(String Addressing) (6)I/O端口寻址,操作码,R
12、EG,Ri,操作数,寄存器寻址方式,立即数寻址方式,3.存储器寻址方式,直接寻址方式(Direct Address),寄存器间接寻址方式,变址寻址(Indexed Addresssing)和基址(Based Addressing)寻址方式,用变址寻址方式访问一维数组,基址变址寻址(Based Indexed Addressing),用基址变址寻址方式访问二维数组,SI,DI,源串有效地址,目的串有效地址,4.4.2 8086/8088指令,按操作数地址个数: 1.双操作数指令:OPR DEST,SRC 2.单操作数指令:OPR DEST 3.无操作数指令:OPR,4.4.2 8086/8088
13、指令,按功能来分: 1.传送类指令(Transfer instructions) 2.算术运算类指令(Arithmatic instructions) 3.位操作类指令(Bit manipulation instructions) 4.串操作类指令(String instructions) 5.程序转移类指令(Program transfer instructions) 6.处理器控制类指令(Processor control instructions),1.传送类指令(Transfer instructions),1.数据传送指令(Move)(指令中只允许两个操作数的其中一个在主存储器中,立
14、即数不能直接送段寄存器,段寄存器也不能之间直接传送),1.传送类指令(Transfer instructions),2.交换指令(Xchange),1.传送类指令(Transfer instructions),3.标志位传送类指令 (1)取标志指令LAHF(Load Register AH from Flag),1.传送类指令(Transfer instructions),3.标志位传送类指令 (2)取标志指令SAHF(Save Register AH into Flag),s,1.传送类指令(Transfer instructions),3.标志位传送类指令 (3)标志压栈指令PUSHF(P
15、ush Flag) (4)标志出栈指令POPF(Pop Flag),1.传送类指令(Transfer instructions),4.地址传送指令(Address Transfer) (1)装入有效地址指令(Load Effective Address)LEA,1.传送类指令(Transfer instructions),4.地址传送指令(Address Transfer) (2)装入地址指针指令(Load Effective Address)LDS/LES,4.地址传送指令(Address Transfer) (2)装入地址指针指令(Load Effective Address)LDS/LE
16、S 例4-7,2.算术运算类指令(Arithmatic instructions),1.加法运算指令(Addition) (1)加法指令(Addition)ADD 例4-8,(2).带进位加法指令(Add with Carry)ADC (3).加1指令(Increment)INC 2.减法运算指令 (1)减法指令(Subtraction)SUB (2)带借位减法指令(Subtract with Borrow)SBB (3)减一指令(Decrement)DEC (4)求负数指令(Negative)NEG (5)比较指令(Compare)CMP,2.算术运算类指令(Arithmatic instr
17、uctions),减法指令(Subtraction)SUB,3.乘法指令 (1)无符号数乘法指令MUL (2)带符号数除法指令IMUL,2.算术运算类指令(Arithmatic instructions),乘法指令,4.乘法指令 (1)无符号数除法指令DIV (2)带符号数除法指令IDIV (3)字节/字符号扩展指令CBW/CWD,2.算术运算类指令(Arithmatic instructions),除法指令,5.BCD码校正指令 (1)非组合型加法校正指令(ASCII Adjust for Addition)AAA (2)组合型加法校正指令(Decimal Adjust for Additi
18、on)DAA (3)非组合型减法校正指令(ASCII Adjust for Subtraction)AAS (4)组合型减法校正指令(Decimal Adjust for Subtraction)DAS,2.算术运算类指令(Arithmatic instructions),3.位操作类指令(Bit manipulation instructions),3.位操作类指令(Bit manipulation instructions),3.位操作类指令(Bit manipulation instructions),3.位操作类指令(Bit manipulation instructions),3.位
19、操作类指令(Bit manipulation instructions),3.位操作类指令(Bit manipulation instructions),4.串操作类指令(String instructions),1.取串指令(Load String)LODS 2.存串指令(Store String)STOS 3.串传送指令(Move String)MOVS 4.串比较指令(Compare String)CMPS/CMPB/CMPD 5.串搜索指令(Scan String )SCAS/SCAB/SCAW 6.重复前缀指令(Repeat)REP/REPE/REPZ/REPNE/REPNZ,6.处理器控制类指令(Processor control instructions),1.标志位操作指令 2.与外部事件同步的指令 3.空操作指令,