2寄存器结构存储器管理00154课件_第1页
2寄存器结构存储器管理00154课件_第2页
2寄存器结构存储器管理00154课件_第3页
2寄存器结构存储器管理00154课件_第4页
2寄存器结构存储器管理00154课件_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、 基本结构寄存器基本结构寄存器通用数据寄存器通用数据寄存器SIESIESI、SI:数据段源变址指针寄存器数据段源变址指针寄存器BPEBPEBP、BP:堆栈段基址指针寄存器堆栈段基址指针寄存器SPESPESP、SP:堆栈段栈顶指针寄存器堆栈段栈顶指针寄存器DHDLDXEDXEDX、DX、DH、DL:间接间接I/O操作;双操作;双字乘字乘/除除CXCHCLECXECX、CX、CH、CL:循环计数;重复串循环计数;重复串操作;可变移位、循环移位操作。操作;可变移位、循环移位操作。EBX、BX、BH、BL:查表转换;基地址。查表转换;基地址。BXBHBLEBXEAX、AX、AH、AL:加减;加减;BC

2、D、ASCII调整;字节到字,字到双字转换;乘调整;字节到字,字到双字转换;乘/除,串除,串操作,操作,I/O操作等。操作等。AXAHALEAXEDI、DI:数据段目的变址指针寄存器数据段目的变址指针寄存器DIEDI1. 8086/8088CPU的功能结构的功能结构8086的寄存器结构的寄存器结构OFOF DFDF IFIF TFTF SFSF ZFZFAFAFPFPFCFCF0 015152 24 45 56 67 78 89 91010AHAHALALBHBHBLBLCHCHCLCLDHDHDLDLSPSPBPBPSISIDIDIIPIPPSWPSWCSCSDSDSSSSSESESAXAX

3、BXBXCXCXDXDX累加器累加器基址基址计数计数数据数据数据寄存器数据寄存器0 015150 07 78 815150 015150 01515附加数据段附加数据段堆栈段堆栈段数据段数据段代码段代码段段寄存器段寄存器指令指针指令指针状态标志状态标志控制寄存器控制寄存器堆栈指针堆栈指针基址指针基址指针 源变址源变址目的变址目的变址指针寄存器指针寄存器变址寄存器变址寄存器通通用用寄寄存存器器1、通用寄存器、通用寄存器通用寄存器包括:通用寄存器包括: 数据寄存器、地址指针寄存器、变址寄存器数据寄存器、地址指针寄存器、变址寄存器。 数据寄存器包括数据寄存器包括: AX 、BX 、CX 、DX 。

4、地址指针寄存器包括地址指针寄存器包括: SP 、 BP 。 变址寄存器包括变址寄存器包括: SI 、 DI 。2、段寄存器、段寄存器 段寄存器包括段寄存器包括: CS 、 SS 、 DS 、 ES 。3、控制寄存器、控制寄存器 控制寄存器包括:控制寄存器包括:IP 、PSW。1、通用寄存器、通用寄存器(1)数据寄存器)数据寄存器AX、BX、CX、DX 作为通用寄存器。作为通用寄存器。 用来暂存计算过程中所用到的操作数,结果或其它信用来暂存计算过程中所用到的操作数,结果或其它信息。息。 访问形式访问形式:可以用可以用16位的访问位的访问; 或者可以用字节(或者可以用字节(8位)位)形式访问形式访

5、问,它们的它们的高高8位记作位记作 : AH 、 BH 、 CH 、 DH 。它们的它们的低低8位记作位记作 : AL 、BL 、CL 、DL 。AX(Accumulator)作为作为累加器累加器。 它是算术运算的主要寄存器,它是算术运算的主要寄存器,所有所有I/O指令都使用这一寄存器与外部设备交换数据。指令都使用这一寄存器与外部设备交换数据。例:例: IN AL , 20HOUT 30H , AXBXBase用作用作基址寄存器基址寄存器使用。使用。 在计算内存储器地址时,经常用来存放基址。在计算内存储器地址时,经常用来存放基址。例:例:MOV AX, BX+03HCXCount可以可以作计数

6、寄存器作计数寄存器使用。使用。 在循环在循环LOOP指令和串处理指令中用作隐含计数器。指令和串处理指令中用作隐含计数器。例:例:MOV CX , 200HAGAIN:LOOP AGAIN ;(CX)-1(CX),结果结果 0转转AGAINDXData可以可以作为数据寄存器使用。作为数据寄存器使用。一般在双字长乘除法运算时,一般在双字长乘除法运算时, 把把DX和和AX组合在一起存放一个双字长组合在一起存放一个双字长(32位位)数,数,DX用来存放高用来存放高16位位; 对某些对某些I/O操作操作DX可用来存放可用来存放I/O的端口地址(口地址的端口地址(口地址 256)。)。例:例:MUL BX

