第三章 指令系统_第1页
第三章 指令系统_第2页
第三章 指令系统_第3页
第三章 指令系统_第4页
第三章 指令系统_第5页
已阅读5页,还剩222页未读 继续免费阅读

下载本文档

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

文档简介

1、第第3章章 指令系统指令指令: :控制计算机进行某种操作的命令控制计算机进行某种操作的命令指令系统指令系统: :指令的集合指令的集合2 指明计算机的有关部件执行什么操作; 指明参加操作的是一些什么样的数; 指明这些操作数存放在什么地方,以及通过什么方式才能够找到它们; 指明后继指令从哪里取出。第一节 指令的基本格式指令包含的基本内容指令包含的基本内容1. 1. 做什么操作做什么操作由指令的由指令的操作码操作码字段规定。字段规定。2. 2. 操作数的来源操作数的来源操作数来自于什么地方。由指令的操作数来自于什么地方。由指令的操作操作数数字段规定。字段规定。操作数的来源可以是:操作数的来源可以是:

2、 a. CPU内的某个内的某个寄存器寄存器;b. 存储器内的某一个或几个存储器内的某一个或几个单元单元;c. I/O端口端口; d. 立即数。立即数。3. 3. 操作结果的去向操作结果的去向操作的操作的结果结果将存放在何处。将存放在何处。4. 4. 下一条指令的位置下一条指令的位置指示下一条指令是指示下一条指令是顺序顺序执行还是执行还是转移转移执行。执行。指令的种类指令的种类1. 1. 数据处理指令数据处理指令2. 2. 数据传送指令数据传送指令3. 3. 程序处理指令程序处理指令4. 4. 状态管理指令状态管理指令指令的表示方法指令的表示方法1. 二进制代码表示二进制代码表示机器语言指令机器

3、语言指令2. 助记符表示助记符表示汇编语言指令汇编语言指令例例:10001000 11011000例例:MOV BL,ALMOV表示表示“传送传送”助记符,助记符,BL(寄存器)(寄存器)表示结果存放的位置,表示结果存放的位置,AL(寄存器)表示数(寄存器)表示数据的来源。据的来源。助记符表示的指令便于书写、理解和助记符表示的指令便于书写、理解和记忆,但最终必须将助记符指令记忆,但最终必须将助记符指令“翻译翻译”成成机器指令才能被识别和执行。这个过程叫机器指令才能被识别和执行。这个过程叫“汇编汇编”。助记符指令助记符指令机器指令机器指令汇编汇编指令的书写格式 标号标号: : 指令助记符指令助记

4、符 操作数操作数 ;注释;注释 标号标号: :给指令所在地址起的名字给指令所在地址起的名字指令助记符指令助记符: :指明指令的操作类型指明指令的操作类型操作数操作数: :指明指令操作对象或操作对象存放地址:指明指令操作对象或操作对象存放地址:注释部分注释部分: :可选项可选项, ,必须用分号开头必须用分号开头9地址地址:数据和指令存放的位置。:数据和指令存放的位置。数据存放的位置可以是数据存放的位置可以是寄存器寄存器、存储器存储器或或I/OI/O端口端口指令存放的位置只能是存储器中的指令存放的位置只能是存储器中的代码段代码段。寻址方式:寻址方式:寻找指令地址和操作数地址的方式。寻找指令地址和操

5、作数地址的方式。寻址过程:寻址过程:形成指令地址和操作数地址的过程。形成指令地址和操作数地址的过程。第二节寻址方式一 立即数寻址方式11指令操作数直接包含在指令中它是一个8位或16位的常数AHALAX5678代码段代码段 (存储器中存储器中).B83412.操作码操作码(B8)操作数操作数(1234H)立即数立即数一条指令一条指令指令执行后,指令执行后,AX=1234H (原有的内容被新的内容替换原有的内容被新的内容替换)。1234MOV AX,1234H立即寻址方式特点:1 执行速度快:操作数是直接从指令中取得,不执行总线周期,所以执行速度快;2 立即数只能作源操作数,不能作目的操作数;3

6、主要用来给寄存器或存储器赋初值。12注意事项13源操作数与目的操作数类型必须匹配源操作数与目的操作数类型必须匹配 8位(字节)立即数可装入位(字节)立即数可装入8位或位或16位寄存器位寄存器16位(字)立即数只能装入位(字)立即数只能装入16位寄存器。位寄存器。 MOV AL,14H 执行后,执行后,(AL)=14H MOV AX,14H 执行后,执行后,(AX)=0014H MOV BP,1234H 执行后执行后(BP)=1234H思考:思考:指令是否正确指令是否正确 MOV AL,1234H MOV BL,123H二 寄存器器寻址方式操作数存放在寄存器中,由指令指定寄存器的名称。操作数存放

7、在寄存器中,由指令指定寄存器的名称。1616位寄存器:位寄存器:AXAX、BXBX、CXCX、DXDX、SISI、DIDI、SPSP、BPBP8 8位寄存器:位寄存器:AHAH、ALAL、BHBH、BLBL、CHCH、CLCL、DHDH、DLDL例:例:MOV AX,BX MOV AX,BX ;1616位寄存器传送,位寄存器传送, ;(BX) (BX) AXAX MOV DL,CL MOV DL,CL ;8 8位寄存器传送,位寄存器传送, ;(CL) (CL) DLDL14例例:INC BL操作操作:使:使BL中内容加中内容加1后送回后送回+1BL00若若BL=00H,则执行后,则执行后BL=

