工学第讲指令系统PPT课件_第1页
工学第讲指令系统PPT课件_第2页
工学第讲指令系统PPT课件_第3页
工学第讲指令系统PPT课件_第4页
工学第讲指令系统PPT课件_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

1、一、指令概述一、指令概述1.1 基本概念指令:计算机能够识别和执行的各种操作命令。指令系统:是一台计算机或一种微处理器能执行的各种不同类型操作命令的集合。8086/8088CPU指令系统共有119/117条基本指令。指令的组成:操作码操作数操作码说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分。每种指令的操作码:每种指令的操作码:使用唯一的一组二进制编码表示;使用唯一的一组二进制编码表示;如:如:10110000B10110000B对应一个唯一的助记符对应一个唯一的助记符( (指令功能的英文缩写指令功能的英文缩写););如:如:MOVMOV第1页/共120

2、页操作数是指令执行的参与者,即各种操作对象。有些指令不需要操作数;一般指令通常有一个或两个操作数,也有个别指令有3个甚至4个操作数。可以是一个具体数值,如:MOV AL,06H可以是存放数据的寄存器名,如:MOV AL,06H可以是存放数据的存储器地址,如:MOV 2000H,AL下一条执行指令的地址信息,如:CALL SUB_SER一、指令概述一、指令概述指令书写形式: 助记符格式、机器代码格式。1.2 助记符格式标号: 操作码助记符 操作数助记符 ;注释 助记符格式:也叫符号指令格式可有可无第2页/共120页一、指令概述一、指令概述标号:代表该条指令存放的地址。为程序分支、循环、跳转提供转

3、移目标地址。标号后加写冒号“:”作为间隔符。操作数助记符:给出了参与运算的操作数个数和位置,可以有若干个。有两个操作数时通常称第一个为目的操作数,第二个为源操作数。操作码助记符:说明指令要完成的操作与性质。注释:以分号“;”开始,对指令加以说明以方便阅读程序例如: MOV传送指令的格式: LOOP: MOV dest ,src ;destsrc 其功能为:在标号LOOP处完成数据传送,将源操作数src送到目的操作数dest,即src不变,dest更改为src.并对此语句进行注释说明。第3页/共120页一、指令概述一、指令概述1.3 机器指令格式 MOV AL, 05 ;机器代码是:B0H 05

4、H;第一个字节B0H是操作码(含一个操作数AL)第二个字节05H是立即数; MOV AX, 0102H ; 机器代码是:B8H 02H 01H;第一个字节B8H是操作码(含一个操作数AX),第二、三个字节02H 01H 是16位立即数(低字节02在低地址)。B0H05HB8H02H01H低高第4页/共120页第三讲第三讲 指令系统指令系统内容提要:内容提要:一、指令概述二、寻址方式三、指令系统第5页/共120页二、寻址方式二、寻址方式根据操作数所存放的位置不同,可将各种寻址方式分为如下四类:立即寻址方式寄存器寻址方式 存储器寻址方式I/O端口寻址方式 指令系统设计了多种操作数的来源; 寻找操作

5、数的过程就是操作数的寻址方式; 操作数采取哪种寻址方式,会影响机器运行速度和效率。第6页/共120页二、寻址方式二、寻址方式2.1 立即寻址方式 指令操作码和操作数都在存储器代码段中, 操作数紧跟在操作码之后; 这种操作数被称为立即数imm。可以是8位数值(00HFFH)或16位数值(0000HFFFFH),也可为32位数值。 立即数寻址方式常用来给寄存器赋值;例:MOV AX, 10 ; 执行后 AX=?该例中源操作数为立即寻址方式,立即数为10,存放在指令的下一单元。指令码0A00执行:10AX执行后:AX=000AH 例:例:MOV AXMOV AX,1234H 1234H ;十;十六进

6、制数六进制数1234H1234H送入送入AXAX。代码段例:MOV EBX,20031231H ;20031231H送入EBX低地址高地址第7页/共120页二、寻址方式二、寻址方式2.2 寄存器寻址方式 操作数存放在指令规定的寄存器中,可以是:操作数存放在指令规定的寄存器中,可以是: 1616位寄存器:位寄存器:AXAX,BXBX,CXCX,DXDX,SISI,DIDI,SPSP或或BPBP; 8 8位寄存器:位寄存器:AHAH,ALAL,BHBH,BLBL,CHCH,CLCL,DHDH或或DLDL; 段段寄存器:寄存器:CSCS,DSDS,ESES,SSSS; 3232位寄存器:位寄存器:E

7、AXEAX、EBXEBX、ECXECX、EDXEDX等。等。例:MOV AX,BX ;将寄存器BX的内容送入AX中。例:下列程序执行后,AX=?,BX=? MOV AX,1234H MOV BX,5678H ADD AX,BX执行:1234HAX 5678HBX AX+BXAX执行后:AX=68ACH BX=5678HX XX XA AX XB BX X例:ADD EAX, ECX ;EAX和ECX中的内容相加,和送EAX中, ;ECX不变第8页/共120页二、寻址方式二、寻址方式2.3 存储器寻址方式 操作数存放在操作数存放在存储器某个逻辑段的存储单元存储器某个逻辑段的存储单元中,根据中,根

