




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、主讲主讲 尹作友尹作友v 8086CPU内部结构SIDIBPSPAHBHCHDHALBLCLDLIPPSWDSESSSCS段基址 偏移地址地址加法器物理地址p80868086的寻址方式的寻址方式p微机系统指令的机器码表示方法微机系统指令的机器码表示方法p80868086的指令系统的指令系统 概述概述 计算机的指令指令包括:操作码操作码 操作数操作数 操作的性质性质操作的对象对象 存放在 寄存器寄存器、存储器存储器、I/OI/O端口地址端口地址、立即数立即数(由寻址方式决定)寻址方式:寻址方式:指令中说明操作数所在地址的方法。指令分类:指令分类:单操作数、双操作数、无操作数。(双操作数指令形式:
2、操作码 目的操作数,源操作数)概述概述 各种寻址方式指令执行各种寻址方式指令执行速度不同速度不同: 操作数在寄存器操作数在寄存器中指令执行速度中指令执行速度快快:在:在CPUCPU内部立内部立即执行;即执行; 立即数寻址立即数寻址指令执行速度指令执行速度较快较快:直接从指令队列:直接从指令队列中取数;中取数; 操作数在存储器操作数在存储器中指令执行速度中指令执行速度较慢较慢:通过总线:通过总线与与CPUCPU交换数据。交换数据。CPUCPU进行读进行读/ /写存储器的操作:写存储器的操作:把一个偏移量送把一个偏移量送到到BIUBIU,计算出,计算出2020位物理地址;位物理地址;执行总线周期执
3、行总线周期存取操作数。存取操作数。概述概述 概述概述 一、立即寻址方式一、立即寻址方式二、寄存器寻址方式二、寄存器寻址方式三、直接寻址方式三、直接寻址方式四、寄存器间接寻址方式四、寄存器间接寻址方式五、寄存器相对寻址方式五、寄存器相对寻址方式六、基址变址寻址方式六、基址变址寻址方式七、相对基址变址寻址方式七、相对基址变址寻址方式八、其它八、其它立即寻址方式立即寻址方式 1 1含义:含义:操作数是立即数立即数(即8位或16位的常数),直接包含在含在指令中指令中。2 2特点:特点: 翻译成机器码时,立即数是指令的一部分指令的一部分,紧跟在操作码之后存放在代码段内。在取出指令的同时也就取出了操作数,
4、立即有操作数可用,所以称之为立即寻址。 l6l6位数位数:高字节高字节代码段的高地址高地址单元,低字节低字节低低地址地址单元; 3 3作用:作用: 常用于给寄存器赋初值赋初值。立即寻址方式立即寻址方式 例 MOV CX,2A50H 解:将立即数2A50H送到CX寄存器中。(又例: MOV CL,20H)4注意:立即数可以送到寄存器、一个存储单元(8位)、两个连续的存储单元(16位)中去;立即数只能作源操作数,不能作目的操作数;以AF打头的数字出现在指令中时,前面必须加数字0。以免与其它符号相混淆(如:0AF22H)。MOV CX, 2A50H寄存器寻址方式寄存器寻址方式 1 1含义:含义: 操
5、作数包含在寄存器中,寄存器的名称由指令指定。2 2特点:特点:寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP等。 8位操作数:寄存器AH、AL、BH、BL、CH、CL、DH和DL。3 3作用:作用:寄存器之间传递数据。 例例 MOV DX,AX 解:解: (AX)送到CX寄存器中。(AX内容不变) (又例: MOV BL,AL)4 4注意:注意:源操作数的长度长度必须与目的操作数致致。(注:(注:以下寻址方式下,指令的操作数在存储器中,要先求物理地址才能获得操作数。) 直接寻址方式直接寻址方式 1含义: 存储单元的有效地址EA(即:操作数的偏移地址)直接由指令给出。 2特点: 机器
6、码中,有效地址存放在代码段中指令的操作码之后,而该地址单元中的数据总是存放在存储器中。须先求出操作数的物理地址,再从存储器中取得操作数。 操作数的物理地址16DS EA 3作用: 实现对存储单元的读/写操作。 直接寻址方式直接寻址方式 例 MOV AX,2000H解:设DS = 3000H; 设:(32000H)= 1234H 由指令得:EA = 2000H (16位逻辑地址) 物理地址 = 163000H 2000H = 32000H (20位,20根地址线) 则: AX = 1234H 指令执行过程如图所示。(注:如用AL替代AX,则AL=34H)直接寻址方式直接寻址方式 2.2.段超越前
7、缀段超越前缀MOV MOV AX, AX, ES:500HES:500H3.3.符号地址符号地址AREA1AREA1EQUEQU0867H0867HMOVAX,AREA1等价为MOVAX,AREA1寄存器间接寻址方式寄存器间接寻址方式1含义:操作数的有效地址放在寄存器中。2特点:使用寄存器:基址寄存器BX、 BP,变址寄存器SI、DI 。操作数的物理地址 16DS BX/SI/DI 或 16SS BP3作用:有效地址可以存放在寄存器中。 寄存器间接寻址方式寄存器间接寻址方式例例 MOV BXMOV BX,SISI 解:设:解:设:DSDS1000H1000H,SISI2000H2000H,(1
8、2000H)(12000H)318BH318BH 则:物理地址则:物理地址 1616DS DS SISI 10000H 10000H 2000H 2000H 12000H12000H 指令执行后,指令执行后,BXBX318BH318BH,指令执行过程如图所示。,指令执行过程如图所示。 4 4注意:注意:寄存器名称外必须加方括号方括号,以区别寄存器寻址方式; 段超越前缀段超越前缀来从默认段以外的段中取得数据; 例 MOV BX,ES:SI关于默认段默认段: 指定寄存器BX、SI或DI,默认操作数存放在数据段DS中; (DSDS:BXBX,SISI,DIDI) 指定寄存器BP,默认操作数存放在数据
9、段SS中; (SSSS:BPBP) 寄存器间接寻址方式寄存器间接寻址方式寄存器相对寻址方式寄存器相对寻址方式1 1含义:含义: 操作数的有效地址有效地址是基址或变址寄存器基址或变址寄存器的内容与8位或16位位移量位移量(Displacement)之和和。即 BX / BP EA = + 8位偏移量/16位偏移量 SI / DI 2 2特点:特点: 使用:BX、BP、SI、DI 。 操作数的物理地址 16DS BX/SI/DI COUNT 或 16SS BP COUNT 寄存器相对寻址方式寄存器相对寻址方式例例 MOV BXMOV BX,COUNT SICOUNT SI ; ;或:或:MOV B
10、XMOV BX,COUNTCOUNTSISI解:设:解:设:DSDS3000H3000H,SISI2000H2000H,位移量,位移量COUNTCOUNT4000H4000H, (36000H)=318BH(36000H)=318BH则:物理地址则:物理地址 1616DS DS SI SI COUNTCOUNT 30000H 30000H 2000H 2000H 4000H4000H 36000H36000H指令执行后,指令执行后,BXBX318BH318BH403000 3 3注意:注意:寄存器名称外必须加寄存器名称外必须加方括号方括号,位移量可以在括号,位移量可以在括号内,也可以在括号外;
11、内,也可以在括号外; 段超越前缀段超越前缀来从默认段以外的段中取得数据;来从默认段以外的段中取得数据; 例例 MOV DHMOV DH,ESES:ARRAYSIARRAYSI关于关于默认段默认段: 指定寄存器指定寄存器BXBX、SISI或或DIDI,默认操作数存放在数,默认操作数存放在数据段据段DSDS中;中; (DSDS:BXBX,SISI,DIDI) 指定寄存器指定寄存器BPBP,默认操作数存放在数据段,默认操作数存放在数据段SSSS中;中; (SSSS:BPBP) 寄存器相对寻址方式寄存器相对寻址方式基址变址寻址方式基址变址寻址方式1 1含义:含义: 操作数的操作数的有效地址有效地址是一
12、个是一个基址寄存器基址寄存器(BXBX、BPBP)的内)的内容与一个容与一个变址寄存器变址寄存器(SISI、DIDI)的)的内容之和内容之和。2 2特点:特点:使用的使用的寄存器寄存器:基址寄存器:基址寄存器BXBX、BPBP,变址寄存器,变址寄存器SISI、DI DI 操作数的操作数的物理地址物理地址 1616DS DS BX BX SI /DISI /DI 或或 1616SS SS BP BP SI /DISI /DI3 3注意:注意: 寄存器寄存器SISI和和DIDI、BPBP和和BXBX不能同时出现在不能同时出现在 中。中。基址变址寻址方式基址变址寻址方式例例 MOV AXMOV AX
13、, BXBX SISI ; ;或:或:MOV BXMOV BX,BXBXSISI解:设:解:设:DSDS3000H3000H,SISI0500H0500H,BXBX1200H1200H, (31700H)=0ABCDH (31700H)=0ABCDH 则:物理地址则:物理地址 1616DS DS SI SI BX BX 30000H 30000H 0500H 0500H 1200H1200H 31700H31700H指令执行后,AX0ABCDH相对基址变址寻址方式相对基址变址寻址方式 1 1含义:含义: 操作数的操作数的有效地址有效地址是一个是一个基址寄存器基址寄存器(BXBX、BPBP)和和
14、一个一个变址寄存器变址寄存器(SISI、DIDI)的内容,再加上)的内容,再加上8 8位或位或1616位位位移量位移量之之和和。即。即 EA= BXEA= BX或或 BP + SIBP + SI或或DI +8DI +8或或1616位移量位移量2 2特点:特点:使用的使用的寄存器寄存器:基址寄存器:基址寄存器BXBX、BPBP,变址寄存器,变址寄存器SISI、DI DI 操作数的操作数的物理地址物理地址 1616DS DS BX BX SI /DI SI /DI 8/168/16位位移量位位移量 或或 1616SS SS BP BP SI /DI SI /DI 8/168/16位位移量位位移量3
15、 3注意:注意:存器存器SISI和和DIDI、BPBP和和BXBX不能同时出现在不能同时出现在 中中相对基址变址寻址方式相对基址变址寻址方式例例 MOV AXMOV AX, MASKBXMASKBX SISI ; ;或:或:MOV BXMOV BX,MASKMASKBXBXSISI解:设:解:设:DSDS3000H3000H,SISI0300H0300H,BXBX1500H1500H,MASK=0200H, (21A00H)=26BFHMASK=0200H, (21A00H)=26BFH 则:物理地址则:物理地址 1616DS DS SI SI BX + MASKBX + MASK 20000
16、H 20000H 0300H 0300H 1500H + 0200H1500H + 0200H 21A00H21A00H指令执行后,指令执行后,AXAX26BFH26BFH寻址方式总结寻址方式总结 寻址方式总结:寻址方式总结: 带方括号带方括号的地址表达式必须遵循下列规则规则:1.1.立即数立即数可以出现在方括号内,表示直接地址,如2000H。2.2.只有只有BXBX、BPBP、SISI、DIDI这四个寄存器可以出现在 内,它们可以单独出现,也可以相加,或与常数相加, 但:但:BX和BP寄存器、SI和DI寄存器不允许不允许出现在同一个同一个 内内。 3.3.方括号方括号表示相加相加,下面几种写
17、法等价: 6BXSI; BX+6SI; BX+SI+6 寻址方式总结寻址方式总结4 4不同寄存器对应不同寄存器对应不同的隐含段基址不同的隐含段基址: SSSS:BPBP; DSDS:BXBX,SISI,DIDI;物理地址物理地址1616相应段基址相应段基址 EAEA EA EA BX / BP BX / BP SI / DI SI / DI DISP DISP (注:(注:可以是单一寄存器、两个寄存器组合、和可以是单一寄存器、两个寄存器组合、和DISPDISP组合;组合;DISPDISP也可以为也可以为0 0)可用可用段超越前缀段超越前缀修改段基址。修改段基址。其它其它1 1隐含寻址:隐含寻址
18、: 指令中指令中不指明操作数不指明操作数,但有,但有隐含规定隐含规定的寻址方式。的寻址方式。 如:指令如:指令DAA DAA ;对寄存器;对寄存器ALAL中的数据中的数据进行进行十进制数十进制数调整调整,结果仍保留在,结果仍保留在ALAL中。中。2 2I/OI/O端口寻址:端口寻址: 80868086有直接端口和间接端口有直接端口和间接端口两种寻址方式两种寻址方式。 直接端口寻址方式直接端口寻址方式:指令直接提供端口地址:指令直接提供端口地址8 8位立即数位立即数。可。可访问端口访问端口00FFH00FFH,即,即256256个端口。个端口。 例如,例如, IN ALIN AL, 63H 63
19、H ;表示将瑞口;表示将瑞口63H63H中中的内容的内容送进送进ALAL寄存器寄存器 其它其它 间接端口寻址方式间接端口寻址方式:端口地址由寄存器:端口地址由寄存器DXDX提供,提供,端口号为端口号为0000FFFFH0000FFFFH。 例如,例如, MOVMOVDXDX,213H213H;DX=DX=口地址号口地址号213H213H IN AL IN AL,DX DX ;ALAL端口端口213H213H中的内容中的内容3 3一条指令有多种寻址方式:一条指令有多种寻址方式: 源操作数和目的操作数同样适用上述寻址方法。源操作数和目的操作数同样适用上述寻址方法。例例 MOV BXMOV BX,
20、ALAL解:解: 设:设:BXBX3600H3600H,DSDS1000H1000H,AL=05HAL=05H 则:目的操作数的物理地址则:目的操作数的物理地址1616DS DS BX BX 10000H10000H十十3600H 3600H 13600H13600H 指令执行结果为指令执行结果为(13600H)(13600H)05H05H。目的和特点目的和特点指令代码的编制指令代码的编制其中,第一个字节:其中,第一个字节:高高6 6位位是操作码是操作码100010100010;W W位位说明传递数据的类型是字(说明传递数据的类型是字(W Wl l)还是字节()还是字节(W W0 0););D
21、 D位位标明数据传送的标明数据传送的方向方向:D D0 0,数据从寄存器传,数据从寄存器传出出; D D1 1,数据传至寄存器;,数据传至寄存器;1 1编码格式说明编码格式说明(MOVMOV指令为例)指令为例): 15876543210100010DWMODREGR/M操作码指令代码的编制指令代码的编制第二个字节:第二个字节:REGREG字段字段:寄存器号,用:寄存器号,用3 3位编码寻址位编码寻址8 8种不同的寄种不同的寄存器,再根据第一字节中存器,再根据第一字节中W W位,选择位,选择8 8位或位或1616位寄存位寄存器。如表器。如表3-l3-l所示。所示。( (对段寄存器,对段寄存器,R
22、EGREG字段占字段占2 2位位) ) 例如:例如: REGREG010010,W W1 1时表示寻址时表示寻址DXDX寄存器;寄存器; REGREG010010,W W0 0时寻址时寻址DLDL寄存器。寄存器。指令代码的编制指令代码的编制MODMOD字段字段和和R/MR/M字段字段:MOVMOV指令的两个操作数中有指令的两个操作数中有一一个必为寄存器个必为寄存器,另一个操作数可能是,另一个操作数可能是寄存器寄存器,也可,也可能是能是存储器单元存储器单元,由由指令代码的第二个字节个的指令代码的第二个字节个的MODMOD和和R/MR/M字段指定字段指定。如表如表3-23-2所示。(所示。( 24
23、24种不同的编码格式,种不同的编码格式,D8D8表示表示8 8位位位移量,位移量,D16D16为为1616位位移量)位位移量) 对指令进行编码时,对指令进行编码时,若包含若包含8 8位位移量,则在编码后增加一个宇节存放位位移量,则在编码后增加一个宇节存放位移量位移量disp-Ldisp-L;若包含;若包含1616位的位移量,则增加位的位移量,则增加2 2个个字节存放位移量:第字节存放位移量:第3 3个字节存放位移量的低字节个字节存放位移量的低字节disp-Ldisp-L,第,第4 4个字节存放位移量高字节个字节存放位移量高字节disp-Hdisp-H。指令代码的编制指令代码的编制2 2寄存器间
24、传送指令的编码:寄存器间传送指令的编码: 例例 求指令求指令MOV SPMOV SP,BXBX的机器码的机器码 解:解:指令的功能指令的功能是将是将BXBX寄存器的内容送到寄存器的内容送到SPSP寄存器寄存器中。中。 从从附录附录B B可知,该指令的可知,该指令的操作码操作码为为1000l01000l0;传送的;传送的是字数据,所以是字数据,所以w w1 1; REGREG字段:字段:选择将选择将SPSP,则,则REGREG字段编码字段编码100100; D D位位=1=1,表示数据传至所选的寄存器,表示数据传至所选的寄存器(SP)(SP); MODMOD1111, ,因另一个操作数因另一个操
25、作数BXBX也是寄存器。也是寄存器。 从表从表3-23-2查得查得R/MR/M011011。根据。根据W Wl l及寄存器名称为及寄存器名称为BXBX,求得指令编码。,求得指令编码。指令代码的编制指令代码的编制3 3寄存器与存储器间传送指令的编码寄存器与存储器间传送指令的编码 例:求指令例:求指令MOV CLMOV CL, BXBXl234Hl234H的机器码。的机器码。 解:功能:将有效地址为解:功能:将有效地址为(BX(BX1234H)1234H)存储单元中的存储单元中的数据字节传送到数据字节传送到CLCL寄存器中;寄存器中; 指令的编码如图指令的编码如图3-103-10中所示。中所示。
26、第第1 1、2 2字节可通过查表得到;字节可通过查表得到; 第第3 3字节存放字节存放l6l6位位移量的低字节位位移量的低字节34H34H; 第第4 4字节存放高字节字节存放高字节12H12H。 所以该指令的编码为所以该指令的编码为8A 8F 34 12H8A 8F 34 12H。指令代码的编制指令代码的编制4 4立即数寻址指令的编码立即数寻址指令的编码 立即数寻址的指令:操作码立即数寻址的指令:操作码 1 12 2个字节用于存个字节用于存放立即数据。放立即数据。 例例 求指令求指令MOV BXMOV BX十十2100H2100H,0FA50H 0FA50H 的机器码。的机器码。 解:指令的功
27、能:将解:指令的功能:将1616位立即数位立即数FA 50HFA 50H送到有效地址送到有效地址为为(BX(BX2100H)2100H)的字存储单元中;的字存储单元中; 指令编码如图指令编码如图3-113-11中所示;中所示; 其中:低字节其中:低字节50H50H送列送列BXBX2100H2100H单元,高字单元,高字节节FAHFAH送到送到(BX(BX2101H)2101H)单元;单元; 指令中不但有指令中不但有1616位立即数,还有位立即数,还有1616位位移量;位位移量;该指令的该指令的6 6字节编码为:字节编码为:C7 87 00 21 50 FAC7 87 00 21 50 FA。指
28、令代码的编制指令代码的编制5 5包含段寄存器的指令的编码包含段寄存器的指令的编码 含有段寄存器的指令,寄存器字段含有段寄存器的指令,寄存器字段REGREG占有占有2 2位,位,从表从表3-13-1可得,相应的编码为:可得,相应的编码为:CSCS0101,DSDS1111,ES=00ES=00,SSSSl0l0。 例例 求指今求指今MOV DSMOV DS,AX AX 的机器码。的机器码。 解:指令功能:将解:指令功能:将AXAX寄存器的内容传送到数据段寄存器的内容传送到数据段寄存器寄存器DSDS; 从附录从附录B B中查到该指令的编码格式为:中查到该指令的编码格式为: 10001110 MOD
29、 0 REG R/M 10001110 MOD 0 REG R/M ; 段寄存器段寄存器DSDS的编码为的编码为1111,即,即REGREG字段字段为为1111;另一个操作数也是寄存器,所以另一个操作数也是寄存器,所以MODMOD1111,而,而R/MR/M字段字段应填上应填上AXAX的三位代码的三位代码000000; 得到该指令的编码为:得到该指令的编码为:8E D8H8E D8H。 指令代码的编制指令代码的编制 6 6段超越前缀指令的编码段超越前缀指令的编码 该类指令进行编码时,在指令代码前该类指令进行编码时,在指令代码前加加一个一个8 8位位的的段超越的缀代码段超越的缀代码,代码的,代码
30、的格式为格式为001001110110,其,其中中位表明段超越寄存器,编码与上面列出的相位表明段超越寄存器,编码与上面列出的相同。同。 例例 若指令若指令MOV BXMOV BX,DL DL 的编码为的编码为88 17H88 17H,试求指令试求指令MOV CSMOV CS:BXBX,DLDL的代码。的代码。 解:该指令的编码是在不带段超越前缀的指令解:该指令的编码是在不带段超越前缀的指令代代码码88 17H88 17H前前,加上加上一个字节一个字节001001110110。由于段。由于段寄存器寄存器CSCS的代码为的代码为0101,所以指令的第,所以指令的第1 1个字节的编个字节的编码为码为
31、0010111000101110,即即 2EH2EH。 可得到该指令的机器码为可得到该指令的机器码为2E2E 88 17H 88 17H上次课内容回顾及问题:1.指令系统的寻找方式有哪些?2.哪些寻址方式与存储单元有关?3.这些寻址方式哪种较快?4.源操作数和目标操作数数据类型有什么要求?指令编码部分(自学),上机时总结。分类分类分为以下六类:分为以下六类: 数据传送指令数据传送指令 算术运算指令算术运算指令 逻辑运算和移位指令逻辑运算和移位指令 字符串处理指令字符串处理指令 控制转移指令控制转移指令 处理器控制指令处理器控制指令注:注:数据传送指令数据传送指令共共1414条;条;除除SAHF
32、SAHF和和POPFPOPF指令外,对标指令外,对标志位均没有影志位均没有影响。响。数据传送指令数据传送指令MOVPUSHPOPXCHGXLAT字节或字的传送入栈指令出栈指令交换字或字节表转换INOUT输入输出LEALDSLES装入有效地址装入数据段寄存器装入堆栈段寄存器LAHFSAHFPUSHFPOPF标志寄存器低字节装入AHAH内容装入标志寄存器低字节标志寄存器入栈指令出栈,并送入标志寄存器重点掌握的指令:MOV、PUSH、POP、XCHG、XLAT、IN、OUT、LEA(General Purpose Data (General Purpose Data Tranfer)Tranfer)
33、数据传送指令数据传送指令 MOV MOV传送指令传送指令(Move)(Move) 指令格式:指令格式:MOV 目的,源指令功能:指令功能:实现CPU的内部寄存器间或寄存器与存储器间的数据传送。例: MOV AX, 0FF00H; MOV DI, AX; MOV CX, 1000H; MOV BL, 40 MOV WORD PTR SI, 01H; MOV AL, BL;数据传送指令数据传送指令注意:注意:指令中至少要有项明确说明传送的是字节还是字;IPIP寄存器不能用作源操作数或目的操作数;立即数和CSCS寄存器不能用作目的操作数;除了源操作数为立即数的情况外,两个操作数中必有一个是寄存器,但
34、不能都是段寄存器;这就是说,MOV指令不能在两个存储单元之间直接传送数据,也不能在两个段寄存器之间直接传送数据。所谓所谓“传送传送”,实值是,实值是复制复制,把的内容复制到,把的内容复制到目的操作数,源操作数内容不变。内容不变。目的操作数和和源操作数不能不能同时为内存单元。同时为内存单元。目的操作数和和源操作数不能不能同时为段寄存器。同时为段寄存器。目的操作数为段寄存器时,为段寄存器时,源操作数不能为不能为立即数。立即数。对段寄存器赋值必须通过对段寄存器赋值必须通过通用寄存器通用寄存器作中介。作中介。数据传送指令数据传送指令这些注意事项基本适合所有指令数据传送指令数据传送指令CS一般不为目标操
35、作数数据传送指令数据传送指令通常,数据通常存放在数据段中。例如,某个程序的数据段: DATADATASEGMENTSEGMENT ;数据段开始 AREA1DB 14H,3BH ;定义字节变量 AREA2 DB 3 DUP(0) ;复制操作 ARRAYDW 3l00H,01A6H ;定义字变量 STRINGDB GOOD DATADATA ENDSENDS ;数据段结束 汇编后,DATA将被赋予一个具体的段地址。各变量将自偏移地址0000H开始依次存放,各符号地址等于它们在数据段中的偏移量。AREA1的偏移地址为0000H,AREA2的偏移地址为0002H,ARRAY的偏移地址为0005H,ST
36、RING的偏移地址为0009H。数据传送指令数据传送指令数据段开始数据传送指令数据传送指令数据传送指令数据传送指令 PUSHPUSH进栈指令进栈指令 指令格式:PUSH 源 指令功能:数据入堆栈 工作过程:工作过程: SPSP-2;(SP+1,SP)源 源操作数要求:可以是16位通用寄存器、段寄存器、存储器中的数据字,但不能是立即数。 最后一项高地址栈底(SP)压入弹出栈顶(SS)最大容量64KSP总是指向偶地址单元段址POPPOP出栈指令出栈指令 指令格式:POP 目的 指令功能:数据出堆栈 工作过程:工作过程: 目的 (SP+1,SP) ; SPSP2; 目的操作数要求:目的操作数要求:可
37、以是16位通用寄存器、段寄存器、存储单元,但CS不能作目的操作数。 最后一项高地址栈底(SP)压入弹出栈顶(SS)最大容量64KSP总是指向偶地址单元段址数据传送指令数据传送指令数据传送指令数据传送指令 指令格式:指令格式:XCHG 目的, 源 指令功能:指令功能:源操作数、目的操作数数据交换。 操作数要求:操作数要求:交换可以在寄存器之间、寄存器与存储器之间进行;段寄存器不能作为操作数;不能直接交换两个存储单元中的内容。 例例 设AX=2000H,DS=3000H,BX=1800H,(3lA00H)=1995H。 则执行指令XCHG AX,BX+200H后,结果如何? 解:把内存中的一个字与
38、AX中的内容进行交换。 源操作数的物理地址3000H10H十1800H十200H31A00H, 指令执行后:AX1995H,(3lA00H)2000H数据传送指令数据传送指令指令格式:XLAT 转换表 或:XLAT指令功能: 使使累加器累加器(ALAL)中的一个值变换为中的一个值变换为内存表格内存表格中的某中的某一个值,一般用来实现编码制的转换,即查表功能。一个值,一般用来实现编码制的转换,即查表功能。XLATXLAT指令使用步骤:指令使用步骤:使用之前必须先建立一个使用之前必须先建立一个表格表格,表格中的内容是所需,表格中的内容是所需要转换的代码;要转换的代码;将转换表的起始地址装入将转换表
39、的起始地址装入BXBX寄存器寄存器;欲查的某项与表头地址的位移量欲查的某项与表头地址的位移量ALAL,即表格最多包,即表格最多包含含256256个字节;个字节;执行执行XLATXLAT指令后,根据位移量从表中查到指令后,根据位移量从表中查到转换后的代转换后的代码值码值ALAL寄存器寄存器中。中。数据传送指令数据传送指令例例 若十进制数字若十进制数字0 09 9的的LEDLED七段码对照表如下表七段码对照表如下表所示,试用所示,试用XLATXLAT指令求数字指令求数字5 5的七段码值。的七段码值。 解:程序如下:解:程序如下: TABEL DB 40HTABEL DB 40H,79H79H,24
40、H24H,30H30H,19H 19H ;建表;建表, ,表格起始地址为表格起始地址为TABLETABLE DB 12H DB 12H,02H02H,78H78H,00H00H,18H18H ;七段码存于对;七段码存于对TABLETABLE的的 ;位移量为;位移量为 0 09 9的单元位移的单元位移 MOV MOV AL AL,5 5 ;ALAL数字数字5 5的位移量的位移量 MOVMOV BX BX,OFFSET TABLEOFFSET TABLE ;BXBX表格首地址表格首地址 XLAT TABLEXLAT TABLE ;查表得:;查表得:AL=12HAL=12H十进制数字七段显示码十进制
41、数字七段显示码040H512H179H602H224H778H330H800H419H918HXCHG BX, BP+SIXCHG BX, BP+SIXCHG AL, BHXCHG AL, BHPOP CSPOP CSPUSH 1234HPUSH 1234HMOV SI, 2000HMOV SI, 2000HMOV CS, BXMOV CS, BXMOV 2000H, AXMOV 2000H, AX数据传送指令数据传送指令MOV MOV BXBX, 20H, 20H在在MASM5.0MASM5.0下编译,报错,必须指明数据大小,下编译,报错,必须指明数据大小,8 8位位/16/16位。位。在在
42、MASM6.11MASM6.11下编译,无错,汇编程序编译时自动下编译,无错,汇编程序编译时自动识别为识别为 MOV WORD PTR BX, 20HMOV WORD PTR BX, 20HMOV BX, 200HMOV BX, 200H在在MASM5.0MASM5.0和和MASM6.11MASM6.11下编译,均无错,汇编程下编译,均无错,汇编程序编译时自动识别为序编译时自动识别为MOV WORD PTR BX, 200HMOV WORD PTR BX, 200H数据传送指令数据传送指令数据传送指令数据传送指令ININ指令指令:指定端口中的数据累加器OUTOUT指令:指令:累加器中的数据累加
43、器中的数据指定端口指定端口 IN IN输入指令输入指令(Input)(Input) 指令格式:指令格式: IN AL IN AL,端口地址,端口地址 ;端口地址;端口地址(00FFH)(00FFH)直接包含直接包含在在ININ指令里,指令里, 或或 IN AXIN AX,端口地址,端口地址 ;共允许寻址;共允许寻址256256个端口。个端口。 直接寻址直接寻址 IN AL IN AL,DX DX ;端口地址;端口地址0FFH 0FFH 时,先将端口号时,先将端口号送送DXDX寄存器,再执行输入操作。寄存器,再执行输入操作。 或或 IN AXIN AX,DX DX ;共允许寻址;共允许寻址64K
44、64K个端口。个端口。 间接寻址间接寻址指令功能:指令功能: 从从8 8位位端口读入一个端口读入一个字节字节到到ALAL寄存器寄存器,或从,或从1616位位端口端口读一个读一个字字到到AXAX寄存器寄存器。数据传送指令数据传送指令注意:注意: 1616位端口位端口由由两个两个地址连续的地址连续的8 8位端口组成位端口组成。 1616位端口输入位端口输入:先先将给定端口中的字节将给定端口中的字节送进送进ALAL;再把端口再把端口地址加地址加1 1,然后将该端口中的字节,然后将该端口中的字节读入读入AHAH。 例例 IN ALIN AL,0F1H0F1H;ALAL从从 F1H F1H 端口读入一个
45、字节端口读入一个字节 IN AXIN AX,80H80H ;ALAL80H 80H 口的内容,口的内容,AHAH81H 81H 口的口的内容内容 MOV DXMOV DX,310H310H;端口地址;端口地址 310H 310H 先送入先送入DXDX中中 IN ALIN AL,DXDX ;ALAL310H 310H 端口的内容端口的内容 数据传送指令指令 OUT OUT输出指令输出指令(Output)(Output)指令格式:指令格式: OUT OUT 端口地址,端口地址,AL AL ;端口地址;端口地址(00(00FFH)FFH)直接直接包含在包含在 IN IN 指令里,指令里, 或或 OU
46、T OUT 端口地址,端口地址,AX AX ;共允许寻址;共允许寻址256256个端口。个端口。 直接寻址直接寻址 OUT DX OUT DX,AL AL ;端口地址;端口地址0FFH 0FFH 时,先将端时,先将端口号送口号送DXDX寄存器,再执行输出操作。寄存器,再执行输出操作。 或或 OUT DXOUT DX,AX AX ;当共允许寻址;当共允许寻址 64K 64K 个端口。个端口。 间接寻址间接寻址指令功能:指令功能: 将将ALAL中的中的一个字节一个字节写到一个写到一个8 8位端口位端口,或把,或把AXAX中的中的一一个字个字写到一个写到一个1616位端口位端口。注意:注意: 对对1
47、616位端口进行输出操作时,是对两个连续的位端口进行输出操作时,是对两个连续的8 8位端位端口进行输出操作。口进行输出操作。数据传送指令数据传送指令例例 OUT 85HOUT 85H,ALAL;85H 85H 端口端口ALAL内容内容 MOV DXMOV DX,0FF4H0FF4H;端口地址;端口地址DX = 0FF4HDX = 0FF4H OUT DX OUT DX,ALAL ;0FF4H 0FF4H 端口端口ALAL内容内容 MOV DXMOV DX,300H300H;DXDX指向指向300H300H OUT DX OUT DX,AXAX;300H 300H 端口端口 AL AL内容,内容
48、,301H301H端口端口AHAH内容内容数据传送指令共三条指令:传送共三条指令:传送地址码地址码。可。可传送传送操作数的操作数的段地址段地址和和偏移偏移地址地址。 LEA LEA 取有效地址指令取有效地址指令(Load Effective Address)(Load Effective Address) 指令格式:指令格式:LEA LEA 目的,源目的,源指令功能:指令功能:源操作数源操作数地址的偏移量地址的偏移量目的操作数所在目的操作数所在寄存器寄存器 要要 求:求: 源操作数:源操作数:必须是必须是存储单元存储单元; 目的操作数:目的操作数:必须是一个除必须是一个除段寄存器之外段寄存器之
49、外的的1616位寄存器位寄存器。注注 意:意: 与与MOVMOV指令的区别。指令的区别。 数据传送指令例例 假设假设SISI1000H1000H,DSDS5000H5000H,(51000H)(51000H)1234H1234H LEA BXLEA BX,SISI;执行完该指令后,;执行完该指令后,BXBXl000Hl000H MOV BXMOV BX,SISI;执行完该指令后,;执行完该指令后,BXBX1234H1234H例例 LEA BXLEA BX,TABLETABLE ;可用;可用MOVMOV指令指令代替代替LEALEA指令指令 MOV BXMOV BX,OFFSET TABLEOFF
50、SET TABLE;两条指令等价。;两条指令等价。 例例 某数组含某数组含2020个元素,每个元素占一个字节,符号为:个元素,每个元素占一个字节,符号为:0 01919。设。设DIDI指向数组指向数组 开头处,把序号为开头处,把序号为6 6的元素的偏的元素的偏移地址送到移地址送到BXBX中,用什么指令来实现?中,用什么指令来实现? 解:解: LEA BXLEA BX,6DI6DI ;只能用;只能用LEALEA实现,不能用实现,不能用MOVMOV数据传送指令数据传送指令指令格式:指令格式:LDSLDS目的,源目的,源指令功能:源操作数指定的存储单元中的指令功能:源操作数指定的存储单元中的4 4字
51、节字节地址指针地址指针 一对一对目的寄存器目的寄存器。其中:其中:前两个字节前两个字节( (偏移地址偏移地址) ) 指定的目的寄存器;指定的目的寄存器;( (常用常用SISI寄存器寄存器) ) 后两个字节后两个字节( (段地址段地址) ) DS DS寄存器。寄存器。操作数要求:操作数要求:源操作数:源操作数:必须是必须是存储单元存储单元( (该单元开始的连续该单元开始的连续4 4个字节存个字节存放一个变量的地址指针放一个变量的地址指针) );目的操作数:目的操作数:必须是必须是1616位寄存器位寄存器,常用,常用SISI寄存器,但寄存器,但不能不能用用段寄存器。段寄存器。例例 设:设:DSDS
52、1200H1200H,(12450H)(12450H)0F346H0F346H,(12452H)(12452H)0A90H0A90H。 执行指令执行指令LDS SILDS SI,450H 450H 后,结果如何?后,结果如何?解:解:SISI0F346H0F346H,DSDS0A90H0A90H数据传送指令数据传送指令数据传送指令 LES LES 将双字指针送到寄存器和将双字指针送到寄存器和ESES指令指令(Load (Load Pointer using ES)Pointer using ES) 指令格式:指令格式:LESLES 目的,源目的,源 指令功能:源操作数指定的存储单元中的指令功能
53、:源操作数指定的存储单元中的4 4字节字节地址地址指针指针 一对一对目的寄存器目的寄存器。 其中:其中:前两个字节前两个字节( (偏移地址偏移地址) )指定的目的寄存器;指定的目的寄存器;( (常用常用DIDI寄存器寄存器) )后两个字节后两个字节( (段地址段地址) ) ES ES寄存器。寄存器。 例例 设:设:DSDS0100H0100H, BXBX0020H0020H, (01020H)(01020H)0300H0300H, (01022H)(01022H)0500H0500H。 执行指令执行指令LES DILES DI,BX BX 后,结果如何?后,结果如何?解:解:DIDI0300H
54、0300H,ESES0500H0500H(Flag Transfers)(Flag Transfers)数据传送指令数据传送指令15 11 10 9 8 7 6 5 4 3 2 1 0 AHD7D6D4D2D0数据传送指令数据传送指令 LAHF LAHF 标志送到标志送到AHAH指令指令(Load AH from Flag)(Load AH from Flag) 指令格式:指令格式: LAHFLAHF 指令功能:标志寄存器指令功能:标志寄存器SFSF、ZFZF、AFAF、PFPF和和CFCF AHAH寄寄存器的位存器的位7 7、6 6、4 4、2 2和和0 0。 注意:注意: 位位5 5、3
55、3、1 1的内容的内容未定义未定义,是任意值。,是任意值。 执行这条指令后,执行这条指令后,标志位本身标志位本身并不受影响。并不受影响。15 11 10 9 8 7 6 5 4 3 2 1 0 AHD7D6D4D2D0数据传送指令数据传送指令 SAHF AH SAHF AH送标志寄存器送标志寄存器(Store AH into Flags)(Store AH into Flags) 指令格式:指令格式:SAHFSAHF 指令功能:指令功能: AHAH内容内容 标志寄存器标志寄存器。 注意:注意: 位位5 5、3 3、1 1的内容的内容未定义未定义,是任意值。,是任意值。 执行这条指令后,执行这条
56、指令后,高位标志高位标志并不受影响。并不受影响。 15 11 10 9 8 7 6 5 4 3 2 1 0 AHD7D6D4D2D0数据传送指令数据传送指令PUSHFPUSHF标志入栈指令标志入栈指令(Push Flag onto Stack)(Push Flag onto Stack) 指令格式:指令格式:PUSHFPUSHF 指令功能:整个指令功能:整个标志寄存器的内容标志寄存器的内容 堆栈堆栈;修改修改堆堆栈指针,使栈指针,使SPSPSPSP2; 2; 指令执行后指令执行后对标志位无影响对标志位无影响。POPFPOPF标志出栈指令标志出栈指令(Pop Flag off Stack)(Po
57、p Flag off Stack) 指令格式:指令格式:POPFPOPF 指令功能:堆栈指针指令功能:堆栈指针SPSP所指的一个字所指的一个字 标志寄存器标志寄存器PSWPSW;修改修改堆栈指针,使堆栈指针,使SPSPSPSP2 2。注意:注意:要要成对使用成对使用PUSHFPUSHF和和POPFPOPF,可对标志寄存器进行保存和,可对标志寄存器进行保存和恢复。恢复。常用在:常用在:过程过程( (子程序子程序) )调用,调用,中断中断服务程序,对主程序服务程序,对主程序的状态的状态( (即标志位即标志位) )进行保护。进行保护。也可用来改变也可用来改变追踪标志追踪标志TFTF。在。在80868
58、086指令系统中没有直接指令系统中没有直接改变改变TFTF(D8D8位)的指令。位)的指令。算术运算指令算术运算指令二、算术运算二、算术运算算术运算指令算术运算指令可处理可处理4种种类型的数类型的数无符号二进制整数无符号二进制整数带符号二进制整数带符号二进制整数指令指令无符号压缩十进制整数无符号压缩十进制整数(Packed Decimal)(Packed Decimal)无符号非压缩十进制整数无符号非压缩十进制整数(Unpacked (Unpacked Decimal)Decimal) 一个一个8 8位二进制数可看成位二进制数可看成4 4种种不同类型的数不同类型的数,所表示的所表示的数值亦不同
59、数值亦不同。算术运算指令算术运算指令v数的表示数的表示:二进制数二进制数:可以是:可以是8 8位或位或1616位,若是带符号数,则用补位,若是带符号数,则用补码表示。码表示。压缩十进制数压缩十进制数:一个字节中存放两个:一个字节中存放两个BCDBCD码十进制数。码十进制数。非压缩十进制数非压缩十进制数:个字节的低半字节存放十进制数个字节的低半字节存放十进制数,高半字节为全零。,高半字节为全零。例如,对十进制数字例如,对十进制数字5858:压缩十进制数压缩十进制数表示:只需一个字节,即表示:只需一个字节,即 0101 1000B0101 1000B;非压缩十进制数非压缩十进制数表示:需两个字节,
60、即表示:需两个字节,即 0000 0101B0000 0101B 和和 0000 1000B0000 1000B。4 4种数的类型的表示方法如下种数的类型的表示方法如下: :二进制码(B)十六进制(H)无符号二进制(D)带符号二进制(D)非压缩十进制压缩十进制0000 0111077+77071000 100189137-119无效891100 0101C5197-59无效无效算术运算指令算术运算指令注意:注意:算术运算指令算术运算指令处理的数处理的数都必须是都必须是有效有效的,否则会导致的,否则会导致错误的结果。错误的结果。8086808680888088指令系统提供:指令系统提供:加、减、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年家庭教育指导师考试试题及答案
- 2025年女性健康与发展课程考试试题及答案
- 一级建造师试题及答案
- 木材生产加工合同协议书
- 中国创意家居饰品市场深度调查报告
- 山东省日照市2024-2025学年高一下学期期中考试数学模拟试卷(解析)
- 瘢痕妊娠介入治疗
- 2025年软件定义存储项目发展计划
- 矿难救援卫星电话通信保障服务合同
- 大数据分析驱动的电商仓储物流托管合同
- 现代室内设计发展趋势分析
- 阵列间距计算表(光伏设计程序工具excel自带公式版)
- 农业企业计划书
- 2023届天津市河东区高三二模语文试题(解析)
- SWAN产品数据格式说明-包括D131、D35、自动站时序数据、SCIT、TITAN
- 免疫系统的疾病和治疗
- 物流专线协议书简短 物流专线合作协议
- 上海中考数学考试大纲
- 剑桥Think第一级+Unit+2+Money+and+how+to+spend+it+课件
- 消防救援-森林火灾扑救组织指挥及基本战法
- 一种改进的ip-q谐波电流检测方法
评论
0/150
提交评论