8、01HBL=FFH,则执行后,则执行后BL=00H (自动溢出自动溢出)01寄存器寻址方式特点:特点: 1 1 执行速度快:操作数就在执行速度快:操作数就在CPUCPU内部,内部, 不执行总线周期;不执行总线周期; 2 2 源操作数和目的操作数都可使用寄存器寻址。源操作数和目的操作数都可使用寄存器寻址。 注意注意: : 源操作数的长度必须与目的操作数源操作数的长度必须与目的操作数 一致,否则出错。一致,否则出错。 MOV CX , AHMOV CX , AH16三 固定寻址方式( (隐含寻址隐含寻址) )P U S H s ; S P 2 S P, 源 操 作 数源 操 作 数 压 入压 入

9、堆 栈堆 栈 保 存保 存POP d;SP所指堆栈所指堆栈的的内容内容送目送目 标,标,SP+2 SP例:例:PUSH BX;把;把BX内容压入堆栈内容压入堆栈设设 SS=2000H,SP=0040H,BX=2340H则执行后,则执行后,2340H被保存到堆栈,同时被保存到堆栈,同时SP=003EH,BX内容不变内容不变SS 1620000HSP=0040H(初值初值)20040H2003EH4023SP=003EH(压栈后压栈后)XX23 40BX注注:s和和d只能为只能为16位寄存器或存储器位寄存器或存储器错误指令:错误指令:PUSH 1234HPOP AL20三 存储器寻址操作数在操作数

10、在存储器存储器中的一个或几个中的一个或几个单元单元中。中。在这种寻址方式下,要找到该操作数,关键是必须找在这种寻址方式下,要找到该操作数,关键是必须找到该操作数所在单元的到该操作数所在单元的地址地址。由于由于8086采用存储器段组织结构,内存单元的地址由采用存储器段组织结构,内存单元的地址由段起始地址段起始地址 (基地址基地址) 和该单元与段起始地址之间的和该单元与段起始地址之间的距距离离 (以以字节数字节数计计) 两部分共同决定。两部分共同决定。执行步骤CPU首先根据操作数字段提供的地址信息,首先根据操作数字段提供的地址信息,由执行部件由执行部件EU计算出有效地址计算出有效地址EA再由总线接

11、口单元再由总线接口单元BIU根据公式根据公式PA(16段首址)段首址)EA 计算出实际物理地址计算出实际物理地址执行总线周期访问存储器,取得操作数,执行总线周期访问存储器,取得操作数,最后再执行指令规定的基本操作。最后再执行指令规定的基本操作。有效地址有效地址EA待寻址的内存单元待寻址的内存单元(CS, DS, ES, SS) 16 段基地段基地址址 物理地址物理地址 =段基值段基值 16+EA 内存单元物理地址内存单元物理地址存储器寻址方式分类存储器寻址方式共有存储器寻址方式共有2424种。种。按EA的计算方法不同分为:22直接寻址方式寄存器间接寻址变址寻址基址寻址相对的基址变址寻址基址加变

12、址寻址1.直接寻址方式操作数所在存储单元的偏移地址直接由指令给出。操作数所在存储单元的偏移地址直接由指令给出。MOV AX,2000HMOV AX,2000H STEP1: STEP1: 取指令机器码取指令机器码0A1H0A1H、00H00H、20H20H;STEP2: CPUSTEP2: CPU由由0A1H0A1H后得知本指令为数据传送指后得知本指令为数据传送指令,后面的字为存储单元的有效地址;令,后面的字为存储单元的有效地址;STEP3: STEP3: 计算操作数所在内存单元物理地址计算操作数所在内存单元物理地址PAPA1616(DS)(DS)EAEA,EAEA即为即为2000H2000H

13、。STEP4: CPUSTEP4: CPU执行总线操作,从执行总线操作,从PAPA地址单元取得地址单元取得数据送到数据送到AXAX寄存器。寄存器。23例 子设(DS)=3000H,则指令执行过程如下图所示:243412数据段代码段A1002032000H 12 34AXAH ALDS 10H=30000H ) 2000H 32000H3000H注意事项注意事项 在直接寻址方式下,在直接寻址方式下,缺省的段基址总由缺省的段基址总由DSDS给出给出,表明操作数在数据段中。表明操作数在数据段中。 操作数地址也可位于数据段以外的其它段。操作数地址也可位于数据段以外的其它段。在操作数地址前使用前缀指出段

14、寄存器名,称为前缀在操作数地址前使用前缀指出段寄存器名,称为前缀为为段超越前缀段超越前缀。 MOV ALMOV AL,ES:2000H ES:2000H ; 直接地址可用数值表示,被包括在直接地址可用数值表示,被包括在之中之中 直接地址用符号地址表示,可直接表示直接地址用符号地址表示,可直接表示252.2.寄存器间接寻址寄存器间接寻址操作数的有效地址操作数的有效地址EAEA为四个寄存器的内容为四个寄存器的内容BXBX、BPBP、SISI、DIDI例:例:MOV AX,BXMOV AX,BX EA=(BX),PA=(DS) EA=(BX),PA=(DS)16+(BX), 指令执行后,指令执行后,