8、据存储单元物理地址的产生方式存储单元物理地址的产生方式可分为如下五种:可分为如下五种: 直接寻址;直接寻址; 寄存器间接寻址;寄存器间接寻址; 寄存器相对寻址寄存器相对寻址; 基址变址寻址;基址变址寻址; 基址变址相对寻址;基址变址相对寻址; 指令中给出操作数主存地址信息(偏移地址,称之为有效地址EA); 段地址在默认的段寄存器或用段超越前缀指定的段寄存器中。第9页/共120页二、寻址方式二、寻址方式2.3 存储器寻址方式 直接寻址直接寻址有效地址在指令中直接给出,存放在代码段指令操作码后面的操作数字段。 段地址在默认的DS段寄存器或用段超越前缀指定的段寄存器中。OP地址低8位地址高8位操作码

9、物理地址:DS*16+EAEA有效地址例:设AX=1212H,BUF为数据段定义的变量且 BUF=2000H(表示地址),DS=3000H,(32000H)=4546H。 执行指令:MOV AX ,BUF ;执行后AX=?DS*16+BUF=3000H*16+2000H=32000H(32000H)=46H(32001H)=45H 执行:(32000H)AX执行后:AX=4546H第10页/共120页二、寻址方式二、寻址方式2.3 存储器寻址方式 直接寻址直接寻址例:设ES=4000H, 执行指令:MOV AL,ES:2000H ; 执行后AL=?ES*16+2000H=4000H*16+20

10、00H=42000H(42000H)的内容送AL执行后:AL=56H第11页/共120页二、寻址方式二、寻址方式2.3 存储器寻址方式 寄存器寄存器间间接接寻址寻址 操作数的有效地址EA在基址寄存器BX、BP或变址寄存器SI、DI中(EA=SI、DI、BX、BP),而操作数在存储器中; 默认段基址在DS(或SS)段寄存器,可用段超越前缀改变;间址寄存器或地址指针DS:BXDS:SIDS:DISS:BP=DS*16+BX=DS*16+SI=DS*16+DI=SS*16+BP物理地址逻辑地址第12页/共120页二、寻址方式二、寻址方式2.3 存储器寻址方式 寄存器寄存器间间接接寻址寻址例:设DS=

11、4000H,BX=100H,执行指令:MOV AX,BX ;AX=?DS*16+BX=4000H*16+0100H=40100H(40100H)内容送AL(40101H)内容送AH执行后AX=3425H例:MOV BX,1000H ;偏移量1000H送入BX MOV EAX,BX ;DS段偏移量为1000H、1001H、 ;1002H和1003H单元的内容送EAX第13页/共120页二、寻址方式二、寻址方式2.3 存储器寻址方式 寄存器寄存器间间接接寻址寻址执行指令:MOV AX ,BP 执行后:AX=?,BP=?,SS=?,(20030H)对应字节单元=?例:设AX=0,BP=0030H,S

12、S=2000H,(20030H)=1234HSS*16+BP=2000H*16+0030H=20030H(20030H)内容送AL(20031H)内容送AH执行后AX=1234H BP=0030H SS=2000H (20030H)=34H第14页/共120页二、寻址方式二、寻址方式2.3 存储器寻址方式 寄存器寄存器相对相对寻址寻址操作数有效地址是寄存器(BX、BP、SI、DI)内容与有符号8位或16位位移量之和,而操作数在存储器中;有效地址BX/BP/SI/DI8/16位位移量默认段基址在DS(或SS)段寄存器,可使用段超越前缀改变; 物理地址=DS*16+BX+8/16位位移量=DS*1

13、6+SI+8/16位位移量=DS*16+DI+8/16位位移量=SS*16+BP+8/16位位移量DS:BX+8/16位位移量DS:SI+8/16位位移量DS:DI+8/16位位移量SS:BP+8/16位位移量逻辑地址第15页/共120页二、寻址方式二、寻址方式2.3 存储器寻址方式 寄存器寄存器相对相对寻址寻址例:设DS=6000H,BX=2000H,执行指令:MOV AL,BX+5;执行后AL=?DS*16+BX+5=6000H*16+2000H+05H=62005H(62005H)内容送AL AH的内容不变执行后AL=9AH例:MOV EAX,5EBP;将SS*10H+EBP+5开始连

14、;续四个单元内容送EAX寄存器相对寻址常用于一维数据结构或表格中某存储单元的寻址。第16页/共120页二、寻址方式二、寻址方式2.3 存储器寻址方式 基址变址基址变址寻址寻址=DS*16+BX+SI =DS*16+BX+DI =SS*16+BP+SI =SS*16+BP+DI有效地址由基址寄存器(BX或BP)内容加上变址寄存器(SI或DI)的内容构成 ,而操作数在存储器中; 有效地址BX/BP+SI/DI 默认段基址是DS,BP时默认段基址是SS,可使用段超越前缀改变;DS:BX+SIDS:BX+DISS:BP+SISS:BP+DI逻辑地址基址值变址值段首址操作数指令EAPA左移4位BRIR物