7、 ; (AX) (BX)(DX)(AX)例例:IN AL , DX(2)地址指针与变址寄存器)地址指针与变址寄存器: 段起始地址段起始地址 SP、BP、SI、DI 四个四个16位寄存器。位寄存器。以字为单位在运算过程中存放操作数,以字为单位在运算过程中存放操作数,经常用以在段内寻址时提供偏移地址。经常用以在段内寻址时提供偏移地址。 段内偏移地址段内偏移地址段地址段地址 :只取段起始地址高只取段起始地址高16位值。位值。偏移地址偏移地址:指在段内某内存单元物理地址相对段起始地址的偏移值。指在段内某内存单元物理地址相对段起始地址的偏移值。 高高16位值位值 0000B地址指针寄存器地址指针寄存器(

8、SP 、 BP ) SP(stack pointer)堆栈指针寄存器堆栈指针寄存器 用来指示栈顶的偏移地址用来指示栈顶的偏移地址, 必须与必须与SS段寄存器联合使用确定实际地址。段寄存器联合使用确定实际地址。 堆栈和指针如下页图所示。堆栈和指针如下页图所示。 BP(base pointer)基址指针寄存器基址指针寄存器 可以与可以与SS寄存器联合使用来确定堆栈段中某一存储器单元地址。寄存器联合使用来确定堆栈段中某一存储器单元地址。 变址寄存器变址寄存器(SI 、 DI)SISource Index Register 源变址寄存器。源变址寄存器。DIDestination Index 目的变址寄

9、存器目的变址寄存器。使用场合:常用于变址寻址。使用场合:常用于变址寻址。 一般与一般与DS联用,用来确定数据段中某一存储单元的地址,联用,用来确定数据段中某一存储单元的地址, SI , DI具有自动增量和自动减量功能具有自动增量和自动减量功能.例:例:MOV AX, SI在串处理指令中,在串处理指令中,SI、DI作为隐含的源变址和目的变址寄作为隐含的源变址和目的变址寄 存器分别达到在数据段和附加段中寻址的目的。存器分别达到在数据段和附加段中寻址的目的。 执行示意图如右图。执行示意图如右图。例:例:MOV SI , 2000HMOV DI , 3000HMOV CX, 100HCLD.MOVSB

10、.3000H:2000H3000H:2000H3000H:2100H3000H:2100H5000H:3000H5000H:3000H5000H:3100H5000H:3100HDS:2000HDS:20FFHDS:2000HDS:20FFHES:3000HES:30FFHES:3000HES:30FFH(DS)(DS)(SI)(SI)(ES)(ES)(DI)(DI)存储器存储器 串处理指令执行示意图串处理指令执行示意图2、段寄存器、段寄存器段寄存器段寄存器: 4个个16位段寄存器位段寄存器CS、DS、SS、ES。用来识别当前可寻址的四个段,不可互换的使用。用来识别当前可寻址的四个段,不可互换

11、的使用。CSCode Segment Register 代码段寄存器代码段寄存器 用来识别当前代码段(程序一般放在代码段)。用来识别当前代码段(程序一般放在代码段)。DSData Segment Register数据段寄存器数据段寄存器 用来识别当前数据段寄存器。用来识别当前数据段寄存器。SSStack Segment Register堆栈段寄存器,堆栈段寄存器, 用来识别当前堆栈段。用来识别当前堆栈段。ESExtra Segment Register附加段寄存器附加段寄存器, 用来识别当前附加段。用来识别当前附加段。3、控制寄存器、控制寄存器控制寄存器控制寄存器:IP 、 PSWIPInst

12、ruction Pointer指令指针寄存器指令指针寄存器 用来存储代码段中的偏移地址用来存储代码段中的偏移地址; 程序运行过程中程序运行过程中IP始终指向下一次要取出的指令偏始终指向下一次要取出的指令偏移地址。移地址。IP要与要与CS寄存器相配合才能形成真正的物理地址。寄存器相配合才能形成真正的物理地址。FLAGS程序状态字寄存器,程序状态字寄存器, 16位寄存器。位寄存器。 由条件码标志由条件码标志FLAG、控制标志构成。控制标志构成。只用了其中只用了其中9位位, 6位位条件标志条件标志, 3位位控制标志。控制标志。标志寄存器标志寄存器-分类分类状态标志状态标志用来记录程序运行结果的状态用