15、AX=(PA)。26基址寄存器基址寄存器变址寄存器变址寄存器设设DS=2000H,BX=1000H本例执行后本例执行后 AX=50A0HDS=2000HDS 1620000H EA=BX(=1000H)21000H 50 A0 8B.04A050代码段代码段数据段数据段AX AH AL 这种寻址方式的优点就在于可以随时修改这种寻址方式的优点就在于可以随时修改BX寄存器的内寄存器的内容,而指向不同的存储单元。故容,而指向不同的存储单元。故BX又称为基址指针寄存器。又称为基址指针寄存器。注意事项注意事项 指令指定指令指定BXBX、SISI、DIDI为间址寄存器时,则操作数在数据段为间址寄存器时,则

16、操作数在数据段中。这种情况下用中。这种情况下用DSDS寄存器内容作段首址,操作数的实际地寄存器内容作段首址,操作数的实际地址由下式计算,其中址由下式计算,其中DSDS提供缺省段基址;提供缺省段基址; 28 (BX) PA16(DS) (SI) (DI) 指令中若指定指令中若指定BPBP为间址寄存器,则操作数在堆栈段中。为间址寄存器,则操作数在堆栈段中。这种情况下,用这种情况下,用SSSS寄存器内容作段首址,操作数的实际寄存器内容作段首址,操作数的实际地址为:地址为:PAPA1616(SS)(SS)(BP)(BP) 在指令中,也可指定段超越前缀来取得其它段中的操作在指令中,也可指定段超越前缀来取

17、得其它段中的操作数。例如:数。例如:MOV AXMOV AX,ES:BXES:BX 寄存器间接寻址方式可以用来对一维数组或表格进行处寄存器间接寻址方式可以用来对一维数组或表格进行处理,只要改变间址寄存器理,只要改变间址寄存器BXBX、BPBP、SISI、DIDI中的内容,用中的内容,用一条寄存器间接寻址指令就可对连续的存储器单元进行一条寄存器间接寻址指令就可对连续的存储器单元进行存取操作。存取操作。 29注意事项注意事项3.3. 寄存器相对寻址寄存器相对寻址 指定指定BXBX、BPBP、SISI,DIDI的内容进行间接寻址的同时的内容进行间接寻址的同时指令中还要指定一个指令中还要指定一个 8

18、8 位或位或 1616 位的位的位移量位移量 DISPDISP(DisplacementDisplacement),操作数的有效地址,操作数的有效地址EAEA等于变等于变址寄存器内容和位移量之和,结果按址寄存器内容和位移量之和,结果按1616位归算,位归算,即即30EA=(SI)(DI)(BX)(BP)DISP8DISP16+ 31对于寄存器为对于寄存器为BXBX、SISI、DIDI,用段寄存器,用段寄存器DSDS的内容作段的内容作段首址首址PA=(DS) 16 +16 +(SI)(SI)(DI)(DI)(BX)(BX)DISP8DISP16+对于寄存器BP,则使用段寄存器SS的内容作段首址。

19、操作数的实际地址为:注意事项注意事项PA=(SS) 16 +(BP)DISP8DISP16+ 32 采用相对寻址的指令,也可使用段超越前缀。采用相对寻址的指令,也可使用段超越前缀。 例如例如: MOV DL: MOV DL,ES:2000HSIES:2000HSI 例如例如: MOV DL: MOV DL,ES:2000HBPES:2000HBP位移量若为位移量若为8 8位位DISPDISP8 8( (以补码形式出现以补码形式出现) ) ,其数值范,其数值范围为围为-128-128+127+127,应将其变成,应将其变成1616位补码方能相加;位补码方能相加;位移量若为位移量若为1616位位D

