




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 8086微处理器指令系统 例例:10001000 11011000就是一条2字节的机器指令,指示计算机执行:“把寄存器BL内容复制到寄存器AL之中” 的操作。表示为: ALBL。 3.1 3.1 概概 述述3.1.1 3.1.1 指令指令 (Instruction):(Instruction): 指令通常以二进制代码的形式提供给计算机,这种指令称为机器指令。指示计算机执行什么操作的命令命令。 3.1.3 3.1.3 程序程序 (Program):(Program): 完成某个特定任务而编制的一系列指令的有序有序集合。程序的执行一般是按指令的先后次序一条一程序的执行一般是按指令的先后次序
2、一条一条执行,但遇到转移类指令时则可能改变指令的条执行,但遇到转移类指令时则可能改变指令的执行次序。执行次序。3.1.2 3.1.2 指令系统指令系统 (Instruction System):(Instruction System): 计算机所能执行的全部指令全部指令。 3.1.4 3.1.4 指令包含的基本内容指令包含的基本内容1. 1. 做什么操作做什么操作由指令的操作码操作码字段规定。2. 2. 操作数的来源操作数的来源操作数来自于什么地方。由指令的操作操作数数字段规定。操作数的来源可以是:操作数的来源可以是: CPU内的某个寄存器寄存器;存储器内的某一个或几个单元单元;I/O端口端口
3、; 立即数。3. 3. 操作结果的去向操作结果的去向操作的结果结果将存放在何处。4. 4. 下一条指令的位置下一条指令的位置指示下一条指令是顺序顺序执行还是转移转移执行。3.2 3.2 指令的表示方法指令的表示方法1. 1. 二进制代码表示二进制代码表示机器语言指令机器语言指令2. 2. 助记符表示助记符表示汇编语言指令汇编语言指令例:10001000 11011000例:MOV BL,ALMOV表示“传送传送”助记符,BL(寄存器)表示结果存放的位置,AL(寄存器)表示数据的来源。助记符表示的指令便于书写、理解和助记符表示的指令便于书写、理解和记忆,但最终必须将助记符指令记忆,但最终必须将助
4、记符指令“翻译翻译”成机器指令才能被识别和执行。这个过程成机器指令才能被识别和执行。这个过程叫叫“汇编汇编”。助记符指令助记符指令机器指令机器指令汇编汇编 3.3 8086 CPU的寻址方式地址地址:数据和指令存放的位置。数据存放的位置可以是寄存器寄存器、存储器存储器或I/OI/O端口端口,指令存放的位置只能是存储器中的代码段代码段。寻址方式:寻找指令地址和操作数地址的方式。寻址方式:寻找指令地址和操作数地址的方式。寻址过程:形成指令地址和操作数地址的过程。寻址过程:形成指令地址和操作数地址的过程。结果AHAL1. 1. 固定寻址固定寻址 ( (隐含寻址隐含寻址) )操作数在某个固定的操作数在
5、某个固定的寄存器寄存器中。中。这个固定的寄存器大多为这个固定的寄存器大多为ALAL或或AXAX。例例:AAA操作:对固定寄存器操作:对固定寄存器ALAL中的内容进行十进制调中的内容进行十进制调整,结果仍在整,结果仍在ALAL中。中。( (可能影响可能影响AHAH的内容的内容) )十进制调整十进制调整影响影响+1送回送回2. 2. 立即数寻址立即数寻址操作数作为立即数就在指令中给出。操作数作为立即数就在指令中给出。例:例:MOV AXMOV AX,1234H1234H操作操作:把立即数把立即数1234H1234H送寄存器送寄存器AXAX中。中。机器码:机器码:B8 34 12 (B8 34 12
6、 (低字节在地址小的单元低字节在地址小的单元) )AHALAX.B83412.5678代码段代码段 (存储器中存储器中)操作码操作码(B8)操作数操作数(1234H)立即数立即数一条指令一条指令指令执行后,指令执行后,AX=1234H (AX=1234H (原有的内容被新原有的内容被新的内容替换的内容替换) )。1234MOV AX,1234H3. 3. 寄存器寻址寄存器寻址操作数在某个寄存器寄存器中。例例:INC BL操作操作:使BL中内容加1后送回+1BL00若BL=00H,则执行后BL=01HBL=FFH,则执行后BL=00H (自动溢出)014. 4. 存储器寻址存储器寻址操作数在存储
7、器存储器中的一个或几个单元单元中。在这种寻址方式下,要找到该操作数,关键是必须找到该操作数所在单元的地址地址。由于8086采用存储器段组织结构,内存单元的地址由段起始地址段起始地址 (基地址基地址) 和该单元与段起始地址之间的距离距离 (以字节数字节数计) 两部分共同决定。 段起始地址段起始地址(基地址):某个段寄存器的内容(又称段基值段基值)乘以16得到。 段内偏移量:段内偏移量:该单元与段起始地址之间的距距离离(字节数字节数) 。又称有效地址EAEA。有效地址有效地址EA待寻址的内存单元待寻址的内存单元(CS, DS, ES, SS)16 段基地址段基地址 物理地址物理地址 =段基值段基值
8、 16+EA 内存单元物理地址内存单元物理地址80868086规定,在执行某种操作时,采用规定,在执行某种操作时,采用的段寄存器有一个预先的约定。故指令中的段寄存器有一个预先的约定。故指令中一般只需给出有关一般只需给出有关EAEA的信息,则的信息,则CPUCPU将能够将能够根据该次操作自动选用段寄存器,并与根据该次操作自动选用段寄存器,并与EAEA一起形成物理地址。一起形成物理地址。 存储器寻址的实质就是如何形成有效存储器寻址的实质就是如何形成有效地址地址EAEA。(1) (1) 直接寻址方式直接寻址方式指令中以偏移量方式直接直接给出操作数的有效地址。即EA=指令中给出的偏移量例例:MOV A
9、X,1234H机器码机器码:A1 34 12操作操作:把偏移量1234H作为EA,在数据数据段段中找到相应的字字单元,再将字单元的内容送AX。本例执行完后,本例执行完后,AX=3050HEA=1234H设DS=3000H31234H 1234H + EA=1234H31234H56783050DS16=30000H30000H= 3000H16.A13412.5030.指令 代码段 数据段 AHALAXMOV AX, 1234H 直接寻址的操作过程与立即寻址不同。为表示它们的区别,直接寻址的偏移量用一对 “ ”表示。立即寻址立即寻址:MOV AX,1234H直接寻址直接寻址:MOV AX,12
10、34H段基值乘以16,相当于段基值(二进制表示)左移4位,或段基值(十六进制表示)在末尾添一个0H。注:注:寄存器间接寻址寄存器间接寻址 操作数有效地址操作数有效地址EA直接从基址寄存器(直接从基址寄存器(BX或或BP)或)或变址寄存器(变址寄存器(SI或或DI)中获得。)中获得。寄存器间接寻址就是事先将偏移量存放在某个寄存器寄存器间接寻址就是事先将偏移量存放在某个寄存器(BX、BP、SI或或DI)中,这些寄存器就如同一个地址指针。中,这些寄存器就如同一个地址指针。在程序运行期间,只要对寄存器内容进行修改,就可以实在程序运行期间,只要对寄存器内容进行修改,就可以实现用同一条指令实现对不同存储单
11、元进行操作。现用同一条指令实现对不同存储单元进行操作。操作码操作码 操作数操作数ORORORBXDIBPSIEA操作数操作数.内存内存段寄存器段寄存器(3) (3) 间接寻址方式间接寻址方式 以间接间接的方式得到有效地址EA,有几个专用的寄存器可用于间接寻址:BXBX,BPBP,SISI,DIDI。基址寻址方式基址寻址方式 以BXBX作为基址寻址寄存器,操作数在数据段数据段中。以BPBP作为基址寻址寄存器,操作数在堆栈段堆栈段中。EA=BX或BP的内容+8位或16位位移量例例:MOV AX,BX机器码机器码:8B 04操作操作:以BX的内容作为有效地址EA,在数据段数据段中找到对应的字单元,再
12、将该字单元的内容送AX中。EA=BX (位移量为0)设DS=2000H,BX=1000H本例执行后本例执行后 AX=50A0HDS=2000HDS1620000H EA=BX(=1000H)21000H 50 A0 8B.04A050代码段数据段AX AH AL 这种寻址方式的优点就在于可以随时修改BX寄存器的内容,而指向不同的存储单元。故BX又称为基址指针寄存器。例例:MOV AL,DATABP 这里DATA是以符号符号表示的位移量位移量。 EA=BP+位移量DATA操作操作:以EA作为有效地址,在堆栈段堆栈段中去 寻址字节字节单元,再将该字节单元内容送AL。变址寻址方式变址寻址方式 以SI
13、SI,DIDI寄存器作为间接寻址间接寻址寄存器,操作数在数据段数据段中。 EA=SI或DI内容+8位或16位位移量 例例:ADD AX,SI EA=SI操作操作:以EA作为有效地址,在数据段数据段中找到某个操作数,再将该操作数与AX的内容相加,结果存放在AX中。基址变址寻址方式基址变址寻址方式 既有基址寄存器既有基址寄存器(BX(BX或或BP)BP),又有变址寄,又有变址寄存器参与存器参与(SI(SI或或DI)DI)寻址,操作数在基址寄存寻址,操作数在基址寄存器所规定的段中。器所规定的段中。EA=BX或BP+SI或DI+8位或16位位移量基址寻址和变址寻址基址寻址和变址寻址 操作数的有效地址操
14、作数的有效地址EA等于基地址分量或变址分量加上等于基地址分量或变址分量加上指令中给出的位移量。指令中给出的位移量。 指令中使用指令中使用BX或或BP时为基址寻址。指令中使用时为基址寻址。指令中使用SI或或DI时时为变址寻址。为变址寻址。操作码操作码寻址特征寻址特征 位移量位移量ORORORBXDIBPSI段寄存器段寄存器操作数操作数.内存内存EAEA=基址基址+变址变址+位移量位移量例:例:MOV AX,10H SIMOV TABLE DI,AL注意注意:当位移量为常数时,不能加方括号。:当位移量为常数时,不能加方括号。 这两种寻址方式只需通过改变寄存器的内容就可用一这两种寻址方式只需通过改变
15、寄存器的内容就可用一条指令访问不同的存储单元,并且由于增加了一个位移量条指令访问不同的存储单元,并且由于增加了一个位移量分量,因此它们能够很方便地访问数组和表格数据。分量,因此它们能够很方便地访问数组和表格数据。 由于这两种寻址方式中寄存器中的内容是相对于由由于这两种寻址方式中寄存器中的内容是相对于由位移量指定的初始单元。因此也叫寄存器相对寻址。位移量指定的初始单元。因此也叫寄存器相对寻址。段寄存器的隐含使用规则与寄存器间接寻址方式相同段寄存器的隐含使用规则与寄存器间接寻址方式相同= MOV AX,DS:10H SI=MOV DS:TABLE DI,AL例例:MOV AX,0260H BX S
16、IEA=BX+SI+0260H,操作数在数据段数据段中MOV AX,INF BP+DIEA=BP+DI+位移量INF,操作数在堆栈段堆栈段中 * 以上两种基址+变址的格式都是合法的。例如:例如:MOV CX,100HBXDI MOV TABLEBXDI,AX下面的用法是错误的。下面的用法是错误的。MOV AX,ARRAYBXBPMOV AX,TABLESIDI 在基址变址寻址方式中,程序运行期间有两个地在基址变址寻址方式中,程序运行期间有两个地址分量可以修改。因此它是最灵活的一种寻址方式,址分量可以修改。因此它是最灵活的一种寻址方式,可以方便地对二维数组进行访问。可以方便地对二维数组进行访问。
17、基址变址寻址基址变址寻址 相对基址变址寻址相对基址变址寻址 (3) 串操作指令寻址串操作指令寻址这类指令规定:这类指令规定:源串源串操作数在数据段数据段,且有效地址EA=SI目的串目的串操作数在附加段附加段,且有效地址EA=DI指令执行后,自动修改指令执行后,自动修改SI,DI的值,使的值,使之指向新的单元。之指向新的单元。 8086的段约定的段约定80868086在执行某种操作时,预先规定了采在执行某种操作时,预先规定了采用的段寄存器和段,即有基本的段约定。如用的段寄存器和段,即有基本的段约定。如果要改变默认的段约定,则果要改变默认的段约定,则需要在指令中明需要在指令中明 确指出来确指出来。
18、8086/80888086/8088的段约定的段约定存储器存取方式存储器存取方式基本段约定基本段约定 允许修改的段允许修改的段偏移地址偏移地址取指令取指令堆栈操作堆栈操作源串源串目的串目的串用用BP作基址寄存器作基址寄存器通用数据读写通用数据读写CSSSDSESSSDS无无无无ES,CS,SS无无CS,DS,ESCS,ES,SSIPSPSIDIEAEA(1) (1) 直接端口寻址直接端口寻址操作数在某个8 8位位或1616位端口位端口中。端口地址可以置于DXDX中,但不能置于其它寄存器中。端口的输入、输出数据只能置于累加器 ALAL或AXAX中。注:注:端口输出端口输出OUT port, AL
19、端口输入端口输入 IN AL,portport=端口地址 (8位,0255)例例:IN AL,80H操作操作:从端口地址为80H的端口输入一字节送AL。(2) 间接端口寻址间接端口寻址可以把端口地址送入可以把端口地址送入DXDX,然后进行端,然后进行端口寻址:口寻址:输入: IN AL,DX 输出: OUT DX,AL注:注: 若用若用AXAX代替代替ALAL,则表示,则表示1616位数据的端位数据的端口。口。 端口地址大于端口地址大于255255时,必须将端口地址时,必须将端口地址送入送入DXDX,即采用间接寻址端口方式。,即采用间接寻址端口方式。前面所述的各种寻址方式实际上是数据数据寻址寻
20、址方式,关键是如何找到操作数操作数。转移类指令寻址方式属于程序存储器寻程序存储器寻址址,关键是要找到下一条待执行指令的地址地址。寻址方式小结:寻址方式小结:固定寻址固定寻址:操作数固定在某个寄存器寄存器中寄存器寻址寄存器寻址:操作数在某个寄存器寄存器中立即数寻址立即数寻址:操作数就是操作码后跟的立即数立即数存储器操作数寻址方式中地址形成小结存储器操作数寻址方式中地址形成小结直接寻址直接寻址寄存器间寄存器间接寻址接寻址基址变址寻址基址变址寻址基址基址(变址变址)寻址寻址SIDIBXBP位移量位移量BXBPSIDIEA20位物理地址位物理地址ESCSDSSS16EUBIU(1) 转移范围转移范围段
21、内转移:转移范围在同一个段同一个段以内段间转移:从一个一个代码段转移至另一个另一个代码段(2) 转移条件转移条件无条件转移有条件转移 (转移范围仅为128-+127128-+127)(3) 转移方式转移方式直接转移 (转移目标直接直接在指令中给出)间接转移 (转移目标预先放入某个寄寄存器存器或存储器存储器中)存储器寻址存储器寻址直接寻址间接寻址串操作寻址基址寻址变址寻址基址+变址寻址I/OI/O端口寻址端口寻址直接端口寻址间接端口寻址转移类指令寻址转移类指令寻址课堂练习与思考:课堂练习与思考:1.1.请指出下列每条指令源操作数的寻址方式。请指出下列每条指令源操作数的寻址方式。(1) MOV A
22、X, BX (2) MOV CH, 3AH (3) MOV BX, 2000H (4) MOV DX, BX (5) MOV CX, BP+2 (6) MOV AX, 3BX DI (7) MOV AL, ES:SI (8) MOV BX, DS:BP; ;寄存器寻址,操作数在寄存器寻址,操作数在BXBX中中 ; ;立即数寻址,操作数为立即数寻址,操作数为3AH 3AH ; ;直接寻址,直接寻址,EA=2000HEA=2000H,数在数据段,数在数据段 ; ;间接寻址,间接寻址,EA=BXEA=BX,数在数据段,数在数据段 ; ;基址寻址,基址寻址,EA=BP+2EA=BP+2,数在堆栈段,数
23、在堆栈段 ; ;相对基址变址寻址,相对基址变址寻址,EA=BX+DI+3EA=BX+DI+3,数在数据段,数在数据段 ; ;含段超越的变址寻址,含段超越的变址寻址,EA=SIEA=SI,数在附加段,数在附加段 ; ;含段超越的基址寻址,含段超越的基址寻址,EA=BPEA=BP,数在数据段,数在数据段课堂练习与思考:课堂练习与思考:2.2.设设BX=0123H DI=1000H DS=3200HBX=0123H DI=1000H DS=3200H,默认,默认DSDS作为操作为操作数对应的段寄存器作数对应的段寄存器( (假定没使用段前缀假定没使用段前缀) ),试指出下,试指出下列指令的寻址方式,并
24、写出其操作数的有效地址和物列指令的寻址方式,并写出其操作数的有效地址和物理地址。理地址。 (1)MOV AX,1A38H (1)直接寻址 有效地址=1A38H,物理地址=32000H+1A38H=33A38H(2)MOV AX,BX(2)寄存器间接寻址 有效地址=0123H, 物理地址=32000H+0123H=32123H课堂练习与思考:课堂练习与思考:(5)相对基址变址寻址 有效地址=0123H+1000H+1A38H=2B5BH, 物理地址=32000H+2B5BH=34B5BH (3)MOV AX,BX+1A38H(3)寄存器相对基址寻址 有效地址=0123H+1A38H=1B5BH,
25、 物理地址=32000H+1B5B=33B5BH(4)MOV AX,BX+DI (4) 基址变址寻址 有效地址=0123H+1000H=1123H, 物理地址=32000H+1123H=33123H(5)MOV AX,BX+DI+1A38H3.4 32位指令模式下的存储器寻址方式在保护方式下,当段描述符号中D位为“0”,设定16位指令模式;D位为“1”,设定为32位指令模式。32位寻址结构由5部分组成。段址 + 基址 + 变址 * 比例因子 + 偏移量其中基址寄存器或变址寄存器可以是除ESP以外的任何32位通用寄存器。当基址寄存器为EAX、EBX、ECX、EDX、ESI、EDI时,默认段寄存器
26、的DS存放段选择符。当基址寄存器为EBP时,默认段寄存器SS存放段选择符。比例因子为1,2,4,8。偏移量为0位、8位,32位。当偏移量为32位时。段内可寻址范围为字节地址空间如图3-1所示。选择符选择符偏移量偏移量分分段段机机制制线性线性地址地址物理物理地址地址分分页页机机制制:虚地址线性地址物理地址15 031 031 031 0图 线性地址的确定 选择符选择符32位基地址位基地址描描述述符符表表32位偏移量位偏移量基址寄存器基址寄存器变址寄存器变址寄存器比例因子比例因子1,2,4,832位线性地址位线性地址段基地址段基地址+1)直接寻址指令中包含操作数的32位有效地址为: EA = 32
27、位有效地址2)间接寻址 EA = EBPEDIESIEDXECXEBXEAX3)相对基址寻址EA = + 位移量EBPEDIESIEDXECXEBXEAX位位位32804)相对比例变址寻址 EA= * + 位移量EBPEDIESIEDXECXEBXEAX比例因子比例因子比例因子比例因子8421位位位3280 5)相对比例基址变址寻址 EA = + * + 位移量 EBPEDIESIEDXECXEBXEAXEBPEDIESIEDXECXEBXEAX比例因子比例因子比例因子比例因子8421位位位3280 3.4.2 3.4.2 程序地址寻址方式程序地址寻址方式表示指令转移地址所在的方式称程序地址寻
28、址方式。用于转移类指令和过程调用类指令的程序地址寻址方式有3种:相对寻址(存储器寻址)、直接寻址和间接寻址(存储器寻址)。1.直接寻址指令中直接给出转移地址,通常给出的是符号地址标号,例如指令JMP START中的标号START即转移地址的符号表示。指令中给出寄存器名,该寄存器的内容即转移的目的地址,仅用于段内转移。例如:指令JMP BX,该指令执行时BXIP,由于是段内转移CS值不变,为原段地址。作为目标地址的寄存器可以是16位寄存器的AXDX,SP,BP,SI,DI;在32位CPU中,扩展存储器也可以用作转移指令的转移地址。2.寄存器寻址 3.3.存储器寻址与操作数寻址相同存储器寻址与操作
29、数寻址相同1.803861.80386的三种工作方式的三种工作方式1)1)实地址方式实地址方式系统启动后系统启动后,80386,80386自动进入实地址方式。自动进入实地址方式。在此方式下,采用类似于在此方式下,采用类似于80868086的体系结构,其的体系结构,其特点如下:特点如下: 寻址方式、存储器管理,中断处理与寻址方式、存储器管理,中断处理与80868086一样。一样。 操作数默认长度为操作数默认长度为1616位,但允许访问位,但允许访问3232位寄存器(在指令前加前缀)。位寄存器(在指令前加前缀)。 3.4.3 3.4.3 保护方式下的寻址方式保护方式下的寻址方式 不用虚拟地址,最大
30、地址范围仍不用虚拟地址,最大地址范围仍限于限于1MB1MB,只采用分段方式,每段最大,只采用分段方式,每段最大64KB64KB。 存储器中保留两个固定的区域,存储器中保留两个固定的区域,一个是初始化程序区一个是初始化程序区FFFFFHFFFFFHFFFFOHFFFFOH,另,另一个为中断向量表一个为中断向量表003FFH003FFH00000H00000H。8038680386的的4 4特权级特权级, ,在实地址方式下在实地址方式下, ,程序在最高级程序在最高级0 0级上执行级上执行,80386,80386指令集除指令集除少数指令外少数指令外, ,绝大多数指令在实地址方式绝大多数指令在实地址方
31、式下都有效。下都有效。2)保护方式所谓保护是指在执行多任务操作时,对不同任务使用的虚拟存储器空间进行完全的隔离,保护每个任务顺利执行。保护方式是80386最常用的方式,系统启动后先进入实地址方式,完成系统初始化后立即转到保护方式。这种方式提供了多任务环境下的各种复杂功能以及对复杂存储器组织的管理机制。只有在保护方式下,80386才能发挥其强大的功能。在保护方式下,80386具有如下特点:应用程序应用程序常规扩展常规扩展系统服务系统服务内核内核级别级别0级别级别1级别级别2级别级别3存储器采用虚拟地址空间、线性地址空间和存储器采用虚拟地址空间、线性地址空间和物理地址空间三种方式来描述。在保护方式
32、下,物理地址空间三种方式来描述。在保护方式下,8038680386寻址机构不同于寻址机构不同于80868086,与,与8028680286类似,是通过描类似,是通过描述符的数据结构来实现对内存的访问的。述符的数据结构来实现对内存的访问的。强大的寻址空间。在保护方式下强大的寻址空间。在保护方式下,80386,80386可以可以寻址的空间大于寻址的空间大于64TB64TB。这个空间就是所谓的虚拟地址。这个空间就是所谓的虚拟地址空间。空间。使用使用8038680386的的4 4级保护功能,可实现程序与程级保护功能,可实现程序与程序、用户与用户、用户与操作系统之间的隔离和保护序、用户与用户、用户与操作
33、系统之间的隔离和保护,为多任务操作系统提供优化支持。,为多任务操作系统提供优化支持。在保护方式下,在保护方式下,8038680386既可以进行既可以进行1616位运算,位运算,又可以进行又可以进行3232位运算。无论是位运算。无论是1616位,还是位,还是3232位的运算位的运算,只要在保护方式下,它就能启动其分页单元,为支,只要在保护方式下,它就能启动其分页单元,为支持虚拟内存。持虚拟内存。3 3)虚拟)虚拟80868086方式方式80868086及其以后的微机处理在及其以后的微机处理在8028680286已有的基已有的基础上新增了础上新增了“虚拟虚拟80868086模式模式”。所谓虚拟。所
34、谓虚拟80868086模模式是指一个多任务的环境,即模拟多个式是指一个多任务的环境,即模拟多个80868086的工的工作方式。在这个模式下,作方式。在这个模式下,8038680386被模拟多个被模拟多个8086CPU8086CPU并行工作。并行工作。虚拟虚拟80868086模式允许模式允许8038680386将内存划分成若干将内存划分成若干部分,每一个部分由操作系统分配给不同的应用部分,每一个部分由操作系统分配给不同的应用程序,而应用程序,数据以及内存管理程序等部程序,而应用程序,数据以及内存管理程序等部分则存放在所分配的内存中。因此操作系统可根分则存放在所分配的内存中。因此操作系统可根据时间
35、上的平均分配或优先权,分给每个应用程据时间上的平均分配或优先权,分给每个应用程序的执行时间。序的执行时间。虚拟虚拟80868086方式的主要特点如下:方式的主要特点如下:可执行原来采用可执行原来采用80868086书写的应用程序。书写的应用程序。段寄存器的用法与实地址方式一样段寄存器的用法与实地址方式一样, ,即段寄即段寄存器内容乘以存器内容乘以1616后加上偏移量可得到后加上偏移量可得到2020位的线性位的线性地址。地址。可以使用分页方式,将可以使用分页方式,将1MB1MB分为分为256256个页面个页面,分页内存是将内存以,分页内存是将内存以4KB4KB为单位进行划分,每一为单位进行划分,
36、每一个个4KB4KB称为一称为一“页页”,因此可以比段寻址方式划分,因此可以比段寻址方式划分要细,从而可处理较小的应用程序与数据段。尽要细,从而可处理较小的应用程序与数据段。尽管在管在V86V86方式下得到的线性地址是方式下得到的线性地址是2020位即位即1MB1MB的空的空间,但由于线性地址可以通过页表映射到任何间,但由于线性地址可以通过页表映射到任何3232位物理地址,所以应用程序可在位物理地址,所以应用程序可在8038680386现有实际内现有实际内存的任何地方执行。存的任何地方执行。在在8038680386多任务系统中,可以使其中一个或几多任务系统中,可以使其中一个或几个任务使用虚拟个
37、任务使用虚拟80868086方式。此时,一个任务所用方式。此时,一个任务所用的全部页面可以定位于某个物理地址空间,另一的全部页面可以定位于某个物理地址空间,另一个任务的页面可以定位于其他区域,即每个虚拟个任务的页面可以定位于其他区域,即每个虚拟80868086下的任务可以转换到物理存储器的不同位置下的任务可以转换到物理存储器的不同位置,这样,把存储器虚拟化了,故称之为虚拟,这样,把存储器虚拟化了,故称之为虚拟80868086方式。方式。在虚拟在虚拟80868086方式中,应用程序在最低特权方式中,应用程序在最低特权级级3 3级上运行,因此级上运行,因此8038680386指令系统中的特权指令指
38、令系统中的特权指令不能使用。不能使用。 2.保护方式下的存储器地址方式在保护方式下,在保护方式下,8038680386对存储器的组织管理采用对存储器的组织管理采用两级存储器管理的策略,即所谓的分段管理和分页管两级存储器管理的策略,即所谓的分段管理和分页管理,分别由理,分别由8038680386中的分段部件中的分段部件SUSU和分页部件和分页部件PUPU完成完成。分段部件功能是完成逻辑地址到线性地址的转换,。分段部件功能是完成逻辑地址到线性地址的转换,分页部件的功能是完成线性地址到物理地址的转换。分页部件的功能是完成线性地址到物理地址的转换。由于由于8038680386有有3232条地址线,因此
39、可直接寻址条地址线,因此可直接寻址 =4GB=4GB的物理地址空间,的物理地址空间,8038680386仍然采用分段方式,每仍然采用分段方式,每一个段地址最大空间为一个段地址最大空间为4GB4GB。由于段选择子参与选择。由于段选择子参与选择描述符的有描述符的有1313位,且对应两个描述符表(位,且对应两个描述符表(GDTGDT和和LDTLDT),因此,因此8038680386的虚拟地址空间为。的虚拟地址空间为。TB64222246321332280386物理地址的形成分成两步计算,先将逻辑地址变换成线性地址,再将线性地址转换为物理地址。1)从逻辑地址到线性地址的转换80386下的实地址方式与保
40、护方式在机制上的主要差别,在于分段部件将逻辑地址转换为线性地址的方法不同。 在实地址方式下,段寄存器中的值就是段地址,分段部件直接将其左移4位得到20位段基址再加上16位的偏移地址,就得20位的线性地址,由于实地址方式下无需分页,因此,线性地址就是物理地址。也就是说,在实地址方式下,80386的地址形成与8086相同。1.逻辑地址转换为线性地址在保护方式下,段寄存器中的值为段选择子,通过段选择子中的索引描述符表中的段描述符,然后从8个字节的描述符中找段基址(32位),最后将段基址与32位的偏移地址相对得到线性地址。具体操作说明如下。图图3- 分段地址转换过程图分段地址转换过程图TI RPL8字
41、节描述符8字节描述符访问权限(8位)GDOU段基址(32位)段限值(20位)10位10位12位10位页目录(号)10位页面(号)12位偏移量描述符描述符32位段基址位段基址+32位偏移量位偏移量线性地址线性地址分段不分页分段不分页物理地址物理地址偏移量偏移量虚地址虚地址段选择符段选择符INDEXTI=1TI=0GDT当前当前LDTLDTR中中32位基地址位基地址GDTR中中32位基地址位基地址13位位INDEX8装入描述符装入描述符高速缓存器高速缓存器段寄存器段寄存器150123031.NoImageGDTR3232位基地址位基地址1616位界位界限限0#0#段描述符段描述符1#1#段描述符段
42、描述符3232位基地址位基地址2020位界限位界限权限等权限等存储器系统存储器系统 (数据段)(数据段) 全局描述符表全局描述符表GDT00080008DS1#1#0#0#1#1#段段32位位 偏移量偏移量EA 00008000H00008000H寻址单元寻址单元FFFF0000FFFF0000929200002020000000200000H00200000H0020FFFFH0020FFFFH00208000H00208000H段描述符和段的关系段描述符和段的关系 (1) 由执行部件EU中的64位桶式移位寄存器(移位地址加法器)得到的两个32位有效地址送到分段部件SU,有效地址包括了48位
43、的逻辑地址,逻辑地址含有16位的段选择子和32位的偏移地址。这恰恰是在指令中用到的逻辑地址。如前图所示,分段部件接收到逻辑地址后,根据段选择子的表指示器TI的值选择全局描述符表(GDT)还是局部描述符表(LDT),当TI=0时选中GDT,TI=1时选中LDT。(2)选择完描述符表后,通过段选择子高13位的索引从被选中的描述符表中找出相应的8个字节的段描述符(见图),从中取出32位段基址(B31B0),32位的段基地址与32位的偏移地址相加后就得到了32位的线性地址,从而完成了分段部件SU的主要任务。在找到段的描述符后,微处理器自动将该段描述符装入段描述符缓冲寄存器。利用描述符缓冲寄存器可大大提
44、高微处理器寻址效率。GDT的首地址 13位段选择符8+找到某个段描述符 步骤步骤1 分段机制的寻址过程分段机制的寻址过程 从描述符取出32位段基地址32位的偏移地址 +32位的线性地址 步骤步骤2虚拟地虚拟地址指针址指针GDT/LDT选择符选择符偏移量偏移量段段描述符描述符数据段描述符高速缓数据段描述符高速缓冲寄存器(不可见)冲寄存器(不可见)数据段数据段操作数操作数DSEAX段基址 2. 2. 线性地址转换为物理地址线性地址转换为物理地址 线性地址线性地址:在保护模式下,由段寄存器:在保护模式下,由段寄存器( (选择选择子子) ),段描述符和偏移地址所形成的,段描述符和偏移地址所形成的323
45、2位全地址。位全地址。 物理地址物理地址:对应物理存储器的实际地址。:对应物理存储器的实际地址。 不分页时,不分页时,3232位线性地址就是实际的物理地位线性地址就是实际的物理地址,而在分页管理下,址,而在分页管理下,3232位线性地址需通过内存位线性地址需通过内存分页管理机制转化为另外的物理地址。分页管理机制转化为另外的物理地址。 线性地址的构成线性地址的构成 页目录地址页目录地址页表地址页表地址页内偏移地址页内偏移地址3122 2112 11010位位10位位12位位 线性地址的构成 页目录地址(页目录地址(1010位):第位):第31312222位。说明该页表的位。说明该页表的序号(序号
46、(0#0#1023#1023#)。该值乘以)。该值乘以4 4即为该页表基地址在即为该页表基地址在页目录表中的相对地址。页目录表中的相对地址。 页表地址(页表地址(1010位):第位):第21211212位。说明该页的序号位。说明该页的序号(0# 0# 1023#1023#) 。该值乘以。该值乘以4 4即为该页基地址在页表即为该页基地址在页表中的相对地址。中的相对地址。 页内偏移地址(占页内偏移地址(占1212位):第位):第11110 0位。说明某寻址位。说明某寻址单元的页内地址。单元的页内地址。 线性地址线性地址页目录页目录目录目录偏移量偏移量页目录项页目录项页页操作数操作数页页CR3页表页
47、表页表项页表项页表基址C R 3 的 内 容 页 目 录 地 址4 +找到某个目录项 步骤步骤1 分页机制的寻址过程分页机制的寻址过程 从该目录项中取出目录基地址页目录地址 4 +找到某个页项 步骤步骤2从该页项中取出页基地址页内偏移地址+物理地址(32位) 步骤步骤3基地址基地址页目录表页目录表页表页表+页目录地址页目录地址页表地址页表地址页内位移地址页内位移地址 4 4 物理地址物理地址CR3线性线性地址地址PG=1分页分页PG=0禁止分页禁止分页物理地址物理地址从线性地址映射成物理地址的过程简单归纳如下:求页目录描述符所在地址将CR3中的页目录基地址(CR3中的低12位清0)与DIR值的
48、4倍相加求得页目录描述符所在地址。注意:页目录表将4GB的地址空间分成1024个页组,每一组为4MB。找出页表基地址从页目录描述符中找出页表首地址(有效位高20位,而低12位为0)。合成页描述符所在地址将上述页表基地址与PAGE值的4倍相加得到页描述符所在地址。一个页表同样占4KB,内含1024个页描述符项,每一项占4个字节。找出页面基地址 从处到的页描述符中找出页面对应的基地址(有效位高20位,低12位为0)。 合成页物理地址将得到的页面基地址与线性地址的低12位的页内偏移量相加,即可得到所需的32位物理地址。 段选择符偏移量GDT32位基地址段描述符页目录(号)页目录项页表项页表(号)偏移
49、量指令或数据CR3虚地址虚地址高高13位位8TI=001503110位位10位位12位位线性地址线性地址20位基地位基地址左移址左移12位位20位基地位基地址左移址左移12位位32位段位段基地址基地址全局描述符表全局描述符表8K8页目录表页目录表10244页表页表10244444K一一页页图图3-20 分段分页地址转换过程图分段分页地址转换过程图 虚拟虚拟86模式也启用了模式也启用了386的分页功能。的分页功能。由于虚拟由于虚拟86模式下任务的寻址范围是模式下任务的寻址范围是1MB+64KB16B,故线性地址的,故线性地址的3121位位全 为全 为 0 , 剩 下 低, 剩 下 低 2 1 位
50、位 ( 2 0 0 ) 对 应对 应1MB+64KB16B的地址空间。的地址空间。课堂练习与思考:课堂练习与思考:1. 分段分页的作用是什么? 答: 系统通过对分段、分页这两种机制的配制,实现支持单任务系统、多任务系统或者支持共享存储器的多处理器系统。分段将处理器的可寻址存储器空间分成叫做段的较小的保护地址空间,通过在段与段之间分界,来保证程序或任务之间不会互相干扰。分段机制还将段分类,这样可以对某些特殊类型的段操作进行限制。分页支持虚拟存储器环境,使得用少量的物理存储器就能访问很大的映射到磁盘存储器的线性地址空间。 2. 什么是全局描述符表?什么是局部描述符表? 答: 全局描述符表存放系统程
51、序的段描述符、门描述符和局部描述符表的段描述符以及段选择符。局部描述符表是独立于全局描述符表的,存放某个任务拥有的段描述符或多个任务的描述符。 3. 简述页目录项表和页表的作用。 答: 目录项表是页目录项的一组顺序列表;页表是页表项的一组顺序列表。 4. 如何通过页目录项和页表项得到物理地址。 答: 由页目录项可以得到页表的基地址,再根据页表项地址从页表中找到页表项,从页表项中可以得到在主存中的页基址。将页基址加上页内偏移量即可得到物理地址。 3.5 指令系统3.5.1 80863.5.1 8086指令系统指令系统80868086指令按功能分为六大类。指令按功能分为六大类。8086/8088指
52、令系统中的指令按指令系统中的指令按功能可分为六类:功能可分为六类:数据传送数据传送指令指令算术运算算术运算指令指令逻辑运算逻辑运算 与移位指令与移位指令串操作串操作指令指令控制转移控制转移指令指令处理机处理机 控制指令控制指令 3.5.1.1 数据传送指令数据传送指令数据传送指令能够完成下列操作数的传送任务。立即数存储器段寄存器CS,DS,ES,SS通用寄存器组AX,BX,CX,DXBP,SP,SI,DI(CS不能作目的) 数据传送指令数据传送指令(1) MOV d, s功能功能:将源操作数s复制到目标操作数d,源保持不变,目标被源代替。注注: d, s不能同时为存储器错误指令:MOV BX,
53、SI d不能为立即数 错误指令:MOV 1234H,AX d, s必须同时为字节型或字型错误指令:MOV AX,BL 指令后的分号“;”以后为注释部分,对指令的执行没有任何影响,主要是便于阅读或解释指令的功能。例例:MOV AX,0 ; AX0,AX清0 执行后,AX=0MOV SI,BP ; SIBP,BP内容送SI 执行后,SI=BP,BP不变不变MOV AL,BUFFERS ;BUFFERS内存单元内容送入AL这里,BUFFERSBUFFERS代表符号地址符号地址,从该地址单元中取出内容送AL寄存器。相当于直接寻址方式。相当于直接寻址方式。EA=BUFFERS偏移量偏移量3030HBUF
54、FERSALMOV AX,DATA SI+BXEA=SI+BX+DATA,在数据段中寻找字单元,取出该字单元的内容送入AX。设DS=3000H,SI=200H,BX=1000H,DATA的偏移量为100H,则EA=SI+BX+DATA=200H+1000H+100H=1300H物理地址=DS16+EA=30000H+1300H=31300H 即从31300H和31301H两单元中取出内容送AX。DS1630000H123434H12HAXAH ALEA=1300HDATASIBXDATA31300H31301HMOV AX,DATA SI+BXDS1630000H123434H12HAXAH
55、ALEA=1300HDATASIBXDATA31300H31301HMOV AX,DATA SI+BX例:PUSH BX;把BX内容压入堆栈设 SS=2000H,SP=0040H,BX=2340H则执行后,2340H被保存到堆栈,同时SP=003EH,BX内容不变SS1620000HSP=0040H(初值初值)20040H2003EH4023SP=003EH(压栈后压栈后)XX23 40BX注注:s和d只能为16位寄存器或存储器错误指令:PUSH 1234HPOP AL(3) XCHG d, s ;交换源和目标操作数注注:d=通用寄存器s=通用寄存器或存储器例:XCHG AX,SI+400H执
56、行后,5678H被送到内存单元AX=1234H3412SI+400H5678AH ALAX34127856(4) 换码指令XLAT功能功能:该指令通过ALAL和BXBX寄存器进行表格查找,将8位数装入ALAL中。它完成的操作为:AL AL BX+ALBX+AL,XLAT指令常用于查表操作,即BXBX寄存器含有表格的起始地址,而ALAL中的值是作进入表格中的偏移量,查出表格中的内容送入ALAL中。 *XLAT ;查表转换 注注:表首相对于段起始地址的偏移量预先送入BXBX中;待查找的表内表内某单元相对于表首的偏移偏移量量送入ALAL中;以EA=BX+AL在表中(数据段)查找,将查得的数据再送回A
57、LAL中。例例:设表首的偏移地址为2000H,要查找表内第4号单元 (从0号算起)的内容并送回AL,则程序段如下:MOV BX,2000HMOV AL,04HXLAT设表中内容如下页图所示, 则执行后,AL=09H AL=09H 18H34H05H06H09H2000HBX 04HAL(表首)TABLE DS1604 AL09 对于任一个存储器操作数,由段地址和偏移地址确定了它们在存储器中的位置。目标地址传送指令就用于获得存储器操作数的段地址或偏移地址。(1) LEA d, s功能功能:取存储器源操作数有效地址有效地址送入目标dd=通用寄存器 例:LEA BX,COUNTER; 取COUNTE
58、R地址偏移量BX 若COUNTER地址偏移量为0002H,则执行后BX=0002H(2) LDS d, s功能功能:装入地址指针,段地址DS,偏移地址d这条指令往往改变了段寄存器段寄存器DSDS的内容,使得DS指向了另外一个数据段。例例:LDS SI,BASE设执行前,DS=1000HDS=1000H,SI=0000HSI=0000H,BASE偏移地址为0004H,10004H10007H单元内容依次为00H,30H,00H,20H,则执行后,DS=2000HDS=2000H,SI=3000HSI=3000H003000200004HSI=3000H原DS所指向的数据段新DS所指向的数据段10
59、00H1610000HDS BASE30002000SIDS2000H1620000HDS (3) LES d, s功能功能:装入地址指针,段地址 ES,偏移地址d(1) LAHF功能功能:将标志寄存器低低8 8位位装入AHAH寄存器 SF ZFAFPFCFFR70 AH(2) SAHF功能功能:把AHAH的内容送入标志寄存器的低低8 8位位。(3) PUSHF功能功能:把16位的标志寄存器压入堆栈堆栈保存,同时SPSP2 2SPSP。 (4) POPF功能功能:将当前当前SPSP所指内容(2字节)弹出至标志寄存器标志寄存器,同时SP+2SP+2SPSP。 功能:从指定端口输入数据至累加器ac
60、c (AL或AX) ,port=0255 (1) IN acc, portAH ALacc端口port 16位数据时 (2) IN acc, DX功能功能:从DX指示的端口输入数据至累加器acc , DX=065535(3) OUT port, acc功能:将累加器的数据输出至指定端口。(4) OUT DX,acc功能功能:将累加器的数据输出到DXDX所指示的端口。注注: 16位端口地址必须送入DX中。 若采用AX,则表示16位数据传送(输入/输出)3.5.1.2 算术运算指令算术运算指令 算术运算指令的操作数可以是无符号数,算术运算指令的操作数可以是无符号数,也可以是有符号数。也可以是有符号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025药店药品采购协议范本:药店药品采购合同模板
- 2025设备采购合同范本:现代企业设备采购协议示范文本
- 当代网络医学信息-搜索与运用馆员培训讲座课件
- 湖北省武汉市黄陂区七中2025届高三下学期考前模拟检测(一)语文试题(含答案)
- 电器销售合同协议模板
- 电商经纪代理合同协议
- 用工安全协议合同协议
- 电缆桥架采购合同协议
- 留学申请机构合同协议
- 画室双方合作合同协议
- 室外云台摄像机施工方案
- 2025年中铁集装箱运输有限责任公司招聘46人(京外地区岗位)笔试参考题库附带答案详解
- 2025年甘肃华亭煤业集团有限责任公司招聘笔试参考题库含答案解析
- 妊娠合并支气管哮喘课件
- 2025河南中烟漯河卷烟厂招聘7人易考易错模拟试题(共500题)试卷后附参考答案
- 大数据行业数据资产转让协议范本
- 三农村合作社应急管理方案
- s7-200smart详细教学教案
- 旅馆业治安管理培训会
- 血透病人皮肤瘙痒课件
- 国际农业技术转移与合作-深度研究
评论
0/150
提交评论