13、来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它信息,许多指令的执行都将相应地设置它CF ZF SF PF OF AF控制标志控制标志可由程序根据需要用指令设置,可由程序根据需要用指令设置,用于控制处理器执行指令的方式用于控制处理器执行指令的方式DF IF TFOF1115 12DF10IF9TF8SF7ZF65AF43PF21CF0进位标志进位标志CF(Carry Flag)当运算结果的最高有效位有进位(加法)或借当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置位(减法)时,进位标志置1,即,即CF1; 否则否则CF03AH + 7CHB6H,没有进位:,没有进位

14、:CF = 0AAH + 7CH(1)26H,有进位:,有进位:CF = 1零标志零标志ZF(Zero Flag)若运算结果为若运算结果为0,则,则ZF1;否则否则ZF03AH7CHB6H,结果不是零:,结果不是零:ZF084H7CH(1)00H,结果是零:,结果是零:ZF1 注意:注意:ZF为为1表示的结果是表示的结果是0符号标志符号标志SF(Sign Flag)运算结果最高位为运算结果最高位为1,则,则SF1; 否则否则SF03AH7CHB6H,最高位,最高位D71:SF184H7CH(1)00H,最高位,最高位D70:SF0 有符号数据用最高有效位表示数据的符号有符号数据用最高有效位表示

15、数据的符号所以,最高有效位就是符号标志的状态所以,最高有效位就是符号标志的状态奇偶标志奇偶标志PF(Parity Flag)当运算结果最低字节中当运算结果最低字节中“1”的个数为的个数为零或偶数时,零或偶数时,PF1;否则;否则PF03AH7CHB6H10110110B结果中有结果中有5个个“1”,是奇数:是奇数:PF0 PF标志仅反映最低标志仅反映最低8位中位中“1”的个数是的个数是偶或奇,即使是进行偶或奇,即使是进行16位字操作位字操作溢出标志溢出标志OF(Overflow Flag)若算术运算的结果有溢出,则若算术运算的结果有溢出,则OF1; 否则否则 OF03AH + 7CHB6H,产

16、生溢出:,产生溢出:OF1AAH + 7CH(1)26H,没有溢出:,没有溢出:OF0什么是溢出什么是溢出处理器内部以补码表示有符号数处理器内部以补码表示有符号数8位表达的整数范围是:位表达的整数范围是:127 12816位表达的范围是:位表达的范围是:32767 32768如果运算结果超出这个范围,就产生了溢出如果运算结果超出这个范围,就产生了溢出有溢出,说明有符号数的运算结果不正确有溢出,说明有符号数的运算结果不正确3AH7CHB6H,就是,就是58124182,已经超出已经超出128127范围,产生溢出,故范围,产生溢出,故OF1;补码;补码B6H表达真值是表达真值是74,显然运算结果也

17、不正确,显然运算结果也不正确 B6H10110110B,最高位为,最高位为1,作为有符号数是负数作为有符号数是负数 对对B6H求反加求反加1等于:等于:01001001B101001010B4AH74 所以,所以,B6H表达有符号数的真值为表达有符号数的真值为74溢出和进位的区别溢出和进位的区别溢出标志溢出标志OF和进位标志和进位标志CF是两个意义不是两个意义不同的标志同的标志进位标志表示无符号数运算结果是否超出进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确范围,运算结果仍然正确溢出标志表示有符号数运算结果是否超出溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确范围,运

18、算结果已经不正确溢出和进位的对比溢出和进位的对比例例1:3AH7CHB6H无符号数运算:无符号数运算: 58124182范围内,无进位范围内,无进位有符号数运算:有符号数运算: 58124182范围外,有溢出范围外,有溢出例例2:AAH7CH(1)26H无符号数运算:无符号数运算: 170124294范围外,有进位范围外,有进位有符号数运算:有符号数运算: 8612428范围内,无溢出范围内,无溢出溢出和进位的应用场合溢出和进位的应用场合处理器对两个操作数进行运算时,按照无处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志符号数求得结果,并相应设置进位标志CF;同时,根据是

19、否超出有符号数的范围设置同时,根据是否超出有符号数的范围设置溢出标志溢出标志OF应该利用哪个标志,则由程序员来决定。应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出符号数,则要注意是否溢出溢出的判断溢出的判断判断运算结果是否溢出有一个简单的规则:判断运算结果是否溢出有一个简单的规则:只有当两个相同符号数相加(包括不同符号数相只有当两个相同符号数相加(包括不同符号数相减),而运算结果的符号与原数据符号减),而运算结果的符号与原数据符号相反相反