15、理地址第17页/共120页二、寻址方式二、寻址方式2.3 存储器寻址方式 基址变址基址变址寻址寻址例:设DS=5000H, BX=2000H,SI=0006H;执行指令:MOV AX,BX+SI;5000HABH 78HA AX X D DS S操作码操作码 78HABH2000H B BX X数据段代码段EA2000H+06H=2006H52006H 50000H EA0006H S SI I DS*16+BX+SI=5000H*16+2000H+0006H=52006H(52006H)内容送AL(52007H)内容送AH执行后AX=AB78H例:MOV EAX,EBPEDI ;将SS*10

16、H+EBP+EDI开始 ;连续四个单元内容送EAX寄存器第18页/共120页二、寻址方式二、寻址方式2.3 存储器寻址方式 基址变址基址变址相对相对寻址寻址=DS*16+BX+SI+8/16位位移量=DS*16+BX+DI+8/16位位移量 =SS*16+BP+SI+8/16位位移量 =SS*16+BP+DI+8/16位位移量 操作数有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和,而操作数在存储器中; 有效地址BX/BP + SI/DI + 8/16位位移量 默认段基址是DS,BP时默认段基址是SS,可使用段超越前缀改变;DS:BX+SI+8/16位位

17、移量DS:BX+DI+8/16位位移量SS:BP+SI+8/16位位移量SS:BP+DI+8/16位位移量逻辑地址物理地址第19页/共120页二、寻址方式二、寻址方式2.3 存储器寻址方式 基址变址基址变址相对相对寻址寻址例:设DS=4000H, BX=0200H,DI=0010H。执行指令;MOV AH,BX+DI+1234H4000H50H A AL LA AX X D DS S34H12H 50H0200H B BX X数据段代码段EA0200H+00101234H=1444H41444H 40000H EA0010H D DI I 操作码操作码DS*16+BX+DI+1234H=400

18、0H*16+0200H+0010H+1234H=41444H(41444H)内容送AH执行后AH=50H例: MOV EDX,EBP+0FFFF000HEDI ;将SS*10H+EBP+FFFF000H+EDI开始连续四个单 ;元内容送EDX,或MOV EDX,EBP+EDI+0FFFF000H基址变址相对寻址常用于二维数组中某存储单元的寻址。第20页/共120页二、寻址方式二、寻址方式在寄存器相对或相对基址变址寻址方式中,在寄存器相对或相对基址变址寻址方式中,位移量位移量可用符号可用符号表示:表示:例:例:MOV AX,SI+COUNTMOV AX,SI+COUNT ;COUNTCOUNT是

19、事先定义的变量或常量(数值)是事先定义的变量或常量(数值)例:例:MOV AX,BX+SI+WNUM MOV AX,BX+SI+WNUM ;WNUMWNUM也是变量或常量也是变量或常量 与数据有关的寻址方式共有七种;同一寻址方式可以写成不同的形式:例: MOV AX,BXSI;等同 MOV AX,BX+SI例: MOV AX,COUNTSI;等同 MOV AX,SI+COUNT例: MOV AX,WNUMBXSI;等同 MOV AX,WNUMBX+SI ;等同 MOV AX,BX+SI+WNUM第21页/共120页二、寻址方式二、寻址方式2.4 I/O端口寻址方式 直接直接寻址寻址在输入输出指

20、令中直接写上8位I/O端口地址号。例:IN AL, 50H ;50H端口的字节读入AL例:OUT 80H, AX ;AX中的内容输出到80H、81H两个端口例:IN EAX,60H ;60H、61H、62H和63H端口的4个字节 ;由低到高依次输入到EAX中。 第22页/共120页二、寻址方式二、寻址方式2.4 I/O端口寻址方式16位I/O端口地址号存入DX,在输入输出指令中写DX,表示从其指示的I/O端口中输入输出数据。例:MOV DX,FF02H OUT DX, AL ;AL中的字节输出到DX所指端口中例:MOV DX,0050H IN AX, DX ;从DX和DX+1所指的2个端口输入

21、1个字例: MOV DX,FFO6H OUT DX,EAX ;EAX的双字由低到高依次输出到DX、 ;DX+1、DX+2和DX+3所指的4个端口中寄存器间接寻址第23页/共120页立即数寻址的功能立即数寻址的功能第24页/共120页立即数寻址的执行立即数寻址的执行第25页/共120页寄存器寻址的功能寄存器寻址的功能第26页/共120页寄存器寻址的执行寄存器寻址的执行第27页/共120页直接寻址的功能直接寻址的功能第28页/共120页直接寻址的执行直接寻址的执行第29页/共120页寄存器间接寻址的功寄存器间接寻址的功能能第30页/共120页寄存器间接寻址的执行寄存器间接寻址的执行第31页/共12

22、0页寄存器相对寻址的功寄存器相对寻址的功能能第32页/共120页寄存器相对寻址的执行寄存器相对寻址的执行第33页/共120页基址变址寻址的功能基址变址寻址的功能第34页/共120页基址变址寻址的执行基址变址寻址的执行第35页/共120页相对基址变址寻址的功能相对基址变址寻址的功能第36页/共120页相对基址变址寻址的执行相对基址变址寻址的执行第37页/共120页IN AL, 21H第38页/共120页OUT 43H, AL第39页/共120页第三讲第三讲 指令系统指令系统内容提要:内容提要:一、指令概述二、寻址方式三、指令系统数据传送类指令算术运算指令逻辑运算指令串操作指令控制转移指令处理器控

