版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机的编程结构课件计算机的编程结构课件默认16位段+偏移寻址组合段偏移地址主要用途CSIP指令地址SSSP或BP堆栈地址DSBX,SI,DI,变量名,8或16位数数据地址ESDI(目的串偏移地址)目的串地址 牛牛文库文档分享默认16位段+偏移寻址组合段偏移地址主要用途CSIP指令地址默认32位段+偏移寻址组合段偏移地址主要用途CSEIP指令地址SSESP或EBP堆栈地址DSEAX,EBX,ECX,EDX,ESI,EDI,变量名,8或32位数数据地址ESEDI(目的串偏移地址)目的串地址FS无默认一般地址GS无默认一般地址 牛牛文库文档分享默认32位段+偏移寻址组合段偏移地址主要用途CSEIP
2、指令地微机硬件系统用总线将微处理器、存储器和各种输入输出设备接口电路连接在一起的计算机体系结构存储器 ROM存储器 RAM微处理器CPU I/O接口 I/O设备ABDBCB 牛牛文库文档分享微机硬件系统用总线将微处理器、存储器和各种输入输出设备接口电计算机的编程结构1.连接系统各部件2.在部件间传送数据3.数据分类:数值、地址、命令或状态总线部件算术运算和逻辑运算寄存器:分别命名内存:按字节统一编址I/O端口:每一个端口分配1个地址 牛牛文库文档分享计算机的编程结构1.连接系统各部件总线部件算术运算和逻辑运算寄存器1)通用寄存器8个32位寄存器:EAX、EBX、ECX、EDX、ESP、EBP、
3、ESI和EDI8个16位寄存器:AX、BX、CX、DX、SP、BP、SI和DI8个8位寄存器:AH、BH、CH、DH、AL、BL、CL和DL2)段寄存器:CS、DS、ES、SS、FS和GS 3)指令指针寄存器:EIP(32位)和IP(16位)4)FLAGS(标志)寄存器:EFR(32位)和FR(16位) 牛牛文库文档分享寄存器1)通用寄存器 牛牛文库文档寄存器16位AXBXCXDXSPBPSIDI8位 8位32位AH ALBH BLCH CLDH DLEAXEBXECXEDXESPEBPESIEDIIPFLAGSEIPEFLAGSCSDSESSSFSGS 牛牛文库文档分享寄存器16位AXBXC
4、XDXSPBPSIDI8位 通用寄存器作用:通用寄存器经常被用来存放操作数和运算结果,有些也可以存放地址各个寄存器的专用目的EAX/AX/AL累加器(Accumulator)使用频度最高,用于算术和逻辑运算,串操作及I/O操作指令EBX/BX基址寄存器(Base Address Register)在某些寻址方式中存放地址偏移量ECX/CX计数寄存器(Count Register)在循环、移位和串操作等指令中作隐含计数器EDX/DX数据寄存器(Data Register)在双/四字长运算中存放高位数据,且DX存放I/O端口地址 牛牛文库文档分享通用寄存器作用:通用寄存器经常被用来存放操作数和运算
5、结果,有通用寄存器ESP/SP堆栈指针寄存器(Stack Pointer Register)作用:存放当前堆栈栈顶单元的偏移地址注意:ESP/SP只能在栈操作中提供栈顶偏移地址EBP/BP基址指针寄存器(Base Pointer Register) 在某些寻址方式中,参与形成堆栈存储单元的有效地址注意:ESP/SP和EBP/BP与SS联合使用,确定堆栈段中存储单元的物理地址,用于堆栈内存单元的寻址BX作为基址寄存器指向数据段;BP作为基址寄存器指向堆栈段。 牛牛文库文档分享通用寄存器ESP/SP堆栈指针寄存器BX作为基址寄存器指向通用寄存器ESI/SI和EDI/DI的作用:在内存操作数寻址中提
6、供内存单元的偏移地址在串操作中,2寄存器的专用目的:ESI/SI源变址寄存器(Source Index Register)在串操作中存放源串偏移地址EDI/DI目的变址寄存器(Destination Index Register)在串操作中存放目的串的偏移地址EBX/BX、ESI/SI和EDI/DI作为地址指针默认地指向数据段;而EBP/BP作为地址指针默认地指向堆栈段 牛牛文库文档分享通用寄存器ESI/SI和EDI/DI的作用:EBX/BX、E段寄存器存储器分段管理的原因:8086有20条地址线最大可编址:220=1MB内存空间8086CPU内部地址寄存器为16位16位寄存器寻址范围:216
7、=64KB 牛牛文库文档分享段寄存器存储器分段管理的原因: 牛段寄存器解决方案:用2个16位寄存器描述内存单元地址分段管理内存实施办法:将正运行程序的指令、数据和系统暂存数据分别放在不同段中段寄存器提供各段首地址的高16位(段基值)由段基值和有效地址(偏移地址)合成内存单元的物理地址段容量:64KB 牛牛文库文档分享段寄存器解决方案: 牛牛文库文档分段寄存器CS代码段寄存器(Code segment Register)代码段:存放当前正在运行的程序的指令SS堆栈段寄存器(Stack segment Register)堆栈段:存放按“后进先出”原则存取的数据DS数据段寄存器(Data segme
8、nt Register)数据段:存放原始数据和程序运行结果ES附加段寄存器(Extra segment Register)附加段:存放原始数据和程序运行的中间结果在串操作中存放目的操作数FS和GS32位微处理器中的附加段寄存器每个段寄存器用来确定一个逻辑段的起始地址 牛牛文库文档分享段寄存器CS代码段寄存器(Code segment Reg段寄存器当前段1个程序划分段的数目是任意的;由CS、SS、DS、ES、FS和GS指向的段是当前段;在一个程序运行的任一时刻,最多有6个当前段在一个程序运行的任一时刻,最少有1个当前段:即由CS指向的代码段。需要时,编程更换段寄存器的内容,可使其它段成为当前段
9、。例:某程序已建立2个数据段D1和D2:当DS指向D1时,D1是当前段;如程序需要访问D2某存储单元,必须编程将D2段首地址装入DS,使D2成为当前数据段。 牛牛文库文档分享段寄存器当前段 牛牛文库文档分享段寄存器段基值:段寄存器内容段基址:段首地址(20位)偏移地址/偏移量(有效地址):一个内存单元与它所在段的段基址之间的距离(以字节计算)。位移量:一个内存单元与所在段内另一内存单元之间的距离(以字节计算)。注意:默认情况,每个段第一个字节的偏移地址等于0。偏移地址段基址段基值CSDSSSES位移量 牛牛文库文档分享段寄存器段基值:段寄存器内容偏移地址段基址段基值CSDSSS代码段(Code
10、 Segment)用途:存放程序的指令序列代码段地址形成:段寄存器CS:提供代码段段基值指令指针寄存器EIP/IP:指示代码段的偏移地址CPU利用CSEIP(IP)合成欲取指令的物理地址 牛牛文库文档分享代码段(Code Segment)用途:存放程序的指令序列w堆栈段(Stack Segment用途:1.存放中断调用及子程序调用时程序保存的断点2.存放程序使用的原始数据及中间结果堆栈段地址形成:堆栈段寄存器SS堆栈指针寄存器ESP/SP:指示堆栈栈顶的偏移地址CPU利用SSESP(SP)在堆栈顶部内存单元存取数据 牛牛文库文档分享堆栈段(Stack Segment用途:www.niuwk数据
11、段(Data segment用途:存放运行程序所用原始数据及中间和最终结果数据段地址形成:数据段寄存器DS有效地址(EA):各种存储器寻址方式得到的内存操作数的偏移地址CPU利用DSEA存取数据段中的数据串操作指定将数据段作为源操作数的存放区域,其地址由DSSI给出 牛牛文库文档分享数据段(Data segment用途:www.niuwk.附加段(Extra segment)用途:保存数据附加段地址形成:附加段寄存器ES有效地址(EA):各种存储器寻址方式得到的内存操作数的偏移地址CPU利用ESEA存取附加段中的数据串操作指定将附加段作为目的操作数的存放区域,其地址由ESDI给出。 牛牛文库文
12、档分享附加段(Extra segment)用途:保存数据www.n指令指针寄存器(EIP/IP)(Instruction Pointer Register)功能:指示代码段中要取出指令的偏移地址与代码段段寄存器合成下一条欲取指令的物理地址CPU通过CSIP控制指令序列执行的流程注意:程序运行过程中,IP值不断修改 牛牛文库文档分享指令指针寄存器(EIP/IP)(Instruction Po标志寄存器(EFR/FR)(Extended Flag Register,缩写EFR或Flags)(Flag Register,缩写FR或Flag)功能:记录程序执行时的状态或控制指令执行8086提供1个16
13、位的标志寄存器其中共有9个常用标志位 牛牛文库文档分享标志寄存器(EFR/FR)(Extended Flag Re标志寄存器常用标志的分类6个状态标志:名称:CF,ZF,SF,PF,OF,AF功能:记录程序运行结果的状态信息3个控制标志名称:DF,IF,TF 功能:控制微处理器的操作和系统所处的工作方式 牛牛文库文档分享标志寄存器常用标志的分类 牛牛文库进位标志CF(Carry Flag)进位标志:CF作用:当运算结果的最高有效位有进位(加法)或借位(减法)时CF1,否则CF0。例1:3AH7CH=B6H 例2:AAH+7CH=(1)26H 00111010+ 01111100 1011011
14、0 10101010+ 01111100 100100110进位没有进位:CF0有进位:CF1 牛牛文库文档分享进位标志CF(Carry Flag)进位标志:CF例1:3A零标志ZF(Zero Flag)零标志:ZF作用:若运算结果为0,则ZF=1;否则ZF=0例1:3AH+7CH=例2:84H+7CH= B6H结论:运算结果不是零,ZF0 (1)00H结论:运算结果是零,ZF1,CF=1 牛牛文库文档分享零标志ZF(Zero Flag)零标志:ZF例1:3AH+7符号标志SF(Sign Flag)符号标志:SF作用:运算结果最高位为1,SF=1;否则SF=0带符号数的符号位指示了符号标志的状
15、态例1: 3AH+7CH=B6H例2: 84H+7CH=(1)O0H 最高位D71,SF1 最高位D70,SF0 牛牛文库文档分享符号标志SF(Sign Flag)符号标志:SF例1: 3A奇偶标志PF(Parity Flag)奇偶标志:PF作用:运算结果低8位有偶数个“l” 时,PFl;否则PF0注意:置标志结果与操作数的长度无关例:3AH+7CH=B6H因为:B6H =10110110B结果中有5个1,是奇数,故PF0 牛牛文库文档分享奇偶标志PF(Parity Flag)奇偶标志:PF例:3A溢出标志OF(Overflow Flag)溢出标志:OF作用:若带符号数算术运算结果超出给定位数
16、所能表示的范围称为溢出,则OF=1;否则OF=0下面以带符号数加法为例例1:58+124=182换算为16进制:3AH+7CH=B6H结果产生溢出,OF1 牛牛文库文档分享溢出标志OF(Overflow Flag)溢出标志:OF下面何谓溢出CPU内部用补码表示符号数8位符号二进制整数数值范围:-128 +12716位二进制数数值范围:-32768+32767若运算结果超出上述范围,就产生了溢出有溢出,说明运算结果出错 牛牛文库文档分享何谓溢出CPU内部用补码表示符号数何谓溢出实例分析: 3AH+7CH=B6H分析1:因为上例即58+124=182,结果超出 128127范围,故产生溢出,OF1
17、分析2:结果B6H的真值是74,原题为两正数相加,结果显然不应该是负数,故产生溢出,OF1 牛牛文库文档分享何谓溢出实例分析: 3AH+7CH=B6Hwww.niuwk如何判断溢出判断运算结果是否溢出的规则:两个同号数相加(或两个异号数相减)时,若运算结果的符号与原数据符号相反,表示溢出。其他情况,不会产生溢出 牛牛文库文档分享如何判断溢出判断运算结果是否溢出的规则:www.niuwk.CF和OF对比CF判断无符号数运算结果是否超出范围:8位运算:025616位运算:065535运算结果正确OF判断符号数运算结果是否超出范围:8位符号整数数值范围: 128+12716位数数值范围:32768+
18、32767运算结果不正确(数值部分进位至符号位) 牛牛文库文档分享CF和OF对比CF判断无符号数运算结果是否超出范围:www.如何使用CF和OFCPU对两操作数进行运算时,按照无符号数求得结果,并设置CF;同时,根据该结果是否超出符号数数值范围设置OF。在程序中具体应该利用哪个标志控制程序流向,由程序员决定。即如果参加运算的数被认为是无符号数,就应该关心CF,若认为是符号数,则要注意结果是否溢出。 牛牛文库文档分享如何使用CF和OFCPU对两操作数进行运算时,按照无符号数求练习:符号数补码运算练习1: 01100100+ 01100100 11001000结论:CF0 OF=1 结果出错练习2
19、:练习3: 10101011+ 11111111 110101010结论:CF1 OF=0 结果正确 10101011+ 10001011 100110110结论:CF1 OF=1 结果出错 牛牛文库文档分享练习:符号数补码运算练习1: 01100100 11辅助进位标志AF(Auxiliary Carry Flag)辅助进位标志:AF作用:在进行字节算术运算时,若D3位(低半字节)向D4位有进位(加法)或借位(减法)时,AFl;否则AF0说明:字加/减法、双字加/减法则以D7位向D8位或D15位向D16位有无进/借位判断应用: AF可用于BCD码运算的调整例:3AH+2CH=66H 0011
20、1010+ 00101100 01100110半进位结果:D3有进位;AF1 牛牛文库文档分享辅助进位标志AF(Auxiliary Carry Flag)方向标志DF(Direction Flag)方向标志:DF作用:用于在串操作中控制地址变化的方向。设置DF=0,变址寄存器ESI/SI和EDI/DI自动增量设置DF=1,变址寄存器ESI/SI和EDI/DI自动减量 牛牛文库文档分享方向标志DF(Direction Flag)方向标志:DFw中断允许标志IF(Interrupt-enable Flag)中断允许标志:IF作用:用于控制外部可屏蔽中断是否可以被CPU响应。设置IF=l,开中断,C
21、PU响应外部可屏蔽中断请求;设置IF=0,关中断,CPU不响应外部可屏蔽中断请求。 牛牛文库文档分享中断允许标志IF(Interrupt-enable Fla单步标志TF(Trap Flag)单步标志:TF作用:用于控制CPU进入单步操作方式设置TF=0,CPU正常工作设置TF=l,CPU执行完当前指令后产生单步中断,然后由单步中断服务程序把IF置0 。应用:在调试程序DEBUG中,可利用单步命令,在每条指令执行完后停下来查看结果。 牛牛文库文档分享单步标志TF(Trap Flag)单步标志:TFwww.ni存储器(Memory)CPU与内存间的信息交换内存单元简介32位微处理器的工作方式存储
22、器的段结构逻辑地址与物理地址 牛牛文库文档分享存储器(Memory)CPU与内存间的信息交换www.niu地址译码电路 MAR MDR 内存控制电路控制CPUCPU地址CPU数据CPU与内存间的信息交换内存框图内存单元 牛牛文库文档分享地址译码电路 MDR 内存控制电路控制C内存单元简介内存单元:内存中信息存取的基本单位(1个字节)内存单元地址:无符号二进制整数内存单元编号(例如8086系统):内存单元内容:存放程序运行时使用的指令和数据数据以字节/字/双字等数据类型存储于内存单元D7 D6 D5 D4 D3 D2 D1 D021010H 牛牛文库文档分享内存单元简介内存单元:内存中信息存取的
23、基本单位(1个字节)D32位微处理器的工作方式实地址方式Real Address Mode虚拟地址方式(保护方式)Protected Virtual Address Mode虚拟8086方式Virtual 8086 Mode 牛牛文库文档分享32位微处理器的工作方式实地址方式32位微处理器的工作方式8086只能工作于实地址方式80286以上的微处理器工作于实模式或保护模式80386以上的微处理器可工作于实模式、保护模式和虚拟8086模式注意:1.DOS要求微处理器工作于实模式2.32位微处理器为向下兼容仍保留实模式3.80286以上的微处理器每次加电或复位后都默认地以实模式开始工作4.实模式下
24、,为8086编写的程序可在32位微处理器直接运行 牛牛文库文档分享32位微处理器的工作方式8086只能工作于实地址方式www.实地址方式实模式只允许微处理器寻址第1个1MB存储器空间注意:1.第1个1MB存储器亦称为常规内存2.32位地址线中的A31A20不起作用!以8086为例,学习实地址方式!8086CPU有20条地址线(A19A0)最大可寻址的内存空间为220=1MB内存物理地址范围从00000H0FFFFFH注意:每一个内存单元都有唯一的物理地址 牛牛文库文档分享实地址方式实模式只允许微处理器寻址第1个1MB存储器空间ww8086的数据格式字节数据:以无符号数和符号整数形式存储于1个内
25、存单元中字节: D7D0例:12H12H20101H20102H20103H20104H 牛牛文库文档分享8086的数据格式字节数据:12H20101H201028086数据格式字数据(由相邻两个字节的数据组成):用地址较小的内存单元的地址作为该字单元的地址数据的低8位存放在地址较小的内存单元中,数据的高8位存放在地址较大的内存单元中8086要在访问内存数据前定义其数据类型字: D15D0例:1234H34H20101H20102H20103H20104H12H 牛牛文库文档分享8086数据格式字数据(由相邻两个字节的数据组成):348086数据格式双字数据(由相邻4个字节的数据组成):用地址
26、最小的内存单元的地址作为该双字数据的地址;数据的低8位存放在地址最小的内存单元中,数据的高8位存放在地址最大的内存单元中;双字: D31D0例:12345678H34H20101H20102H20103H20104H12H56H78H 牛牛文库文档分享8086数据格式双字数据(由相邻4个字节的数据组成):38086的数据格式多字节数据在内存中占据连续多个存储单元。Intel系列微处理器采用“低对低、高对高”的存储方式,称为小端方式(Little Endian);Motorola系列微处理器采用“低对高、高对低”的存储方式,称为大端方式(Big Endian)。例:在内存中存储数据1234567
27、8H56H20101H20102H20103H20104H78H34H12H34H20101H20102H20103H20104H12H56H78H小端方式大端方式 牛牛文库文档分享8086的数据格式多字节数据在内存中占据连续多个存储单元。存储器的段结构8086分段管理1MB内存逻辑段:在源程序中用段定义伪指令定义的段物理段:内存中由段寄存器指定的段每个段是1个可独立寻址的逻辑单位:段基址=段寄存器(CS,DS,ES,SS)10H段基址高16位由段寄存器提供,低4位为0000B默认情况下,段基址为16的整数倍段内偏移地址由16位寄存器(IP, SP, BP, BX, SI, DI)提供段容量:216=64KB 牛牛文库文档分享存储器的段结构8086分段管理1MB内存www.niuwk.逻辑地址与物理地址逻辑地址定义:用段基值和偏移地址表示内存单元地址的形式格式:段基值段内偏移地址优点:在程序设计中使用逻辑地址有利于程序开发和对内存的动态管理物理地址定义:对应每个内存单元的唯一的20位二进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年长江产业集团创新投资事业部一线基金管理团队社会招聘备考题库(二)及参考答案详解1套
- 2025年深圳市南山区前海时代第二幼儿园招聘备考题库及完整答案详解一套
- 2025年上海大学诚聘上海电影学院院长备考题库及一套答案详解
- 蓝色扁平插画风科技互联网年会盛典模板
- 2025年长江产业集团创新投资事业部一线基金管理团队社会招聘备考题库(二)及答案详解参考
- 佛山市南海区人民医院2026年度合同制专业技术人员(第一批)招聘备考题库及参考答案详解1套
- 首都医科大学附属北京胸科医院2026年派遣岗位招聘31人备考题库参考答案详解
- 2025年中国科协所属单位公开招聘应届高校毕业生33名备考题库及1套完整答案详解
- 丰林县2025年度公开招聘(编外)医生的备考题库及一套参考答案详解
- 南京鼓楼医院2026年公开招聘卫技人员备考题库含答案详解
- 规范使用执法记录仪课件
- 餐厨垃圾高温好氧堆肥技术方案
- 可转债券投资协议书范本
- 非高危行业主要负责人和安全管理人员试题库试题及答案
- 六氟磷酸锂项目可行性建议书-
- 学堂在线 雨课堂 学堂云 海上求生与救生 期末考试答案
- 骨科冰敷健康宣教
- 集团生产会议管理办法
- 山东省高二物理会考20252025年真题
- 高级英语2 (第四版)张汉熙 练习答案
- 期货开户测试题及答案
评论
0/150
提交评论