20、ISPDISP1616(仍为补码,数值范围(仍为补码,数值范围- -3276832768+32767+32767),则直接相加。,则直接相加。取结果低取结果低1616位有位有效值效值。 该寻址通常是用来访问数组中的元素,该寻址通常是用来访问数组中的元素,位移量定位位移量定位于数组的起点于数组的起点,间址寄存器的值间址寄存器的值选择数组中的某个选择数组中的某个元素。元素。注意事项注意事项4.4.基址加变址寻址基址加变址寻址 存储器操作数的有效地址存储器操作数的有效地址EAEA由指令指定的一个基由指令指定的一个基址寄存器和一个变址寄存器的内容之和。址寄存器和一个变址寄存器的内容之和。BXBX、BP

21、BP为基址寄存器,为基址寄存器,SISI、DIDI为变址寄存器。为变址寄存器。PA=(DS) PA=(DS) 16 +16 + (BX)(BX) + +(SI)(SI)(DI)(DI)PA=(SS) PA=(SS) 16 +(BP)16 +(BP) + +(SI)(SI)(DI)(DI)EA =EA =(SI)(SI)(DI)(DI)+ +(BX)(BX)(BP)(BP) 34例:例:MOV AXMOV AX,BXSI BXSI 或书写为或书写为: : MOV AX MOV AX,BX+SIBX+SI设设(DS)(DS)2000H2000H,(BX)(BX)8000H8000H,(SI)(SI

22、)90FEH90FEH,则:则:(BX)(BX)(SI)(SI)8000H8000H90FEH90FEH110FEH110FEH 取低取低1616位有效得:位有效得: EAEA10FEH10FEH PA PA2000H2000H1616EAEA210FEH210FEH注意事项:注意事项: 35 PA计算公式中,BX可与SI或DI组合,BP也可与SI或DI组合,但BX不可与BP组合。BX的缺省段基址寄存器为DS,而而BPBP的缺省的缺省段基址寄存器为SS; 基址变址寻址方式也可使用段超越前缀; 例如: MOV CX,ES:BXSI。 基址变址寻址方式同样适合数组或表格的处理,由于基址和变址寄存器

23、中的内容都可以修改,因而在处理二维数组二维数组时特别方便。在处理数组时,SI用于源数组的变址寻址;DI则用于目的数组的变址寻址。5.5.相对基址变址寻址相对基址变址寻址 36在基址变址寻址基础上,再加上一个在基址变址寻址基础上,再加上一个8 8位或位或1616位的位移位的位移量,称为相对的基址变址寻址。量,称为相对的基址变址寻址。或:或:PA=(SS) PA=(SS) 16 +(BP)16 +(BP) + +(SI)(SI)(DI)(DI)DISPDISP8 8DISPDISP1616+ +PA=(DS) PA=(DS) 16 +16 +(BX)(BX)+ +(SI)(SI)(DI)(DI)D

24、ISPDISP8 8DISPDISP1616+ + 37例:例: MOV AXMOV AX, 0250HBXSI 0250HBXSI 或写为或写为: MOV AX: MOV AX, 0250HBX0250HBXSISI也可写为也可写为: MOV AX: MOV AX,BXBXSISI0250H0250H。设设(DS)(DS)3000H3000H,(BX)(BX)2000H2000H,(SI)(SI)1000H1000H,则源操作数的,则源操作数的实际地址为实际地址为: :PAPA30000H30000H(2000H(2000H1000H1000H0250H)0250H)33250H33250H

25、注意事项: 38 PA PA计算公式中,计算公式中,BXBX、 BPBP、SISI、DIDI组合关系与基组合关系与基址变址寻址方式相同;址变址寻址方式相同;可使用段超越前缀;可使用段超越前缀;该寻址方式为访问堆栈中的数组提供了方便,可该寻址方式为访问堆栈中的数组提供了方便,可以在以在基址寄存器基址寄存器BPBP中存放堆栈顶的地址,用中存放堆栈顶的地址,用位移量位移量表示栈顶到数组第一个元素的距离,表示栈顶到数组第一个元素的距离,变址寄存变址寄存器则器则用来访问数组中的每一个元素。用来访问数组中的每一个元素。例1:若(BX)=0158H,(DI)10A5H,位移量1B57H,(DS)2100H,

26、(SS)1100H(BP)=0100H,段寄存器按默认段寄存器,则相对于各种寻址方式的有效地址和物理地址是多少?(1)直接寻址(2)寄存器BX间接寻址(3)寄存器 BP相对寻址(4)BX和DI的基址加变址寻址(5)BP和DI的基址变址的相对寻址例2:说明画线操作数的寻址方式(1)MOV AX, 0A78H(2)MOV BX, SP (3) MOV AX, BP100H (4) MOV AX, 100HBP (5) MOV BX, SI+50H (6) MOV BX, 50HSI (7) MOV AL, BX+SI+30H (8) MOV AL, 30HBX+SI (9) MOV CX, SP6

27、 6 串寻址串寻址这类指令规定这类指令规定:源串源串操作数在操作数在数据段数据段,且有效地址,且有效地址EA=SI目的串目的串操作数在操作数在附加段附加段,且有效地址,且有效地址EA=DI指令执行后,指令执行后,自动自动修改修改SI,DI的值,使之指向新的的值,使之指向新的单元。单元。 8086的段约定的段约定8086在执行某种操作时,在执行某种操作时,预先预先规定了采规定了采用的段寄存器和段,即有基本的用的段寄存器和段,即有基本的段约定段约定。如。如果要改变默认的段约定,则果要改变默认的段约定,则需要在指令中明需要在指令中明 确指出来确指出来。8086/8088的段约定的段约定存储器存取方式

28、存储器存取方式基本段约定基本段约定 允许修改的段允许修改的段偏移地址偏移地址取指令取指令堆栈操作堆栈操作源串源串目的串目的串用用BP作基址寄存器作基址寄存器通用数据读写通用数据读写CSSSDSESSSDS无无无无ES,CS,SS无无CS,DS,ESCS,ES,SSIPSPSIDIEAEA前面所述的各种寻址方式实际上是前面所述的各种寻址方式实际上是数据寻址数据寻址方式,关方式,关键是如何找到键是如何找到操作数操作数。相对指令寻址方式属于相对指令寻址方式属于程序存储器寻址程序存储器寻址,关键是要找,关键是要找到下一条待执行指令的到下一条待执行指令的地址地址。指令给出的形式地址与指令给出的形式地址与

29、IP的内容相加,形成操作数的的内容相加,形成操作数的有效地址,是以有效地址,是以IP作为变址寄存器作为变址寄存器(1) 转移范围转移范围段内转移:转移范围在段内转移:转移范围在同一个段同一个段以内以内段间转移:从段间转移:从一个一个代码段转移至代码段转移至另一个另一个代码段代码段(2) 转移条件转移条件无条件转移无条件转移有条件转移有条件转移 (转移范围仅为转移范围仅为128+127)(3) 转移方式转移方式直接转移直接转移 (转移目标转移目标直接直接在指令中给出在指令中给出)间接转移间接转移 (转移目标预先放入某个转移目标预先放入某个寄存器寄存器或或存储器存储器中中)操作数在某个操作数在某个

30、8位位或或16位位端口端口中。中。端口地址可以置于端口地址可以置于DX中,但不能置于其它寄存器中。中,但不能置于其它寄存器中。端口的输入、输出数据只能置于累加器端口的输入、输出数据只能置于累加器AL或或AX中。中。注:注:b. 端口输出端口输出OUT port, ALa. 端口输入端口输入 IN AL,portport=端口地址端口地址 (8位,位,0255)例例:IN AL,80H操作操作:从端口地址为:从端口地址为80H的端口输入一字节送的端口输入一字节送AL。(1) 直接端口寻址直接端口寻址(2) 间接端口寻址间接端口寻址当端口地址超过一个字节时,将端口地址当端口地址超过一个字节时,将端

31、口地址送入送入DX,然后进行端口寻址:,然后进行端口寻址:输入:输入: IN AL,DX 输出:输出: OUT DX,AL注注: 若用若用AX代替代替AL,则表示,则表示16位数据的端位数据的端口。口。 端口地址大于端口地址大于255时,必须将端口地址时,必须将端口地址送入送入DX,即采用间接寻址端口方式。,即采用间接寻址端口方式。寻址方式小结:寻址方式小结:固定寻址固定寻址:操作数固定在某个:操作数固定在某个寄存器寄存器中中寄存器寻址寄存器寻址:操作数在某个:操作数在某个寄存器寄存器中中立即数寻址立即数寻址:操作数就是操作码后跟的:操作数就是操作码后跟的立即数立即数存储器寻址存储器寻址直接寻

32、址直接寻址间接寻址间接寻址串操作寻址串操作寻址基址寻址基址寻址变址寻址变址寻址基址基址+变址寻址变址寻址I/O端口寻址端口寻址直接端口寻址直接端口寻址间接端口寻址间接端口寻址相对寻址相对寻址总结1.1.所谓寻址就是指令寻找操作数的方式。实际程序中所谓寻址就是指令寻找操作数的方式。实际程序中所用指令往往只给出操作数地址;所用指令往往只给出操作数地址;2.2.立即数可以出现在方括号内,表示直接地址,如立即数可以出现在方括号内,表示直接地址,如2000H2000H;3.3.只有只有BXBX、BPBP、SISI、DIDI这四个寄存器可以出现在这四个寄存器可以出现在 内,它们可以单独出现,也可以由几个寄

33、存器组合内,它们可以单独出现,也可以由几个寄存器组合起来(其值相加),或以寄存器与常数相加的形式起来(其值相加),或以寄存器与常数相加的形式出现,但出现,但BXBX和和BPBP寄存器不允许出现在同一个寄存器不允许出现在同一个 内,内,SISI和和DIDI也不能同时出现在同一个也不能同时出现在同一个 内。内。524.4.方括号有相加的含义,下面几种写法都是等价的:方括号有相加的含义,下面几种写法都是等价的: 6BXSI BX6BXSI BX6SI BX6SI BXSISI6 6 5.5.若方括号内包含若方括号内包含BPBP,则隐含段寄存器为,则隐含段寄存器为SSSS,它们的物理,它们的物理地址的

34、计算方法为:地址的计算方法为:PAPA1616(SS)(SS)EAEA,其中,其中EAEA有下面有下面三种形式:三种形式: DISPBPDISPBPSI SI ;EAEA(BP)(BP)(SI)(SI)DISPDISP DISPBP DISPBPDI DI ;EAEA(BP)(BP)(DI)(DI)DISPDISP DISPBP DISPBP ;EAEA(BP)(BP)DISPDISP BP BP ;EAEA(BP) (BP) 其中,其中,DISPDISP表示表示8 8位或位或1616位位移量,也可以为位位移量,也可以为0 0。53总结6.6.若方括号内不包含若方括号内不包含BPBP,则隐含段

35、寄存器为,则隐含段寄存器为DSDS,物,物理地址计算方法为:理地址计算方法为:PAPA1616(DS)(DS)EAEA EA EA可以有以下几种形式:可以有以下几种形式: DISP DISP ;EAEADISPDISP BX BX ;EAEA(BP)(BP) DISPBX DISPBXSI SI ;EAEA(BX)(BX)(SI)(SI)DISPDISP DISPBX DISPBXDI DI ;EAEA(BX)(BX)(DI)(DI)DISPDISP DISPBX DISPBX ;EAEA(BX)(BX)DISPDISP DISPSI DISPSI ;EAEA(SI)(SI)DISPDISP

36、DISPDI DISPDI ;EAEA(DI)(DI)DISPDISP54总结7. 7. 如果指令使用段超越前缀,则在计算如果指令使用段超越前缀,则在计算PAPA时时将将SSSS或或DSDS修改为相应段前缀指定的段基址。修改为相应段前缀指定的段基址。8.8. 计算计算EAEA时,相加以后的结果一定要按时,相加以后的结果一定要按1616位位归算。归算。9.9.一条指令中的源操作数与目的操作数可使一条指令中的源操作数与目的操作数可使用不同的寻址方式,所以要说明一条指令的用不同的寻址方式,所以要说明一条指令的寻址方式,需将源操作数、目的操作数分别寻址方式,需将源操作数、目的操作数分别加以说明。加以说

37、明。55总结课堂练习与思考:课堂练习与思考:1.请指出下列每条指令源操作数的寻址方式。请指出下列每条指令源操作数的寻址方式。(1) MOV AX, 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;寄存器寻址寄存器寻址,操作数在,操作数在BX中中 ;立即数寻址,操作数为立即数寻址,操作数为3AH ;直接寻址,直接寻址,EA=2000H,数在数据段,数在数据段 ;基址寻址基址寻址(寄存器寄存器间接寻址

38、间接寻址),EA=BX,数在数据段,数在数据段 ;基址寻址,基址寻址,EA=BP+2,数在堆栈段,数在堆栈段 ;相对基址变址寻址,相对基址变址寻址,EA=BX+DI+3,数在数据段,数在数据段 ;含段超越的变址寻址,含段超越的变址寻址,EA=SI,数在附加段,数在附加段 ;含段超越的基址寻址,含段超越的基址寻址,EA=BP,数在数据段,数在数据段课堂练习与思考:课堂练习与思考:2. MOV AX2. MOV AX,BX+SI+0080HBX+SI+0080H什么寻址方式?什么寻址方式?3.3.设设BX=0123H DI=1000H DS=3200HBX=0123H DI=1000H DS=32

39、00H,默认,默认DSDS作为操作为操作数对应的段寄存器作数对应的段寄存器( (假定没使用段前缀假定没使用段前缀) ),试指出下,试指出下列指令的寻址方式,并写出其操作数的有效地址和物列指令的寻址方式,并写出其操作数的有效地址和物理地址。理地址。 (1)MOV AX,1A38H (2)MOV AX,BX (3)MOV AX,BX+1A38H (4)MOV AX,BX+DI (5)MOV AX,BX+DI+1A38H课堂练习与思考:课堂练习与思考:(1)直接寻址)直接寻址 有效地址有效地址=1A38H, 物理地址物理地址=32000H+1A38H=33A38H (2)寄存器间接寻址)寄存器间接寻