23、制指令 第40页/共120页三、指令系统三、指令系统3.1 数据传送指令传送指令:将数据从一个位置传送到另一个位置;按功能可分为五种(掌握):通用数据传送指令:通用数据传送指令:MOVMOV交换指令:交换指令:XCHGXCHG、XLATXLAT 地址传送指令:地址传送指令:LEALEA、LDSLDS堆栈操作指令堆栈操作指令:PUSHPUSH、POPPOP 输入输入/ /输出指令:输出指令:ININ、OUTOUT除标志寄存器传送指令外,均不影响标志位。1)通用数据传送指令:MOV指令格式:MOV OP1, OP2 ;字节、字、双字间传送功能:将源操作数OP2内容传送(复制)到目标操作数OP1中。

24、常用于对寄存器、存储器赋值,数据暂存等。 第41页/共120页三、指令系统三、指令系统3.1 数据传送指令具体指令格式有:MOV reg/sreg, regMOV reg, sregMOV reg/sreg, memMOV mem, reg/sregMOV reg, immMOV mem, imm 其中(以后同):reg:寄存器;mem:存储器;seg:段寄存器;imm:立即数。例3.1:立即数传送mov al,4mov al,4;al4al4,字节传送,字节传送mov cx,0ffhmov cx,0ffh;cx00ffhcx00ffh,字传送,字传送mov si,200hmov si,200

25、h;si0200hsi0200h,字传送,字传送mov eax,001000ffh mov eax,001000ffh ;eax001000ffheax001000ffh,双字传送,双字传送第42页/共120页三、指令系统三、指令系统3.1 数据传送指令例3.2:寄存器传送mov ax,bx mov ax,bx ;axbxaxbx,字传送,字传送mov ah,al mov ah,al ;ahalahal,字节传送,字节传送mov ds,ax mov ds,ax ;dsaxdsax,字传送,字传送mov si,al mov si,al ;sialsial,字节传送,字节传送例3.3:存储器传送m

26、ov al, bx ;alds:bxmov dx, bp ;dxss:bpmov es, si ;esds:si例3.4:段寄存器传送mov si, dsmov ax, es ;axesmov ds, ax ;dsaxes第43页/共120页三、指令系统三、指令系统3.1 数据传送指令nMOVMOV传送的原传送的原则则通用寄存器AX BX CX DXBP SP SI DI立即数存储器段寄存器DS ES SS目的操作数不能是CS、IP、立即数:如:MOV CS,SI;不允许使用。源操作数和目的操作数的类型必须一致:同为字节、字、双字。第44页/共120页三、指令系统三、指令系统3.1 数据传送指

27、令2)交换指令:XCHG、XLAT 交换指令格式:XCHG OP1,OP2 ;OP1 OP2功能:把同长度的源和目的操作数内容进行互换通用寄存器之间互换数据;通用寄存器与存储器之间互换数据;两操作数不能同为存储器操作数;两操作数中不允许有立即数;两操作数中不允许有段寄存器。例3.5:寄存器间交换mov ax,1234hmov bx,5678hxchg ax,bxxchg ah,al例3.6:寄存器与存储器交换xchg ax,2000h;字交换,同xchg 2000h,axxchg al,2000h;字节交换,同xchg 2000h,al第45页/共120页三、指令系统三、指令系统3.1 数据传

28、送指令指令格式:XLAT ;alds:bx+al功能:从BX指定的存储区首地址,AL为位移量的内存单元取一个字节数据送AL,操作数全部为隐含。换码指令执行前:在主存建立一个字节表格,内含要转换成的目标代码;表格首地址存放于BX,AL存放相对表格首地址的位移量。换码指令执行后:将AL寄存器的内容转换为目标代码。如:已知数字字符0-9的ASCII码表,求3的编码30h31h32h33h34h35h36h37h38h39h0123456789字符BX=100Hmov bx,100hmov al,03hxlat第46页/共120页三、指令系统三、指令系统3.1 数据传送指令3)地址传送指令:LEA、L

29、DS指令格式:指令格式:LEA reg16/reg32, memLEA reg16/reg32, mem指令功能:指令功能:将存储器操作数将存储器操作数memmem的的有效地址有效地址传送至指传送至指定的定的 16/3216/32位寄存器位寄存器( (不包括段寄存器不包括段寄存器) )中。中。mov bx,0400hmov si,3chlea bx,bx+si+0f62h;bx0400h+003ch+0f62h139EHLEA ESI,EBX+5;格式:LDS reg16,mem 功能:将主存中mem指定的字送reg16,mem的下一字送DS格式:LES reg16,mem功能:将主存中mem

30、指定的字送reg16,mem的下一字送ES指定mem连续4个字节作为逻辑地址,送入DS:reg16或ES:reg16第47页/共120页三、指令系统三、指令系统3.1 数据传送指令例:地址指针传送MOV WORD PTR 3060H,0100HMOV WORD PTR 3062H,1450HLES DI,3060H ;ES=1450H,DI=0100HLDS SI,3060H ;DS=1450H,SI=0100H例:例:LDS BXLDS BX,ADDRSI ADDRSI 设设DS=1000HDS=1000H,ADDR=10HADDR=10H,SI=100HSI=100H10110H10111