20、时,时,产生溢出;因为,此时的运算结果显然不正确产生溢出;因为,此时的运算结果显然不正确其他情况下,则不会产生溢出其他情况下,则不会产生溢出例例1:3AH7CHB6H溢出溢出例例2:AAH7CH无溢出无溢出例例3:3AH7CH无溢出无溢出例例4:AAH7CH2DH溢出溢出辅助进位标志辅助进位标志AF(Auxiliary Carry Flag)3AH7CHB6H,D3有进位:有进位:AF1运算时运算时D3位(低半字节)有进位位(低半字节)有进位或借位时,或借位时,AF1;否则;否则AF0这个标志主要由处理器内部使用,这个标志主要由处理器内部使用,用于十进制算术运算调整指令中,用于十进制算术运算调

21、整指令中,用户一般不必关心用户一般不必关心方向标志方向标志DF(Direction Flag)用于串操作指令中,控制地址的变化方向:用于串操作指令中,控制地址的变化方向:设置设置DF0,存储器地址自动增加;,存储器地址自动增加;设置设置DF1,存储器地址自动减少,存储器地址自动减少CLD指令复位方向标志:指令复位方向标志:DF0STD指令置位方向标志:指令置位方向标志:DF1中断允许标志中断允许标志IF(Interrupt-enable Flag)控制可屏蔽中断是否可以被处理器响应:控制可屏蔽中断是否可以被处理器响应:设置设置IF1,则允许中断;,则允许中断;设置设置IF0,则禁止中断,则禁止

22、中断CLI指令复位中断标志:指令复位中断标志:IF0STI指令置位中断标志:指令置位中断标志:IF1陷阱标志陷阱标志TF(Trap Flag)用于控制处理器进入单步操作方式:用于控制处理器进入单步操作方式:设置设置TF0,处理器正常工作;,处理器正常工作;设置设置TF1,处理器,处理器单步执行指令单步执行指令单步执行指令单步执行指令处理器在处理器在每条指令执行结每条指令执行结束束时,便产生一个编号为时,便产生一个编号为1的内部中断的内部中断这种内部中断称为这种内部中断称为单步中断单步中断所以所以TF也称为也称为单步标志单步标志n利用单步中断可对程序进行逐条指令的调试利用单步中断可对程序进行逐条

23、指令的调试n这种逐条指令调试程序的方法就是这种逐条指令调试程序的方法就是单步调试单步调试n存贮器的物理地址存贮器的物理地址以字节为最小基本存储单元的顺序编址。以字节为最小基本存储单元的顺序编址。 (2 22 02 0=1024K=1MB=1024K=1MB空间)从空间)从00000H00000H到到0FFFFFH0FFFFFH个单元的个单元的2020位绝对地址。位绝对地址。2AH?HBFH00000H00003H00002H00001HFFFFDHFFFFFHFFFFEHn存贮器数据存储存贮器数据存储 1.1.字节数据字节数据8 8位,对应每一地址存储一个数据位,对应每一地址存储一个数据2 8

24、086/8088存储器组织及其寻址存储器组织及其寻址 2. 2.字数据字数据1616位位 ,连续,连续2 2个字节数据构成一个字个字节数据构成一个字高高8 8位位字节对应字节对应高位地址高位地址, 低低8 8位位字节对应字节对应低位地址低位地址字的地址:字的地址:为低为低8 8位字节的地址位字节的地址规则字:规则字:偶地址字;偶地址字;非规则字:非规则字:奇地址字奇地址字 3. 3.双字数据双字数据3232位,类同字的存储位,类同字的存储存储器地址分段:存储器地址分段:8086有有20条地址总线,直接寻址能力为条地址总线,直接寻址能力为220=1M字节。字节。用用16进制数表示进制数表示1M字

25、节的地址范围应为字节的地址范围应为00000HFFFFFH。(1)、)、 8086内部内部20位物理地址形成位物理地址形成(2)、逻辑地址与物理地址)、逻辑地址与物理地址 (1)、)、8086内部内部20位物理地址形成位物理地址形成 存储器地址分段存储器地址分段 8086地址总线是地址总线是20位的,位的,CPU中的寄存器是中的寄存器是16位的,位的,20位地址无法用位地址无法用16位寄存器表示,必须分段。位寄存器表示,必须分段。程序员在编制程序时把存储器划分成段。程序员在编制程序时把存储器划分成段。段内地址段内地址16位位,每个段的大小最大可达每个段的大小最大可达64KB;实际可以根据需要来