40、址 有效地址有效地址=0123H, 物理地址物理地址=32000H+0123H=32123H (3)寄存器相对基址寻址)寄存器相对基址寻址 有效地址有效地址=0123H+1A38H=1B5BH, 物理地址物理地址=32000H+1B5B=33B5BH (4) 基址变址寻址基址变址寻址 有效地址有效地址=0123H+1000H=1123H, 物理地址物理地址=32000H+1123H=33123H (5)相对基址变址寻址)相对基址变址寻址 有效地址有效地址=0123H+1000H+1A38H=2B5BH, 物理地址物理地址=32000H+2B5BH=34B5BH 写出以下指令中的操作数是什么操作

41、数,如果为内存操作数,写出内存操作数的EA和PA,并说明操作数的寻址方式。 MOV AL, 89H MOV AL, BX+5 MOV AX, 348AH MOV BX, AX MOV CX, 110HDI MOV BX, 30HBPDI MOV AX, BX+SI100H 第三节第三节 8086/8088指令系统指令系统 8086/8088指令系统包含133条基本指令,这些指令与寻址方式组合,再加上不同的数据形式有的为字处理,有的为字节处理,可构成上千种指令。这些指令按功能可分为六类: 数据传送类;数据传送类; 算术运算类;算术运算类; 逻辑运算与移位类;逻辑运算与移位类; 串操作类;串操作类