31、H10112H10113H10H20H30H40H2010H4030HBXDS若将此指令改为LES DI,ADDRSI则DI=?,ES=?第48页/共120页三、指令系统三、指令系统3.1 数据传送指令4)堆栈操作指令:PUSH、POP 堆栈是一个堆栈是一个“后进先出后进先出LIFOLIFO”(或说(或说“先进后出先进后出FILOFILO”)的主存区域,位于)的主存区域,位于堆栈段中;由堆栈段中;由SSSS段寄存器记段寄存器记录其段基地址;录其段基地址;堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定;栈顶是地址较小的一端(低端),栈底不变。1234SP3000HSP2FFEH2FFFH

32、3412 有两种操作:压栈和出栈, 分别对应PUSH和POP指令,以字或双字作为操作对象的长度;第49页/共120页三、指令系统三、指令系统3.1 数据传送指令PUSH功能:先使堆栈指针SP减2/4,然后把一个16/32位操作数存入堆栈顶部。OP2是16/32位立即数、通用寄存器、段寄存器、存储器。POP 功能:把栈顶的一个字/双字传送至指定的目的操作数,然后堆栈指针SP加2/4。OP1是16/32位的通用寄存器、段寄存器(CS除外)、存储器。 压栈指令格式:PUSH OP2 ;OP2为源操作数出栈指令格式:POP OP1 ;OP1为目的操作数 第50页/共120页三、指令系统三、指令系统3.

33、1 数据传送指令例:例:push axpush ax push 2000h push 2000h push ax执行后 SP=01FEH; 执行push 2000h: DS*16+2001H的内容送SS*16+01FDH单元; DS*16+2000H的内容送SS*16+01FCH单元;第51页/共120页三、指令系统三、指令系统3.1 数据传送指令例:例:POP DXPOP DX POP 2000H POP 2000H执行后: DX=?SP=?第52页/共120页三、指令系统三、指令系统3.1 数据传送指令例: PUSH AX PUSH BX POP AX POP BX堆栈变化情况:已知SS=

34、1050HSP=0100HAX=4860HBX=1287HSS 1050H:0000H00FCH00FDH00FEH00FFHSP 0100H 1287HAX1287HBX栈底48H60HSPSP12H87H4860H4860HSPSPSPSPSPSP可用栈区 MPUSH AXPUSH BXPOP AXPOP BX第53页/共120页三、指令系统三、指令系统3.1 数据传送指令堆栈操作的单位是字或双字;堆栈操作的单位是字或双字;字/双字数据从栈顶压入和弹出时,都是低地址字节送低字节,高地址字节送高字节;堆栈常用来 临时存放数据 传递参数 保存和恢复寄存器 堆栈操作遵循先进后出原则,但可用存储器

35、寻址方式随机存取堆栈中的数据;例如:现场保护恢复push ax ;进入子程序后push bxpush ds.pop ds ;返回主程序前pop bxpop ax第54页/共120页标志寄存器压栈标志寄存器压栈/ /出栈指令(出栈指令(了了解解)指令格式:PUSHF/ PUSHFDPOPF/POPFD 功能: PUSHF/ PUSHFD是将FLAGS/EFLAGS寄存器内容压人堆栈;POPF/POPFD是从堆栈中弹出字或双字至FLAGS/EFLAGS标志寄存器中。三、指令系统3.1 数据传送指令第55页/共120页三、指令系统三、指令系统3.1 数据传送指令5)输入/输出指令:IN、OUT808

36、68086通过通过I/OI/O指令与外设进行数据交换指令与外设进行数据交换, ,呈现给程序呈现给程序员的外设是端口(员的外设是端口(PortPort)即)即I/OI/O地址;地址;输入输出寻址方式8086端口有64K个,有两种寻址方式: (1)直接寻址:只用于寻址前256个端口,指令中直接写8位端口号(00HFFH); (2)间接寻址:用于寻址全部64K个端口,DX寄存器的值就是端口号(0000HFFFFH); 8086用于寻址外设端口的地址线为16条,端口最多为21665536(64K)个,端口号为0000HFFFFH; 每个端口按字节与外设传送数据。 对大于FFH的端口只能采用间接寻址方式

37、。第56页/共120页三、指令系统三、指令系统3.1 数据传送指令指令格式:指令格式: IN AL/AX/EAXIN AL/AX/EAX,imm8/DXimm8/DX OUT imm8/DX OUT imm8/DX,AL/AX/EAXAL/AX/EAX例3.12:输入字数据mov dx,20h ;间接in ax,dx ;字数据in ax,20h ;直接,字数据 in al,21h ;直接寻址mov ah,al ;字节数据in al,20h三段功能相同;字数据传送实际上实现了连续的两个端口地址的字节数据传送。例3.13:输出字节量mov dx,3fch ;间接寻址mov al,80h ;字节量输

