汇编语言及程序设计.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《汇编语言及程序设计.ppt》由会员分享,可在线阅读,更多相关《汇编语言及程序设计.ppt(124页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章 汇编语言及程序设计3.1 80868088的指令系统的指令系统 n指令是控制计算机进行各种操作的命令。指令是控制计算机进行各种操作的命令。n指令系统是指令系统是CPU所能执行指令的集合。所能执行指令的集合。n8086指令系统是其他微处理器指令的基础。指令系统是其他微处理器指令的基础。3.1.1 指令的构成和操作数的类型指令的构成和操作数的类型1、指令的构成、指令的构成n指令格式:指令由操作码字段和操作数字段组成。指令格式:指令由操作码字段和操作数字段组成。n操作码:指计算机所要执行的操作,或称为指出操作操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。类型,是一种助记符
2、。n操作数:指在指令执行操作的过程中所需要的操作数。操作数:指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。双操作数分为源操作数或其它有关操作数的信息。双操作数分为源操作数(SRC)和目标操作数()和目标操作数(DST),并由目标操作数存),并由目标操作数存放运算结果。放运算结果。操作码操作数操作数2 2、操作数的类型、操作数的类型立即数操作数:数值直接存放在指令中,立即数可立即数操作数:数值直接
3、存放在指令中,立即数可以是以是8 8位的,也可以是位的,也可以是1616位的有符号数或无符号数。位的有符号数或无符号数。寄存器操作数:数值存放寄存器中,指令中带有寄寄存器操作数:数值存放寄存器中,指令中带有寄存器的号码。存器的号码。存储器操作数:数值存放内部存储器中,指令中带存储器操作数:数值存放内部存储器中,指令中带有存储器的地址。有存储器的地址。3.1.2 寻址方式寻址方式n寻址方式就是指令中用于说明操作数所在地址的方寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。法,或者说是寻找操作数有效地址的方法。n1、立即寻址、立即寻址n所提供的操作数直接包含在指令
4、中。它紧跟在操作所提供的操作数直接包含在指令中。它紧跟在操作码的后面,与操作码一起放在代码段区域中。码的后面,与操作码一起放在代码段区域中。n例如:例如:MOV AX,0A7FHn立即数可以是立即数可以是8位的,也可以是位的,也可以是16位的。若是位的。若是16位位的,则存储时低位在前,高位在后。的,则存储时低位在前,高位在后。n用来给寄存器或存储器赋初值。用来给寄存器或存储器赋初值。2寄存器寻址寄存器寻址n操作数包含在操作数包含在CPU的内部寄存器中,如寄存器的内部寄存器中,如寄存器AX、BX、CX、DX等。等。n例如:例如:MOV DS,AXnMOV AL,BH3直接寻址直接寻址n操作数地
5、址的操作数地址的16位偏移量直接包含在指令中。位偏移量直接包含在指令中。它与操作码它与操作码起存放在代码段区域,操作数一般起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄存器在数据段区域中,它的地址为数据段寄存器DS加上这加上这16位地址偏移量。位地址偏移量。nMOV AX,2000H;4寄存器间接寻址寄存器间接寻址n操作数是在存储器中,但是,操作数地址的操作数是在存储器中,但是,操作数地址的16位位偏移量包含在以下四个寄存器偏移量包含在以下四个寄存器SI、DI、BP、BX之一中。之一中。n以以SI、DI、BX间接寻址,间接寻址,则通常操作数在现行数则通常操作数在现行数据段区域
6、中,即数据段据段区域中,即数据段寄存器(寄存器(DS)16加加上上SI、DI、BX中的中的16位位偏移量,为操作数的地偏移量,为操作数的地址,址,例如:例如:MOV AX,SI 操作数地址是:操作数地址是:(DS)*16+(SI)n以寄存器以寄存器BP间接寻址,则操作数在堆栈段区域间接寻址,则操作数在堆栈段区域中。即堆栈段寄存器(中。即堆栈段寄存器(SS)16与与BP的内容相的内容相加作为操作数的地址。加作为操作数的地址。n 例如:例如:MOV AX,BP 操作数地址是:操作数地址是:(SS)*16+(BP)5寄存器相对寻址寄存器相对寻址n由指定的寄存器内容,加上指令中给出的由指定的寄存器内容
7、,加上指令中给出的8位或位或16位偏移量作为操作数的偏移地址。可以作为寄位偏移量作为操作数的偏移地址。可以作为寄存器变址寻址的四个寄存器是存器变址寻址的四个寄存器是SI、DI、BX、BP。n若用若用SI、DI和和BX作为变址,则与数据段寄存器相作为变址,则与数据段寄存器相加,若用加,若用BP变址,则与堆栈段寄存器相加,形成变址,则与堆栈段寄存器相加,形成操作数的地址即默认在堆栈段。操作数的地址即默认在堆栈段。n例如:例如:MOV AX,COUNTSI;n操作数地址是:(操作数地址是:(DS)*16+(SI)+COUNT6基址变址寻址基址变址寻址n操作数在存贮器中,其偏移地址由(基址寄存器)操作
8、数在存贮器中,其偏移地址由(基址寄存器)(变址寄存器)形成;(变址寄存器)形成;n把把BX和和BP看成是基址寄存器,把看成是基址寄存器,把SI、DI看着是看着是变址寄存器变址寄存器。n例如:例如:MOV AX,BXSI n 或或 MOV AX,BX+SI 7相对基址变址寻址相对基址变址寻址n操作数在存贮器中,其偏移地址由(基址寄存器)操作数在存贮器中,其偏移地址由(基址寄存器)(变址寄存器)相对偏移量形成;(变址寄存器)相对偏移量形成;n把把BX和和BP看成是基址寄存器,把看成是基址寄存器,把SI、DI看着是看着是变址寄存器,再加上指令中指定的变址寄存器,再加上指令中指定的8位或位或16位偏移
9、位偏移量作为操作数的偏移地址;量作为操作数的偏移地址;n例如:例如:MOV AX,0318HBXSI。n寄存器间接寻址寄存器间接寻址,寄存器相对寻址使用寄存器寄存器相对寻址使用寄存器为为BX,BP,SI,DIn基址变址寻址基址变址寻址BX或或BP+SI或或DI3.1.3 8086/8088 指令系统指令系统 n1数据传送数据传送(Data Transter)n 2算术运算算术运算(Arithmetic)n3逻辑运算逻辑运算(Logic)n4串操作串操作(String menipulation)n5程序控制程序控制(Program Control)n6处理器控制处理器控制(Processor C
10、ontrol)一、数据传送指令一、数据传送指令 n1数据传送数据传送MOV指令指令 一般格式:一般格式:MOV DST,SRC MOV 是操作码,是操作码,DST 和和SRC 分别是目的操作数分别是目的操作数和源操作数。和源操作数。功能:功能:完成数据传送,将源操作数的内容传到目完成数据传送,将源操作数的内容传到目的操作数,但源操作数的内容不变。的操作数,但源操作数的内容不变。n具体来说,一条数据传送指令能实现:具体来说,一条数据传送指令能实现:CPU内部寄存器之间数据的任意传送内部寄存器之间数据的任意传送(除了代码除了代码段寄存器段寄存器CS和指令指针和指令指针IP以外以外)。MOV AL,
11、BL;字节传送;字节传送 MOV CX,BX;字传送;字传送 MOV DS,BXn立即数传送至立即数传送至CPU内部的通用寄存器组内部的通用寄存器组(即即AX、BX、CX、DX、BP、SP、SI、DI),MOV CL,4 MOV AX,03FFH MOV SI,057BHn能实现用立即数给存储单元赋值能实现用立即数给存储单元赋值 例如:例如:MOV 2000H,25H MOV SI,35HnCPU内部寄存器内部寄存器(除了除了CS和和IP以外以外)与存储器与存储器(所有寻址方式所有寻址方式)之间的数据传送。之间的数据传送。MOV AL,BUFFER MOV AX,SI MOV DI,CX MO
12、V SI,BLOCKBP MOV DS,DATASI+BX MOV DESTBP+DI,ESMOV 指令应注意几个问题n可进行可进行8位、位、16位的数据操作;位的数据操作;n源操作数与目的操作数的数据类型要一致;源操作数与目的操作数的数据类型要一致;n存储器间不能直接传送;存储器间不能直接传送;n两个段寄存器之间不能直接传送信息;两个段寄存器之间不能直接传送信息;n立即数不能作为目标操作数,也不能直接传送到立即数不能作为目标操作数,也不能直接传送到段寄存器;段寄存器;nCS和和IP不能作为目标操作数。不能作为目标操作数。2堆栈指令堆栈指令 n堆栈是一种数据存取的方式(与队列比较)堆栈是一种数
13、据存取的方式(与队列比较),特点特点为先进后出;为先进后出;n包括入栈(包括入栈(PUSH)和出栈()和出栈(POP)指令两类;)指令两类;仅能进行字运算;(仅能进行字运算;(操作数不能是立即数)操作数不能是立即数)n堆栈区存数据时总是从高位开始向低位方向增长;堆栈区存数据时总是从高位开始向低位方向增长;n堆栈在内存的地址由堆栈在内存的地址由SS指明,堆栈指针指明,堆栈指针SP指向堆指向堆栈区的栈顶栈区的栈顶,存放栈顶的偏移地址。存放栈顶的偏移地址。n 入栈指令入栈指令PUSHn一般格式:一般格式:PUSH SRC 源操作数可以是源操作数可以是CPU内部的内部的16位通用寄存器位通用寄存器、段
14、、段寄存器和内存操作数(所有寻址方式)。入栈操寄存器和内存操作数(所有寻址方式)。入栈操作对象必须是作对象必须是16位数。位数。n功能:功能:将数据压入堆栈将数据压入堆栈执行步骤为:执行步骤为:SP=SP-2;SP=操作数操作数 低低8位;位;SP+1=操作数高操作数高8位位 例如:例如:PUSH BX 执行过程为:执行过程为:SP=SP-1,SP=BH;SP=SP-1,SP=BL。n 出栈指令出栈指令POPn一般格式:一般格式:POP DST 功能:功能:将数据弹出堆栈将数据弹出堆栈,对指令执行的要求同入栈对指令执行的要求同入栈指令(指令(CS,IP除外)除外)。执行步骤为:操作数低执行步骤
15、为:操作数低8位位=SP;操作数高;操作数高8位位=SP+1;SP=SP+2 例如:例如:POP AX POP BX POP DS3交换指令交换指令 XCHGn一般格式:一般格式:XCHG DST,SRC 功能:功能:完成数据交换完成数据交换 交换指令,把一个字节或一个字的源操作数与目交换指令,把一个字节或一个字的源操作数与目的操作数相交换。交换能在通用寄存器之间、通的操作数相交换。交换能在通用寄存器之间、通用寄存器与存储器之间进行。但段寄存器和立即用寄存器与存储器之间进行。但段寄存器和立即数不能作为操作数。数不能作为操作数。例如:例如:XCHG AL,CL XCHG AX,DI XCHG B
16、X,SI XCHG AX,BUFFER XCHG DATASI,DH4累加器专用传送指令累加器专用传送指令n IN 指令指令一般格式:一般格式:IN AL,n ;B ALn IN AX,n ;W AXn+1n IN AL,DX ;B ALDX IN AX,DX;W AXDX+1DXn功能:功能:从从I/O端口输入数据至端口输入数据至AL或或AX。输入指令允许把一个字节或一个字由一个输入端输入指令允许把一个字节或一个字由一个输入端口传送到口传送到AL或或AX中。若端口地址超过中。若端口地址超过255时,则时,则必须用必须用DX保存端口地址,这样用保存端口地址,这样用DX作端口寻址作端口寻址最多可
17、寻找最多可寻找64K个端口。个端口。例:例:IN AL,78H;MOV DX,347H;IN AL,DX;n OUT 指令指令一般格式:一般格式:OUT n,AL ;B ALn OUT n,AX ;W AXn+1n OUT DX,AL;B ALDX OUT DX,AX;W AXDX+1DXn功能:功能:将将AL或或AX的内容输出至的内容输出至I/O端口。端口。该指令将该指令将AL或或AX中的内容传送到一个输出端口。中的内容传送到一个输出端口。端口寻址方式与端口寻址方式与IN指令相同。指令相同。例:例:OUT 79H,AL;MOV DX,347H;OUT DX,AL;n XLAT指令指令 一般格
18、式:一般格式:XLAT;AL=(DS)16(BX)+(AL)n功能:功能:完成一个字节的查表转换。完成一个字节的查表转换。要求:要求:寄存器寄存器AL的内容作为一个的内容作为一个256字节的表的下标。字节的表的下标。表的基地址在表的基地址在BX中,中,转换后的结果存放在转换后的结果存放在AL中中.例如:例如:MOV BX,OFFSET TABLE MOV AL,1 XLAT ;查表;查表 OUT 1,AL;(;(AL)AAH 本指令可用在数制转换、函本指令可用在数制转换、函数表查表、代码转换等场合。数表查表、代码转换等场合。5地址传送指令(有三条地址传送指地址传送指令(有三条地址传送指令)令)
19、n LEAn一般格式:一般格式:LEA DST,SRC 功能:功能:把源操作数把源操作数SRC的地址偏移量传送至目的的地址偏移量传送至目的操作数操作数DST;n要求:要求:源操作数必须是一个内存操作数,源操作数必须是一个内存操作数,目目的操作数必须是一个的操作数必须是一个16位的通用寄存器。这条指位的通用寄存器。这条指令通常用来建立串操作指令所须的寄存器指针。令通常用来建立串操作指令所须的寄存器指针。例:例:LEA BX,BUFR;把变量把变量BUFR的地的地址偏移量部分送到址偏移量部分送到BX;MOV BX,BUFR;把变量把变量BUFR的内的内容送到容送到BX;MOV BX,OFFSETB
20、UFR;把变量把变量BUFR的地址偏移量部分送到的地址偏移量部分送到BX。n LDSn一般格式:一般格式:LDS DST,SRCn功能:功能:完成一个地址指针的传送。完成一个地址指针的传送。地址指针包括段地址部分和偏移量地址指针包括段地址部分和偏移量 部分。指令将段地址送入部分。指令将段地址送入DS,偏移量部分送入,偏移量部分送入一个一个16位的指针寄存器或变址寄存器。位的指针寄存器或变址寄存器。n要求:源操作数是一个内存操作数,目的操作要求:源操作数是一个内存操作数,目的操作数是一个通用寄存器数是一个通用寄存器/变址寄存器。变址寄存器。例如:例如:LDS SI,BX;将把;将把BX所指的所指
21、的32位地位地址指针的段地址部分送入址指针的段地址部分送入DS,偏移量部分送入,偏移量部分送入SI n LES(Load pointer into ES)n一般格式:一般格式:LES DST,SRC 这条指令除将地址指针的段地址部分送入这条指令除将地址指针的段地址部分送入ES外,外,与与LDS类似。例如:类似。例如:LES DI,BX+COUNT6标志寄存器传送标志寄存器传送n LAHF 将标志寄存器中的将标志寄存器中的SF、ZF、AF、PF和和CF(即(即低低8位)传送至位)传送至AH寄存器寄存器的指定位,空位没有定义。的指定位,空位没有定义。n SAHF 将寄存器将寄存器AH的指定位,的指
22、定位,送至标志寄存器的送至标志寄存器的SF、ZF、AF、PF和和CF位位(即低(即低8位)。根据位)。根据AH的的内容,影响上述标志位,内容,影响上述标志位,对对OF、DF和和IF无影响。无影响。n PUSHF 将标志寄存器压入堆栈顶部,同时修改堆栈指针,将标志寄存器压入堆栈顶部,同时修改堆栈指针,不影响标志位。不影响标志位。n POPF 堆栈顶部的一个字,传送到标志寄存器,同时修堆栈顶部的一个字,传送到标志寄存器,同时修改堆栈指针,影响标志位。改堆栈指针,影响标志位。二、算术运算指令二、算术运算指令n80868088提供加、减、乘、除四种基本算术操作。提供加、减、乘、除四种基本算术操作。这些
23、操作都可用于字节或字的运算,也可以用于带符这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。号数与无符号数的运算。带符号数用补码表示。同带符号数用补码表示。同时时80868088也提供了各种校正操作,故可以进行十也提供了各种校正操作,故可以进行十进制算术运算进制算术运算n算术运算操作会影响标志寄存器;加、减运算会影响算术运算操作会影响标志寄存器;加、减运算会影响大部分的标志位大部分的标志位,但加、减指令不影响位。但加、减指令不影响位。1加法指令加法指令(Addition)n一般形式:一般形式:ADD DST,SRC n功能:功能:(DST)(DST)+(SRC)完成两个操作数
24、相加,结果送至目的操作数完成两个操作数相加,结果送至目的操作数DST。目的操作数可以是累加器,任一通用寄存器以。目的操作数可以是累加器,任一通用寄存器以及存储器操作数;及存储器操作数;n例如:例如:ADD AL,30;累加器与立即数相加;累加器与立即数相加 ADD BX,3000H;通用寄存器与存储;通用寄存器与存储单元内容相加单元内容相加 ADD DI,CX;通用寄存器之间;通用寄存器之间nADD DX,DATABX+SI;通用寄存器与存;通用寄存器与存储单元内容相加储单元内容相加nADD BETA SI,DX;存储器操作数与寄存;存储器操作数与寄存器相加器相加n这些指令对标志位这些指令对标
25、志位CF、DF、PF、SF、ZF和和AF有影响。有影响。n一般形式:一般形式:ADC DST,SRC;带进位的加法;带进位的加法 功能:功能:(DST)(DST)+(SRC)+CF 这条指令与上这条指令与上条指令类似,只是在两个操作数条指令类似,只是在两个操作数相加时,要把进位标志相加时,要把进位标志CF的现行值加上去,结果的现行值加上去,结果送至目的操作数。送至目的操作数。n例如:例如:ADC AL,30;累加器与立即数相加;累加器与立即数相加 ADCBX,3000H;通用寄存器与存储;通用寄存器与存储单元内容相加。单元内容相加。n例;若有两个四字节的数,已分别放在自例;若有两个四字节的数,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内