42、; 控制转移类;控制转移类; 处理器控制类。处理器控制类。60一一 数据传送类数据传送类 作用作用: :用于数据的存放和交换用于数据的存放和交换 功能:实现功能:实现CPUCPU内部寄存器之间、内部寄存器之间、CPUCPU和存和存储器之间以及储器之间以及CPUCPU和和I/OI/O端口之间的数据端口之间的数据传送。传送。 特点:特点: 含两个操作数;含两个操作数; 除除SAHFSAHF和和POPFPOPF指令外,数据传送指指令外,数据传送指令不影响标志寄存器内容。令不影响标志寄存器内容。62数据传送类指令数据传送类指令重点:重点:63通用数据传送通用数据传送累加器专用传送指令累加器专用传送指令

43、地址目标传送指令地址目标传送指令标志传送指令标志传送指令一、数据传送指令一、数据传送指令数据传送指令能够完成下列操作数的传送任务。数据传送指令能够完成下列操作数的传送任务。立即数立即数存储器存储器段寄存器段寄存器CS,DS,ES,SS通用寄存器组通用寄存器组AX,BX,CX,DXBP,SP,SI,DI(CS不能作目的不能作目的)(1) MOV d, s功能功能:将源操作数:将源操作数s复制到目标操作数复制到目标操作数d,源保持不变源保持不变,目标被源代替目标被源代替。注注: d, s不能同时为存储器不能同时为存储器错误指令:错误指令:MOV BX,SI d不能为立即数不能为立即数 错误指令:错

44、误指令:MOV 1234H,AX d, s必须同时为字节型或字型必须同时为字节型或字型错误指令:错误指令:MOV AX,BL 注注: 不允许在段不允许在段R之间直接传送信息之间直接传送信息错误指令:错误指令:MOV DS,ES 改为两条语句:改为两条语句:MOV BX,ESMOV BX,ESMOV DS,BXMOV DS,BX 不能向段寄存器送立即数不能向段寄存器送立即数错误指令:错误指令:MOV DS,1234H不能用不能用CS和和IP作目的操作数,作目的操作数,CS和和IP的内容可以的内容可以 读出,但不能随意修改读出,但不能随意修改错误指令:错误指令:MOV CS,BX MOV IP,3

45、000H R R/ /R R传送实例传送实例 MOV AX,BX;BX中16位数据传送到AXMOV SI,BP;BP中16位数据传送到SI MOV AH,BL;BL中8位数据传送到AH 68返回例例:MOV AX,0 ; AX0,AX清清0 执行后,执行后,AX=0MOV SI,BP ; SIBP,BP内容送内容送SI 执行后,执行后,SI=BP,BP不变不变段段R R/ /R R传送实例传送实例 MOV DS,AX ;AX中16位数据传送到DS MOV AX,ES ;ES中16位数据传送到AX70返回R/ImR/Im传送实例传送实例MOV CL,* ;执行后CL2AH(*的ASCII码)MO