38、出out dx,al第57页/共120页第三讲第三讲 指令系统指令系统内容提要:内容提要:一、指令概述二、寻址方式三、指令系统数据传送类指令算术运算指令逻辑运算指令串操作指令控制转移指令处理器控制指令 第58页/共120页三、指令系统三、指令系统3.2 算术运算指令算术运算指令:数据的加、减、乘、除及相关运算;操作数:8/16/32位有/无符号的二进制整数及BCD码。这些指令会根据运算结果的特征,影响标志位。加法指令: INC / ADD / ADC 减法指令: DEC / SUB / SBB / NEG / CMP 乘法指令: MUL / IMUL 除法指令: DIV / IDIV 符号扩展

39、指令: CBW / CWD 十进制调整指令: DAA / DAS 与 AAA / AAS 涉及有符号、无符号数(有符号均为补码) (1) 有符号8位:-128 +127; (2) 有符号16位:-32768 +32767; (3) 无符号8位:0 255; (4) 无符号16位:0 65535;第59页/共120页三、指令系统三、指令系统3.2 算术运算指令1)加法指令: INC / ADD / ADC INC语句格式:语句格式:INC OPR INC OPR ;B/WB/W, OPR+1OPROPR+1OPR功能:功能:将目的操作数加将目的操作数加1 1,结果送目的地址。,结果送目的地址。

40、INCINC指令是一个单操作数指令,操作数可以是指令是一个单操作数指令,操作数可以是寄存器寄存器或或存储器操作数存储器操作数。 如:如:INC BX INC BX ;BX + 1BXBX + 1BX。 加加1 1指令可用于对计数器和地址指针进行调整。指令可用于对计数器和地址指针进行调整。INC ALINC AL; ;AL+1ALAL+1ALINC CXINC CX; ;CX+1CXCX+1CXINC BYTE PTRBX+DI+2INC BYTE PTRBX+DI+2; ;(DS(DS* *16+BX+DI+2)+1(DS16+BX+DI+2)+1(DS* *16+BX+DI+2)16+BX+

41、DI+2)INC结果:对操作数加1(增量);不影响进位CF标志,按结果设置FR其他状态标志。第60页/共120页三、指令系统三、指令系统3.2 算术运算指令1)加法指令: INC / ADD / ADC ADD语句格式:语句格式:ADD DSTADD DST,SRCSRC;B/WB/W,DST+SRCDSTDST+SRCDST功能:功能:将目的操作数与源操作数相加,结果存入目的将目的操作数与源操作数相加,结果存入目的地址中,源地址的内容不改变。地址中,源地址的内容不改变。例:例:ADD AXADD AX,2000H 2000H ;AX+2000HAX, ;AX+2000HAX, 结果标志结果标

42、志FRFR ADD ALADD AL,BL BL ;AL+BL ALAL+BL ALDST(DST(目的目的) ):8 8、1616、3232位位通用寄存器、存储器通用寄存器、存储器;SRC(SRC(源源) ):8 8、1616、3232位位通用寄存器、存储器、立即通用寄存器、存储器、立即数数;SRCSRC、DSTDST不能同时不能同时为存储器。为存储器。 ADD BXADD BX,SI SI ;第61页/共120页三、指令系统三、指令系统3.2 算术运算指令1)加法指令: INC / ADD / ADC例:例:ADD WORD PTRBXADD WORD PTRBX,9F76H9F76H设设

43、DS=2000HDS=2000H,BX=1000HBX=1000H,目的物理地址,目的物理地址=21000H=21000H执行前执行前(21000H)=88H,(21001H)=A9H(21000H)=88H,(21001H)=A9H;执行后执行后(21000H)=FEH,(21001H)=48H(21000H)=FEH,(21001H)=48H;两负数相加,和为正,结果是错的,表示负向溢出,两负数相加,和为正,结果是错的,表示负向溢出,此时此时OF=1OF=1,ZFZF、SFSF、PFPF和和AFAF全为零。全为零。 ADC格式:ADC DST,SRC;B/W,DST+SRC+CFDST功能

44、:目的操作数+源操作数+低位进位,结果送目的地址。有关规定同ADD;例:无符号双字加法运算。MOV AX,4652H ;AX=4652HADD AX,0F0F0H ;AX=3742H,CF=1MOV DX,0234H ;DX=0234HADC DX,0F0F0H ;DX=0F325H,CF=00 2 3 4 4652HF 0 F 0 F0F0H+3742H、F 3 2 5第62页/共120页三、指令系统三、指令系统3.2 算术运算指令2)减法指令: DEC / SUB / SBB / NEG / CMP DEC格式:格式:DEC OPR DEC OPR ;B/WB/W,OPR-1OPROPR-

45、1OPR功能:功能:将目的操作数减将目的操作数减1 1,结果送目的地址。,结果送目的地址。INCINC指令是一个单操作数指令,操作数可以是指令是一个单操作数指令,操作数可以是寄存器寄存器或或存储器操作数存储器操作数。例如:例如:DEC CX DEC CX ;CXCX1CX1CX减减1 1指令指令DECDEC也一般用于对计数器和地址指针的调整。也一般用于对计数器和地址指针的调整。DEC AXDEC AXDEC CLDEC CLDEC WORD PTRSIDEC WORD PTRSIDEC结果:对操作数减1(减量);不影响进位CF标志,按结果设置FR其他状态标志。第63页/共120页三、指令系统三