26、确定段大小,可以是实际可以根据需要来确定段大小,可以是1,100,1000,在在64K范围内的任意字节数。范围内的任意字节数。 小段的概念小段的概念从从0地址开始每地址开始每16字节为一小段,字节为一小段,对于对于16位地址总线,段内存储器小段地址如下:位地址总线,段内存储器小段地址如下:如:如: 0000H,0001H,0002H,000EH,000FH一个小段一个小段 0010H,0011H,0012H,001EH,001FH 0020H,0021H,0022H,002EH,002FH FFF0H, FFF1H, FFF2H, , FFFEH, FFFFH 其中:其中:第一列就是每个小段的

27、首地址。第一列就是每个小段的首地址。每个小段首地址特征:每个小段首地址特征:在在16进制表示的地址中,最低位为进制表示的地址中,最低位为0H (即(即20位地址的低位地址的低4位为位为0000B)。)。在在1M字节的地址空间,共有字节的地址空间,共有64K个小段其首地址为:个小段其首地址为:0000 0H0001 0H4123 0H4124 0HFFFE 0HFFFF 0H 20位物理地址形成位物理地址形成 物理地址:物理地址: 在在1M字节存储器里,每个存储单元都有一个唯一的字节存储器里,每个存储单元都有一个唯一的20位地位地址作为该存储单元的物理地址。址作为该存储单元的物理地址。CPU访问

28、存储器时,必须先确定所要访问的存储单元的访问存储器时,必须先确定所要访问的存储单元的物理地址才能取出(或存入)该单元中的内容。物理地址才能取出(或存入)该单元中的内容。 20位物理地址形成:位物理地址形成:由由16位段地址和位段地址和16位偏移地址组成位偏移地址组成。段地址段地址:只取段起始地址高只取段起始地址高16位值。位值。偏移地址偏移地址:指在段内某内存单元物理地址相对段起始地址的偏移指在段内某内存单元物理地址相对段起始地址的偏移值。值。物理地址计算方法:物理地址计算方法:即把段地址左移即把段地址左移4位再加上偏移地址值形成物理地址,写成:位再加上偏移地址值形成物理地址,写成: 物理地址

29、物理地址= 16d 段地址段地址+偏移地址。偏移地址。 * 每个存储单元只有唯一的物理地址。每个存储单元只有唯一的物理地址。 但可由不同的段地址和不同的偏移地址组成。但可由不同的段地址和不同的偏移地址组成。16位段地址16位段地址0000000016位偏移地址16位偏移地址0 015150 0151520位物理地址20位物理地址0 01919+ +(2)、逻辑地址与物理地址)、逻辑地址与物理地址 逻辑地址与物理地址概念逻辑地址与物理地址概念逻辑地址与物理地址概念如下页图所示。逻辑地址与物理地址概念如下页图所示。逻辑地址:逻辑地址:由段基址和段内偏移地址组成的地址,由段基址和段内偏移地址组成的地

30、址, 段基址和段内偏移地址都是段基址和段内偏移地址都是16位的无符号二进制数,位的无符号二进制数, 在程序设计时使用。在程序设计时使用。物理地址:物理地址:存储器的绝对地址(存储器的绝对地址(20位的实际地址)位的实际地址), 范围从范围从00000HFFFFFH , 是由是由CPU访问存储器时由地址总线发出的地址。访问存储器时由地址总线发出的地址。存储器管理:存储器管理:将程序中逻辑地址转移为物理地址的机构。将程序中逻辑地址转移为物理地址的机构。 物理地址的形成物理地址的形成.2000020000H H2525F60HF60H2525F61HF61H2525F62HF62H2525F63HF63H20002000H H段基址段基址段内偏移地址段内偏移地址5 5F62HF62H逻辑地址与物理地址逻辑地址与物理地址段基址段基址0 0 0 00 0 0 03 2 1 03 2 1 015 015 0偏移地址偏移地址基址加法器基址加法器物理地址物理地址0 015150 01919逻辑地址:逻辑地址:2000:5F62H逻辑地址来源逻辑地址来源(ES) 16d+(DI)DI无无ES目标字符串目标字符串(DS) 16d+(SI)SICS,ES,SSDS源字符串源字符串(DS ) 16d+EA有效地址有效地址EACS,ES,SSDS存取变量存取变量(SS) 16d+EA有效地址有效地址E

温馨提示

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

评论

0/150

提交评论