46、V AX,03FFH ;执行后AX03FFHMOV SP,2000H ;执行后SP2000HMOV BX,1000 ;执行后BX03E8HMOV SI,057BH ;执行后SI057BHMOV AL, 41H ;执行后AL=41H 字符串用 括起来,表示该字符串的ASCII码值。实际上西文文本采用ASCII码存储 。 71返回M/ImM/Im传送实例传送实例MOV WORD PTR2000H,6789H ;执行后(2000H)89H,(2001H)67HMOV WORD PTRSI,1234H ;立即数1234H送DS段(SI)和(SI)+1 ;所指的两存储单元 运算符 PTR 用于修改存储器

47、操作数的类型属性,如例中的 WORD PTR2000H定义从2000H单元开始的连续两个单元为字变量。 72返回R R/ /M M传送实例传送实例 MOV AX,SI;将DS段(SI)和(SI)+1单元的内容送AX MOV DI,CX;将CX的内容送DS段(DI)和(DI)+1所指的存储单元 MOV SI,BLOCKBP;将SS段EA为(BP)+BLOCK字单元的内容送SI73返回MOV AL,BUFFERS ;BUFFERS内存内存单元内容送入单元内容送入ALBUFFERS代表代表符号地址符号地址,从该地址单元中,从该地址单元中取出内容送取出内容送AL寄存器。寄存器。属于直接寻址方式。属于直

48、接寻址方式。EA=BUFFERS偏移量偏移量3030HBUFFERSALDS 1630000H123434H12HAXAH ALEA=1300HDATASIBXDATA31300H31301HMOV AX,DATA SI+BX段段R R/ /M M传送实例传送实例 MOV DS,2000H ;将2000H和2001H两存储单元 的内容送DS MOV BXSI,CS ;CS内容送DS段(BX)+(SI)所指 的字存储单元 MOV DS,DATABX+SI ;将DS段(BX)+(SI)+DATA所 指的字单元的内容送DS MOV DESTBP+DI,ES ;ES内容送SS段 (BP)+(DI)+D

49、EST所指的字存储单元 返回(2)堆栈操作指令)堆栈操作指令建栈:规定堆栈底部在存储器中的位置,即设置堆栈指针和SS。进栈: 将16位的源操作数推入堆栈,目标地址诶当前栈顶。 PUSH src ;SP (SP)-2 (SP) src出栈:将当前栈顶的一个字送回目的操作数 POP dst ;dst (SP) SP (SP)+277例:例:PUSH BX;把;把BX内容压入堆栈内容压入堆栈设设 SS=2000H,SP=0040H,BX=2340H则执行后,则执行后,2340H被保存到堆栈,同时被保存到堆栈,同时SP=003EH,BX内容不变内容不变SS 1620000HSP=0040H(初值初值)

50、20040H2003EH4023SP=003EH(压栈后压栈后)XX23 40BX入栈和出栈指令的格式 通用寄存器的进/出栈 PUSH AX POP BX 段寄存器进/出栈 PUSH CS POP DS 存储单元进/出栈 PUSH SI POP 2000HPUSHF功能功能:SP-2 SP,同时将同时将标志寄存器标志寄存器压栈至压栈至当当前前SP所指内容所指内容(2字节字节) 。此指令在执行时标志寄存器的值不变此指令在执行时标志寄存器的值不变. POPF功能功能:将:将当前当前SP所指内容所指内容(2字节字节)弹出弹出至至标志寄存器标志寄存器,同时,同时SP+2SP。 一般用在子程序和中断处理

51、程序的首尾一般用在子程序和中断处理程序的首尾,起保存主程起保存主程序标志和恢复主程序标志的作用序标志和恢复主程序标志的作用.注注:s和和d只能为只能为16位寄存器或存储器位寄存器或存储器错误指令:错误指令:PUSH 1234HPOP AL堆栈、堆栈区堆栈、堆栈区堆栈是以“先进后出”,或者LIFO“后进先出”方式工作的一个存储区,它只有一个出入口。堆栈指针SP指示堆栈的出入口,SP任何时候都指向当前的栈顶。 SS与SP给出堆栈栈顶的逻辑地址,计算栈顶物理地址PA=(SS)10H+(SP) 82注意事项注意事项 堆栈栈顶隐含寻址,堆栈栈顶隐含寻址,srcsrc、dstdst可以是可以是R R、SR

52、SR、存、存储器储器( (可使用各种存储器寻址方式可使用各种存储器寻址方式) )或标志寄存器;或标志寄存器; 8086/80888086/8088堆栈操作总是以字为单位进行;堆栈操作总是以字为单位进行; 8086/80888086/8088栈顶是所谓的实栈顶;栈顶是所谓的实栈顶; CSCS寄存器可进栈,但不能随意弹出一个数据到寄存器可进栈,但不能随意弹出一个数据到CSCS。 堆栈的容量有限,因此进栈和出栈要成对出现,堆栈的容量有限,因此进栈和出栈要成对出现,否则将有数据残留在堆栈中,时间一长,堆栈会否则将有数据残留在堆栈中,时间一长,堆栈会满的!满的! 83例:利用堆栈操作指令将例:利用堆栈操