46、、指令系统3.2 算术运算指令2)减法指令: DEC / SUB / SBB / NEG / CMP SUB格式:格式:SUB DSTSUB DST,SRCSRC;B/WB/W, DSTDSTSRCDSTSRCDST功能:功能:目的操作数目的操作数(DST)(DST)减源操作数减源操作数(SRC)(SRC),结果存,结果存于目的地址,源地址内容不变,有关操作数规定同于目的地址,源地址内容不变,有关操作数规定同ADDADD。例例:MOV AX MOV AX ,5678H5678H ;AX=5678HAX=5678H SUB AX SUB AX ,1234H1234H ;AX=4444HAX=44

47、44H MOV BX MOV BX ,3354H3354H ;BX=3354HBX=3354H SUB BX SUB BX ,3340H3340H ;BX=0014HBX=0014H例:SUB DH,BP+4;设SS=4000H,BP=00E8H,物理地址=400ECH;执行前:DH=45H,(400ECH)=87H;执行后:DH=BEH;正数减负数等于负数,结论不对。45H87H BEH- 、第64页/共120页三、指令系统三、指令系统3.2 算术运算指令2)减法指令: DEC / SUB / SBB / NEG / CMP正数(45H)减负数(87H)等于负数,结果为什么不对?原因是69+

48、121=190+127,则OF=1,溢出;是否表示数的运算范围得到限制;扩展成16位字运算(按符号),结果就正确。 SBB格式:格式:SBB DSTSBB DST,SRCSRC;B/WB/W,DST-SRC-CFDSTDST-SRC-CFDST功能:功能:目的操作数目的操作数(DST)(DST)减源操作数减源操作数(SRC)(SRC)再减低位再减低位借位借位CFCF,结果送目的地址,结果送目的地址,SRCSRC不变。不变。有关规定同有关规定同ADDADD,主要用于多字节(字)减法运算中。,主要用于多字节(字)减法运算中。例:例:SUB AXSUB AX,BXBX SBB DX SBB DX,C

49、XCXDX AXCX BX DX AX-、第65页/共120页三、指令系统三、指令系统3.2 算术运算指令2)减法指令: DEC / SUB / SBB / NEG / CMP NEG格式:格式:NEG OPR NEG OPR ;B/WB/W, OPROPR功能:功能:将目的操作数的每一位求反(包括符号位)将目的操作数的每一位求反(包括符号位)后末位加后末位加1 1,结果送目的地址,结果送目的地址,等同用零减操作数等同用零减操作数。OPROPR的规定同的规定同INCINC,例:例:求补运算。求补运算。MOVMOVAXAX,0 0FFFF64H64HNEGNEGALAL;AX=0AX=0FFFF

50、9CH9CH,CF=1CF=1SUBSUBALAL,9DH9DH;AX=0AX=0FFFFFFHFFH,CF=1CF=1NEGNEGAXAX;AX=0001HAX=0001H,CF=1CF=1DECDECALAL;AX=0000HAX=0000H,CF=1CF=1NEGNEGAXAX;AX=0000HAX=0000H,CF=0CF=0,其余,其余CF=1CF=1OPR只有对零求补时,CF=0,其余CF=1;-128(80H)、-32768(8000H),求补后值不变,但OF=1。溢出判断:C6 C7 =1 ;第66页/共120页三、指令系统三、指令系统3.2 算术运算指令2)减法指令: DEC

51、 / SUB / SBB / NEG / CMP CMP格式:格式:CMP DSTCMP DST,SRC SRC ;B/WB/W,DST-SRCDST-SRC置标志位置标志位功能:功能:目的操作数减源操作数,根据结果置相应标志位,目的操作数减源操作数,根据结果置相应标志位,DSTDST、SRCSRC的值不变,的值不变,DSTDST、SRCSRC的规定同的规定同ADDADD。比较指令比较指令设置标志位设置标志位,由由条件转移指令条件转移指令检测决定是否转检测决定是否转移移。例:例:比较比较ALAL的内容数值大小。的内容数值大小。CMPCMPALAL,50 50 ;ALAL50(50(假设假设:

52、:为无符号为无符号数数) )JBJBBELOWBELOW ;AL50AL=50AL=50, ALAL50AL50ALINCINCAHAH ;AH+1AHAH+1AHBELOWBELOW:若两数相等,则可由ZF=1来判断。若两数不等,则可由ZF=0来判断。CF=?第67页/共120页三、指令系统三、指令系统3.2 算术运算指令2)减法指令: DEC / SUB / SBB / NEG / CMP若若两有符号数两有符号数相比较,如:相比较,如:A A 与与 B B,则:,则:若无溢出,即若无溢出,即OF=0OF=0,可由,可由SFSF判断大小:判断大小:若若AB,AB,则则A-BA-B结果为正,即

53、结果为正,即SF=0SF=0;若若AB,AB,AB,因溢出因溢出( (C C6 6 C C7 7=1=1),),使结果符号位改变,使结果符号位改变,SF=1;SF=1; 若若AB,AB,因溢出因溢出( (C C6 6 C C7 7=1=1),),使结果符号位改变,使结果符号位改变,SF=0;SF=0;若两无符号数,则可由CF来判断。即CF=1(JB),表示AB.综上,若两有符号数,则可由下式来判断:OFSF=0即两者相等(JG),则AB OFSF=1即两者不等(JL),则A(2051H)(2052H) ALNYMAXAL(2051H)MOV AL,2050HCMP AL,2051HJG MAX

