指令系统与汇编语言程序设计-n.ppt
《指令系统与汇编语言程序设计-n.ppt》由会员分享,可在线阅读,更多相关《指令系统与汇编语言程序设计-n.ppt(114页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 本章主要教学内容本章主要教学内容指令格式及寻址的有关概念指令格式及寻址的有关概念8086CPU指令系统的寻址方式及其应用指令系统的寻址方式及其应用8086CPU各类指令的表示、功能、特点及其应用各类指令的表示、功能、特点及其应用Pentium微处理器新增指令和寻址方式介绍微处理器新增指令和寻址方式介绍汇编语言的基本表达方式和内容汇编语言的基本表达方式和内容汇编语言程序设计的基本步骤和基本方法汇编语言程序设计的基本步骤和基本方法顺序、分支、循环、子程序基本结构和设计方法顺序、分支、循环、子程序基本结构和设计方法常用的常用的DOS和和BIOS中断调用简介中断调用简介第第3章章指令系统与汇编语言程
2、序设计指令系统与汇编语言程序设计 1 本章教学目的及要求本章教学目的及要求 通通过过学学习习,使使学学生生掌掌握握指指令令的的寻寻址址方方式式、指指令令系系统统及及其其应应用用;学学会会程程序序设设计计的的基基本本方方法法;掌掌握握程程序序设设计计的的技技巧巧,保保证证程程序序设设计计的的质量。质量。第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 2第第3章章3.1 指令格式及寻址指令格式及寻址1.指令系统与指令格式在计算机中要执行的各种操作命令称为指令。计算机所能执行的全部命令的集合即为该计算机的指令系统。计算机指令以二进制编码的形式存放在存储器中,用二进制编码形式表示的指令
3、称为机器指令,CPU可以直接识别机器指令。人们采用一些助记符通常是指令功能的英文单词的缩写,如数据传送指令用助记符MOV(MOVE的缩写),这样表示的指令称为符号指令,也称为汇编指令。汇编指令具有直观、易理解、好记忆的特点。指令系统与汇编语言程序设计指令系统与汇编语言程序设计 3第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 计算机中的汇编指令由操作码字段和操作数字段两部分组成。(1)操作码字段:操作码表示计算机要执行的某种指令功能,由它来规定指令的操作类型,说明计算机要执行的具体操作,例如传送、运算、移位、跳转等操作。同时还指出操作数的类型、操作数的传送方向、寄存器编码或符号
4、扩展等,是指令中必不可少的组成部分。(2)操作数字段:操作数表示计算机在操作中所需要的数据,或者所需数据的存放位置(也称为地址码),还可以是指向操作数的地址指针或其它有关操作数据的信息。48086的指令格式如图3-1所示,指令的长度范围是16个字节。其中,操作码字段为12个字节(B1、B2),操作数字段为04个字节(B3B6)。每条具体指令的长度将根据指令的操作功能和操作数的形式而定。图3-1 8086的指令格式第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 5第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 2.2.寻址及寻址方式的概念寻址及寻址方式的概念 计算
5、机的指令中通常要指定操作数的位置,即给出操作数的地址信息,在执行时需要根据这个地址信息找到需要的操作数,这种寻找操作数的过程称为寻址。寻址方式就是寻找操作数或操作数地址的方式。不同机器的指令系统都规定了一些寻址方式以供编程时选择使用,根据给定的寻址方式,就可以方便地访问各类操作数。6第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 8086指令中的操作数有三种可能的存放位置:(1)操作数直接在指令中,即跟随在指令操作码之后,指令的操作数部分就是操作数本身,这种操作数叫立即操作数。(2)操作数存放在CPU的某个内部寄存器中,这时指令的操作数部分是CPU内部寄存器的一个编码,称为寄存
6、器操作数。(3)操作数存放在内存储器的数据区中,这时指令的操作数部分包含此操作数所在的内存地址,称为存储器操作数。7第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 3.2 8086 CPU的寻址方式的寻址方式3.2.1 立即数寻址立即数寻址立即数寻址方式是指操作数直接存放在给定的指令中,紧跟在操作码之后。立即数可以是8位或16位二进制数。例如,给定如下指令,采用立即数寻址:MOV AL,10 ;十进制数()MOV AL,00100101B ;二进制数()MOV AX,263AH ;十六进制数()8第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 3.2.2 寄存器
7、寻址寄存器寻址寄存器寻址方式是在指令中直接给出寄存器名,寄存器中的内容即为所需操作数。在寄存器寻址方式下,操作数存在于指令规定的8位、16位寄存器中。寄存器可用来存放源操作数,也可用来存放目的操作数。寄存器寻址方式是CPU内部的操作,不需要访问总线周期,因此指令的执行速度比较快。对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI、SP、BP等。对于8位操作数,寄存器可以是AH、AL、BH、BL、CH、CL、DH、DL等。9第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 3.2.3 存储器寻址存储器寻址计算机中访问内存的寻址方式有多种,不管哪一种寻址方式,最终都将得
8、到存放操作数的物理地址。采用存储器寻址时,指令中需要给出操作数的地址信息。存储器操作数的有效地址EA的计算方法和寻址方式有着密切地联系,而操作数物理地址PA的计算则和操作数的具体存放位置有关。10第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 1 1直接寻址方式直接寻址方式直接寻址方式是一种针对内存的寻址方式。在这种寻址方式下,指令中给出的地址码即为操作数的有效地址EA,它是一个8位或16位的位移量。在默认方式下,操作数存放在数据段DS中,如果要对除DS段之外的其他段如CS、ES、SS中的数据寻址,应在指令中增加前缀,指出段寄存器名,这称为段跨越。在直接寻址方式的指令中,操作数
9、的有效地址EA已经给出,那么操作数的物理地址为:PA(DS)10HEA。11第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 2 2寄存器间接寻址方式寄存器间接寻址方式寄存器间接寻址方式是指操作数的有效地址EA在指定的寄存器中,这种寻址方式是在指令中给出寄存器,寄存器中的内容为操作数的有效地址。16位操作数寻址时,EA放在基址寄存器BX、BP或变址寄存器SI、DI中,所以该方式下操作数的物理地址计算公式有以下几个:物理地址PA(DS)10H(BX)物理地址PA(DS)10H(DI)物理地址PA(DS)10H(SI)物理地址PA(SS)10H(BP)12第第3章章指令系统与汇编语言
10、程序设计指令系统与汇编语言程序设计 3 3寄存器相对寻址方式寄存器相对寻址方式这种寻址方式是在指令中给定一个基址寄存器或变址寄存器和一个8位或16位的相对偏移量,两者之和作为操作数的有效地址。当选择间址寄存器BX、SI、DI时,指示的是数据段中的数据,选择BP作间址寄存器时,指示的是堆栈段中的数据。有效地址计算为:EA(reg)8位或16位偏移量;其中reg为给定寄存器。物理地址计算为:PA(DS)10HEA(使用BX、SI、DI间址寄存器)PA(SS)10HEA (使用BP作为间址寄存器)13第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 4 4基址变址寻址方式基址变址寻址方
11、式在基址变址寻址方式中,有效地址EA是基址寄存器加变址寄存器,即两个寄存器的内容之和为操作数的有效地址。在该寻址方式中,当基址寄存器和变址寄存器的默认段寄存器不同时,一般由基址寄存器来决定默认用哪一个段寄存器作为段基址指针。若在指令中规定了段跨越,则可以用其他寄存器作为段基地址。基址变址寻址方式的物理地址计算公式为:物理地址PA(DS)10H(BX)(SI)物理地址PA(SS)10H(BP)(DI)14第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 5 5相对基址变址寻址方式相对基址变址寻址方式这种寻址方式是在指令中给出一个基址寄存器、一个变址寄存器和8位或16位的偏移量,三者
12、之和作为操作数的有效地址。基址寄存器可取BX或BP,变址寄存器可取SI或DI。如果基址寄存器采用BX,则段寄存器使用DS;如果基址寄存器采用BP,则段寄存器使用SS。其物理地址计算为:PA(DS)10H(BX)(SI)或(DI)偏移量 PA(SS)10H(BP)(SI)或(DI)偏移量 15第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 3.2.4 I/O端口寻址端口寻址 由于8086CPU的I/O端口采用独立编址方式,可有64K个字节端口或32K个字端口。指令系统中设有专门的输入指令IN和输出指令OUT来进行访问,I/O端口的寻址方式有直接端口寻址和寄存器间接端口寻址两种。1
13、6第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 1 1直接端口寻址直接端口寻址直接端口寻址是在指令中直接给出要访问的端口地址,一般采用2位十六进制数表示,可访问的端口数为0255个。例如:IN例如:IN AL,30H;表示从I/O端口地址为30H的端口中取出字节数据送到8位寄存器AL中。IN AX,50H;表示从I/O端口地址为50H和51H的两个相邻端口中取出字数据送到16位寄存器AX中。17第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 2 2寄存器间接端口寻址寄存器间接端口寻址当访问的端口地址数256时,直接端口寻址不能满足要求,要采用I/O端口的间接寻
14、址方式。它是把I/O端口的地址先送到寄存器DX中,用16位的DX作为间接寻址寄存器。此种方式可访问的端口数为065535个。例如:MOV DX,283H ;将端口地址283H送到DX寄存器。OUT DX,AL ;将AL中的内容输出到DX所指定的端口中。18第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 3.3 8086 CPU的指令系统的指令系统8086指令系统是80X86/Pentium微处理器的基本指令集。指令的操作数可以是8位或16位,偏移地址是16位。按功能可将指令分成六大类,即:数据传送类指令、算术运算类指令、逻辑运算与移位类指令、串操作类指令、控制转移类指令和处理器
15、控制类指令。19第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 3.3.1 数据传送类指令数据传送类指令数据传送类指令的基本功能是把操作数或操作数的地址传送到指定的寄存器或存储单元中。数据传送类指令共有14条,根据传送的内容可分成以下4组:(1)通用数据传送指令;(2)累加器专用传送指令;(3)地址传送指令;(4)标志寄存器传送指令。20第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 1.1.通用数据传送指令通用数据传送指令(1)传送指令MOV格式:MOV dst,srcMOV 指令的功能是把源操作数src传送至目的操作数dst,执行后源操作数内容不变,目的操作
16、数内容与源操作数内容相同。源操作数可以是通用寄存器、段寄存器、存储器以及立即数,目标操作数可以是通用寄存器、段寄存器(CS除外)或存储器。21数据之间的传送关系如图3-5所示。图3-5 数据之间的传送关系 22第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 使用MOV指令进行数据传送时要注意以下几点:(1)段寄存器CS及立即数不能作为目标操作数;(2)两个存储单元之间不允许直接传送数据;(3)立即数不能直接传送到段寄存器;(4)两个段寄存器之间不能直接传送数据;(5)传送数据的类型必须匹配;(6)MOV指令不影响标志位。23第第3章章指令系统与汇编语言程序设计指令系统与汇编语言
17、程序设计 (2)堆栈操作指令PUSH/POP进栈指令:PUSH opr ;SPSP2,将源操作数opr压入堆栈出栈指令:POP opr ;栈顶弹出字数据到目标操作数opr,SPSP+2 堆栈是存储器中的一个特殊区域,主要用于存入和取出数据,堆栈是以“先进后出”的方式进行数据操作的。在8086的堆栈组织中,堆栈从高地址向低地址方向生长,它只有一个出入口,堆栈指针寄存器SP始终指向堆栈的栈顶单元 24第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 (3)XCHG 交换指令 XCHG指令用来将源操作数和目的操作数的内容进行交换。它可以实现字节数据交换,也可以实现字数据交换。该指令的操
18、作数必须有一个是在寄存器中,即可以在两个通用寄存器之间或寄存器与存储器之间交换数据,但不能在两个存储器之间交换数据。指令执行结果不影响标志位。25第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 2.2.累加器专用传送指令累加器专用传送指令 8086指令系统中将累加器AX作为数据传输的核心,系统的输入/输出指令IN/OUT和换码指令XLAT就是专门通过累加器来执行的,称之为累加器专用传送指令。26第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 3.3.地址传送指令地址传送指令 8086的地址传送指令用于控制寻址机构,它可将存储器操作数的地址传送到16位目标寄存器中
19、。这类指令有以下3种形式:(1)有效地址送寄存器指令:LEA reg,srcLEA指令功能是将存储器操作数src的有效地址传送到16位的通用寄存器reg。(2)地址指针送寄存器和DS指令:LDS reg,src 该指令完成一个32位的地址指针传送,地址指针包括段地址和偏移地址两部分。(3)地址指针送寄存器和ES指令:LES reg,src LES指令执行的操作与LDS指令相似,不同之处是以ES代替DS。27第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 4.4.标志寄存器传送指令标志寄存器传送指令 8086可通过这类指令读出当前标志寄存器中各标志位的内容,也可以重新设置各标志位
20、的值。标志寄存器的传送指令共有4条,均位单字节指令,指令的操作数以隐含形式出现,隐含为AH寄存器。(1)取标志指令LAHF(2)置标志位指令SAHF(3)标志寄存器入栈指令PUSHF(4)标志寄存器出栈指令POPF 28第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 3.3.2 算术运算类指令算术运算类指令 8086的算术运算类指令包括加、减、乘、除4种基本运算指令,以及为进行BCD码十进制数运算而设置的各种较正指令。8086的基本算术运算指令中,除加1和减1指令外,其余均为双操作数指令,两个操作数中除了源操作数可为立即数外,必须有一个操作数在寄存器中,而单操作数指令则不允许采
21、用立即数方式。29第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 加减法运算在执行过程中会产生溢出,无符号数运算时,如果加法运算最高位向前产生进位或减法运算最高位向前有借位,则表示出现溢出,采用标志位CF=1来表示;带符号数采用补码运算时,符号位也参与运算,出现溢出则表示运算结果发生了错误,采用标志位OF=1来表示。30第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 算术运算指令除加1指令INC不影响CF标志外,其余指令对CF、OF、ZF、SF、PF、AF等6个标志位均可产生影响,其规则如下:无符号数运算产生溢出时,CF1;带符号数运算产生溢出时,OF1;当运算
22、结果为0时,ZF1;当运算结果为负数时,SF1;当运算结果中有偶数个1时,PF1;当操作数为BCD码,低4位出现进位1时,AF1。31第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 1.1.加法指令加法指令(1)不带进位加法指令:ADD dst,src 指令功能为:(dst)(dst)+(src)(2)带进位的加法指令:ADC dst,src 指令功能为:(dst)(dst)+(src)+CF(3)加1指令:INC opr 指令功能为:(opr)(opr)+1 32第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 2.2.减法指令减法指令(1)不带借位减法指令:S
23、UB dst,src 指令功能为:(dst)(dst)(src)(2)带借位的减法指令:SBB dst,src 指令功能为:(dst)(dst)(src)CF(3)减1指令:DEC opr 指令功能为:(opr)(opr)1(4)求补指令:NEG opr 该指令将 opr中的内容取2的补码,相当于将opr中的内容按位取反后末位加1。(5)比较指令:CMP opr1,opr2 指令功能为:(opr1)(opr2)33第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 3.3.乘法运算指令乘法运算指令乘法指令包括无符号数和带符号数相乘的指令,指令中只给出乘数,被乘数隐含给出。两个8位数
24、相乘时被乘数放入AL中,16位数的乘积存放到AX中;两个16位数相乘时被乘数先放入AX寄存器中,32位数的乘积放到DX和AX两个寄存器中,规定DX中存放高16位,AX中存放低16位。34第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 (1)无符号数乘法指令:MUL src若src为字节数据,执行AX(AL)(src);若src为字数据,执行DX、AX(AX)(src)(2)带符号数乘法指令:IMUL src 该指令的执行功能与MUL相同。35第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 4.4.除法运算指令除法运算指令除法指令可用来实现两个无符号数或带符号数的
25、除法运算,包括字和字节两种操作,该指令隐含使用AX和DX作为一个操作数,指令中给出的源操作数为除数。(1)无符号数除法指令:DIV src DIV指令的被除数、除数、商和余数全部为无符号数。(2)带符号数除法指令:IDIV srcIDIV指令的被除数、除数、商和余数均为带符号数,且余数的符号位同被除数。两条指令执行的操作功能如下:当除数src为字节数据时,用AX除以src,得到的8位商保存在AL中,8位余数保存在AH中;当除数src为字数据时,用DX、AX除以src,得到的16位商保存在AX中,16位余数保存在DX中。36第第3章章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 5.5.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统 汇编语言 程序设计
限制150内