53、作指令将DS:1000HDS:1000H单元内单元内容送容送ES ES 寄存器。寄存器。 PUSH 1000HPUSH 1000H POP ES POP ES堆栈操作指令堆栈操作指令堆栈操作指令例:编程实现例:编程实现AXAXBXBX,BXBXCXCX,CXCXAXAX。85解法解法1:MOV DX, AXMOV AX, CXMOV CX, BXMOV BX, DX需要一个中间变量需要一个中间变量解法解法2:PUSH AXPUSH BXPUSH CXPOP AXPOP CXPOP BX无需中间变量无需中间变量例3:已知AX=1234H,BX=5678H,连续执行以下指令后SP、BP和DX的内容

54、是什么?MOV SP, 60HPUSH AXPUSH BXMOV BP, SPMOV BX, BP+2POP BPPOP DX例2:已知SS=1234H,SP=0020H,(AX)0A2E1H,(BX)=6F93H,执行以下指令后栈顶单元的物理地址是多少,画出堆栈图? PUSH BX; POP DX; PUSH AX; PUSH DX; PUSH BX; POP ES;(3)交换指令)交换指令88 指令格式:指令格式: XCHG dst,src 功能:功能: dst src 使用注意事项:使用注意事项: 交换指令可实现交换指令可实现CPU内部内部R之间,或内部之间,或内部R与与M之间的内容(字

55、节或字)交换;之间的内容(字节或字)交换; dst 和和src不能同时为存储器操作数;不能同时为存储器操作数; 任一个操作数都不能使用段寄存器和任一个操作数都不能使用段寄存器和IP,也不能使用立即数。也不能使用立即数。例:例:XCHG AX,SI+400H执行后,执行后,5678H被送到内存单元被送到内存单元AX=1234H3412SI+400H5678AH ALAX34127856功能:从指定端口输入数据至累功能:从指定端口输入数据至累加器加器acc (AL或或AX) ,port=0255 输入指令输入指令IN acc, portAH ALacc端口端口port 16位数据时位数据时 IN

56、acc, DX功能功能:从:从DX指示的端口输入数据至累指示的端口输入数据至累加器加器acc , DX=065535输出指令输出指令功能:功能:将累加器的数据输出至指定端口。将累加器的数据输出至指定端口。OUT DX,acc功能功能:将累加器的数据输出到:将累加器的数据输出到DX所指示的端口。所指示的端口。注注: 16位端口地址必须送入位端口地址必须送入DX中。中。 若采用若采用AX,则表示,则表示16位数据传送位数据传送(输入输入/输出输出)OUT port, acc输入/输出数据传送指令说明1 这类指令只能用累加器AL/AX作I/O操作的机构,不能用其它寄存器;2 当端口地址为两字节长时,

57、端口地址必须放在DX寄存器中 (2)(2)换码指令换码指令 格式:格式: XLATXLAT功能:功能: AL AL (BX)+(AL)(BX)+(AL)特点:特点: 隐含寻址;隐含寻址; 常用于简单的代码转换,常用于简单的代码转换,BXBX中存放代码中存放代码表首地址,表首地址,ALAL中存放待查代码的索引值。中存放待查代码的索引值。94XLAT 指令小结指令小结 a: 表首相对于段起始地址的偏移量预先送入表首相对于段起始地址的偏移量预先送入BX中;中;b. 待查找的待查找的表内表内某单元相对于表首的某单元相对于表首的偏移量偏移量送入送入AL中;中;c. 以以EA=BX+AL在表中(数据段)查

58、找,将查得的在表中(数据段)查找,将查得的数据再送回数据再送回AL中。中。例例:设表首的偏移地址为:设表首的偏移地址为2000H,要查找表,要查找表内第内第4号单元号单元 (从从0号算起号算起)的内容并送的内容并送回回AL,则程序段如下:,则程序段如下:MOV BX,2000HMOV AL,04HXLAT18H34H05H06H09H2000HBX 04HAL(表首表首)TABLE DS 1604 AL09 则执行后,则执行后,AL=09H 例:例:设设ALAL中有一十六进数字中有一十六进数字(0(09 9、A AF)F),求其对,求其对应的应的ASCIIASCII码。码。解:解: MOV B

59、X, TABLE MOV AL, 8 XLAT TABLE:DB 30H,31H,32H,33H,34HDB 35H,36H,37H,38H,39HDB 41H,42H,43H,44H,45HDB 46H 问:问: 983.地址地址目标传送指令目标传送指令传送到传送到1616位目标寄存位目标寄存器中的是器中的是存储器操存储器操作数的地址作数的地址,而不,而不是它的内容。是它的内容。获得存储器操作数的获得存储器操作数的段地址或偏移地址。段地址或偏移地址。 99有效地址送寄存器指令有效地址送寄存器指令LEA指针送寄存器和指针送寄存器和DS的指令的指令LDS指针送寄存器和指针送寄存器和ES的指令的指

60、令LES(1)取有效地址指令取有效地址指令格式:格式: LEA R LEA R,src src 功能:功能: R R OFFSET(src)OFFSET(src)即即取存储器源操作数有效地址有效地址送入目标d例:LEA BX,COUNTER;取COUNTER地址偏移量BX若COUNTER地址偏移量为0002H,则执行后BX=0002H 例:例:区分两个指令区分两个指令MOVMOV BX,SI+BP BX,SI+BPLEALEA BX,SI+BP BX,SI+BP 100(2)将地址指针装到将地址指针装到DS和另一和另一个寄存器的指令个寄存器的指令格式格式:LDS RLDS R,src src

温馨提示

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

评论

0/150

提交评论