1、第二章 IBM-PC计算机系统概述CPU内部结构、寄存器、存储器2.1 CPU功能结构n从存储器中取出一条指令n分析指令的操作码n从存储器中取出所需要的操作数n执行指令n将结果写入存储器n重复下一个指令周期 取指令和执行指令可同时执行,从而可以加取指令和执行指令可同时执行,从而可以加速程序的运行速度速程序的运行速度AHALBHBLCHCLDHDLSPBPSIDI标志DSSSES内部寄存器CS1 2 3 4 5 6暂存器ALUEU控制器ALU总线控制电路通用寄存器通用寄存器ALU数据总线(16位)执行单元执行单元EU总线接口单元总线接口单元BIU8086总线(8位)队 列 总 线数据总线地址总线
2、(20位)(16位)指令队列指令队列8086/8088CPU结构框图8086/8088寄存器结构寄存器寄存器:CPU内部暂存数据的部件,与ALU可保持同步,速度快,但数量有限(1)通用寄存器数据寄存器数据寄存器AHALBHBLCHCLDHDL15 87 0AXBXCXDX1、用来保存算术运算和逻辑运算的操作数和中间结果2、4个16位的寄存器,又可以分开作8位的寄存器使用,例AX可分为AH和AL使用3、AX又称累加器,BX称基址寄存器,CX称计数寄存器,DX称数据寄存器8086/8088寄存器结构地址指针和地址指针和变址寄存器变址寄存器SPBPSIDI1、四个16位的寄存器,不能分开不能分开使用
3、使用2、SP称为堆栈指针,用来表示栈顶的偏移地址3、BP称为基址指针寄存器4、SI称为源变址寄存器,DI称为目的变址寄存器堆栈:在计算机中用来存放数据的特殊存储区域,按堆栈:在计算机中用来存放数据的特殊存储区域,按“先进后先进后出,后进先出出,后进先出”的原则进行数据操作的原则进行数据操作8086/8088寄存器结构(2)段寄存器8086/8088中,将存储空间划分为四种逻辑段,它们是:CS(代码段):用于存放指令的空间DS(数据段):用于存放程序中所需操作数的空间SS(堆栈段):用于存放程序运行中需要保护的数据空间ES(附加段):用于存放操作数的存储空间每个段的段地址则存放在相应的段寄存器中
4、(参考每个段的段地址则存放在相应的段寄存器中(参考2.2节)节)2006.2.17补码加减运算规则和计算机中的实现过程1.以补码形式存在2.符号位参加运算3.最高位产生的进位可自然丢失4.硬件电路简单,容易实现8086/8088CPU的通用寄存器结构1.通用寄存器AX、BX、CX、DX2.地址和指针寄存器SP、BP、SI、DI3.段寄存器CS、DS、SS、ES寄存器的名字!寄存器的长度!8086/8088寄存器结构(3)指令指示器IP1、16位的寄存器2、指向下一条要执行的指令或下一个指令字节的地址3、每取出一个指令字节,IP则自动加1注意:注意: 程序员不能直接访问IP,但可以通过指令改变I
5、P值,从而改变程序的执行顺序b86400050001代码段IP自动加18086/8088寄存器结构(4)程序状态字PSW1、16位的寄存器2、反映算术运算和逻辑运算的结果特征,及控制后续指令的运行3、可以通过程序设置或清除PSW中的特征 O D I T S Z A P C O D I T S Z A P C (进)借位标志 奇偶标志位半(进)借位标志零标志位负号标志位单步标志位允许中断标志位增量方向标志位溢出标志位CF:判断算术运算的最高位是否有(进)借位,0无,1有PF:判断运算结果中是否有偶数个1, 0奇,1偶 AF:判断算术运算的第3位是否有(进)借位, 0无,1有ZF:判断运算结果是否
6、为零, 0不为零,1是零SF:判断运算结果是否为负数, 0为正,1为负OF:判断运算结果是否有溢出错误,0没有,1溢出DF:用于串操作指令IF:用于中断请求是否能被响应的判断TF:陷阱标志,用于程序调试 O D I T S Z A P C 2.2 8086/8088存储器组织低字节单元高字节单元字单元0000000002000040000600008FFFFE0000A0000100003000050000900007FFFFF0000B15 8 7 01、8086/8088是16位的CPU,字长为162、8086/8088的地址为20位,即寻址能力为1MB(220)3、 按字节编号的计算机,
7、既可以按字节访问,也可以按字访问存储容量单位存储容量单位:1KB=1024B,1MB=1024KB=1024 1024B65536B=26 210B=64KB8086/8088存储器组织7 0576A912B0000000001000020000300004FFFFF000050000600007FFFFE(00002H)=57H(00003H)=6AH(00005H)=91H(00006H)=2BH(00002H)=6A57H(规则字)(00005H)=2B91H(非规则字)字节访问:字节访问:字访问:字访问:存储器的分段结构段地址ALU偏移地址15 015 020位的物理地址00001、解
8、决用16位的机器字长,提供20位的物理地址(1MB的寻址范围)的矛盾2、每个段的最大长度不超过64MB(216),且每个段的起始地址必须能被16整除,即20位的最低4位为00003、段地址*10H+偏移地址=物理地址存储器为什么要分存储器为什么要分段?如何分段?如何分段?段?存储器的分段结构7 0576A912B3000030001FFFFF304003040130402FFFFE3040330404段地址3040偏移地址0004物理地址30404段地址3000偏移地址0404几个概念:几个概念:1、物理地址:每个单元唯一确定的20位的地址,如303042、段地址:每个段的起始地址的高16位3
9、、偏移地址:要访问的存储单元与段始址的偏移距离4、逻辑地址:16位的段地址和16位的偏移地址多个逻辑地址可对应同一个物理地址,多个逻辑地址可对应同一个物理地址,如:如:3000:0404与与3040:0004都都对应物理地址对应物理地址30404逻辑地址的来源操作类型操作类型正常使用段正常使用段可替换段可替换段偏移地址偏移地址取指令堆栈操作变量(除以下情况)源数据串目的数据串BP作基地址寄存器CSSSDSSIDISS无无CS、ES、SSCS、ES、SS无CS、ES、SSIPSP有效地址EASIDI有效地址EAIntel80 x86微处理器简介(一)80286微处理器1、特点16位的微处理器,与
10、8086向上兼容存储器可以在实地址和保护虚地址两种方式下访问2、寄存器结构 共15个16位的寄存器,13个与8086完全相同,不同的有以下两个:(1)标志寄存器增加了3位(2)增加了机器状态字寄存器MSW TS EM MP PE MSWIntel80 x86微处理器简介(一)80386微处理器1、特点32位的微处理器,向上兼容,寻址能力为4GB(232)有实地址、保护虚地址和虚拟8086三种工作模式允许多条指令重叠操作2、寄存器结构8个32位的通用寄存器,可进行8位、16位和32位操作2个32位的状态寄存器6个16位的段选择寄存器系统地址寄存器3个32位的控制寄存器8个调试寄存器和2个测试寄存
11、器Intel80 x86微处理器简介(一)80486微处理器1、特点32位的微处理器,比80386的速度高23倍浮点运算器,8KB的高速缓存(Cache)采用RISC(简单指令系统的计算机)技术支持多处理机系统2、寄存器结构与80386没有区别习题 1、有两个16位的字节数据和1个8位和字节数据,BFD2H、92B7H和39H,分别存放在000D4H、000D7H和000D9H单元中,试画出存储示意图 2、段地址和偏移地址为2001H、0011H的存储单元的物理地址是什么?如果段地址和偏移地址为101AH、1000H和5A00H、130CH呢? 3、如果一个程序在开始执行前,(CS)=0A7F0H,(IP)=2B40H,试问该程序的第一条指令的物理地址是多少?D2BF B792 39000D3000D4000D5000D6000D7000D8000D9000DA物理地址=段地址*10H+偏移地址=2001H*10H+0011H=20021H=101AH*10H+1000H=111A0H=5A00H*10H+130CH=5B30CH涉及分段的其他问题 a)1M内存空间总共可以分多少个段?xxxx0h b)每个段最大可以包括多少个存储单元? c)xxxxH:0000H是段内哪一个单元?其物理地址是多少?