54、MOV AL,2051HMAX :MOV 2052H,AL;若OFSF=0;则AL大;转MAX;否则将大数;放入AL中,继续第69页/共120页三、指令系统三、指令系统3.2 算术运算指令3)乘法指令: MUL / IMUL MUL格式:格式:MUL SRC MUL SRC ;B/WB/W,隐含目标操作数,隐含目标操作数功能:功能:字节乘法:字节乘法:ALAL* * SRC SRC8 8AX AX ;AHAH 0 0,CF=OF=1CF=OF=1 字乘法:字乘法:AX AX * * SRC SRC1616DXDX,AX AX ;DXDX 0 0,CF=OF=1CF=OF=1 例:无符号数例:无

55、符号数0A3H0A3H与与11H11H相乘。相乘。MOVMOVALAL,0A3H0A3H;AL=0A3HAL=0A3HMOVMOVBLBL, 11H11H;BL=11HBL=11HMULMULBLBL ;AX=0AD3HAX=0AD3HMUL BYTE PTRSI MUL BYTE PTRSI ;AXAXALAL* *(DS(DS* *16+SI)16+SI)说明:SRC不能是立即数和段寄存器;MUL 03H 当SRC是存储单元时,必须在操作数之前加上属性说明CF=OF=1,表明结果的高半部分不为0第70页/共120页三、指令系统三、指令系统3.2 算术运算指令3)乘法指令: MUL / IM

56、UL IMUL格式格式:IMUL SRC IMUL SRC ;B/WB/W功能功能:字节乘法:字节乘法:ALAL* *SRC8AXSRC8AX; AHAH 0 0,CF=OF=1CF=OF=1 字乘法:字乘法:AXAX* *SRC16DXSRC16DX、AXAX; DXDX 0 0,CF=OF=1CF=OF=1IMULIMUL指令除计算对象是带符号二进制数指令除计算对象是带符号二进制数( (补码补码) )外,其他外,其他都与都与MULMUL一样。一样。SRCSRC是寄存器或存储单元的内容。是寄存器或存储单元的内容。例:有符号数例:有符号数0B4H0B4H与与11H11H相乘。相乘。MOVMOV

57、ALAL,0B4H0B4H;AL=B4HAL=B4HMOVMOVBLBL,11H11H;BL=11HBL=11HIMULIMUL BLBL ;AX=0FAF4HAX=0FAF4H说明:结果的高半部分为说明:结果的高半部分为0 0或全或全1 1,表明是低半部分的符,表明是低半部分的符号位号位扩展扩展; ;先按真值计算,再转换为正确结果第71页/共120页三、指令系统三、指令系统3.2 算术运算指令3)乘法指令: MUL / IMUL例:AL=FFH,DL=02H,MUL DL;AX AL*DLFFH*02H=255*02=510=01FEHAX IMUL DL;AX AL*DLFFH*02H=

58、-1*02= -2=FFFEHAX 第72页/共120页三、指令系统三、指令系统3.2 算术运算指令4)除法指令: DIV / IDIV DIV格式:格式:DIVDIV SRC SRC ;B/WB/W,隐含目标操作数,隐含目标操作数功能:功能:字节除法:字节除法:AX/SRCAX/SRC8 8 AL( AL(商商) )、AH(AH(余数余数) ) 字除法:字除法:DXDX、AX/SRCAX/SRC1616 AX( AX(商商) )、DX(DX(余数余数) )例:写出实现无符号数例:写出实现无符号数0400H/0B4H0400H/0B4H运算的程序段运算的程序段MOVMOVAXAX,0400H0

59、400H;AX=0400HAX=0400HMOVMOVBLBL,0B4H0B4H;BL=0B4HBL=0B4HDIVDIVBLBL ;商;商AL=05HAL=05H,余数,余数AH=7CHAH=7CH说明:完成两个不带符号的二进制数除;SRC是寄存器或存储单元的内容;不能进行约简否则余数不对第73页/共120页三、指令系统三、指令系统3.2 算术运算指令4)除法指令: DIV / IDIV IDIV格式:格式:I IDIVDIV SRC SRC ;B/WB/W,隐含目标操作数,隐含目标操作数功能:功能:字节除法:字节除法:AX/SRCAX/SRC8 8 AL( AL(商商) )、AH(AH(余

60、数余数) ) 字除法:字除法:DXDX、AX/SRCAX/SRC1616 AX( AX(商商) )、DX(DX(余数余数) )除法指令除法指令DIVDIV和和IDIVIDIV虽然对标志的影响未定义,但可产虽然对标志的影响未定义,但可产生溢出生溢出例:写出实现有符号数例:写出实现有符号数0400H/0B4H0400H/0B4H运算的程序段运算的程序段MOVMOVAXAX,0400H0400H;AX=0400HAX=0400HMOVMOVBLBL,0B4H0B4H;BL=0B4HBL=0B4HIDIVIDIV BLBL ;商;商AL=0F3HAL=0F3H,余数,余数AH=24HAH=24H说明:

温馨提示

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

评论

0/150

提交评论