《第3章 指系统及其应用.ppt》由会员分享,可在线阅读,更多相关《第3章 指系统及其应用.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 本章主要教学内容本章主要教学内容指令系统、指令格式与寻址的概念指令系统、指令格式与寻址的概念8086的寻址方式及其应用的寻址方式及其应用8086的指令系统的指令系统各类指令的功能及其应用各类指令的功能及其应用第第3章章指令系统及其应用指令系统及其应用 1 本章教学目的及要求本章教学目的及要求 通通过过学学习习,使使学学生生掌掌握握指指令令格格式式、寻寻址址方方式、指令系统的基础知识。式、指令系统的基础知识。理解各类指令的功能及其应用特点。理解各类指令的功能及其应用特点。为后面程序设计奠定基础。为后面程序设计奠定基础。第第3章章指令系统及其应用指令系统及其应用 2第第3章章3.1 概述概述3.
2、1.1 指令系统与指令格式指令系统与指令格式1.指令与指令系统的概念 指令是计算机执行特定操作功能的命令,它和CPU所具备的能力相对应。计算机能执行的全部指令的集合称为指令系统。计算机中的指令以二进制编码形式存放在存储器中。采用二进制编码形式表示的指令称为机器指令。采用助记符可简化机器指令,称为符号指令,也称为汇编指令。3第第3章章 2.指令格式每条指令中要包含操作码和操作数两字段。(1)操作码字段 表示计算机要执行的某种指令功能,说明要执行的具体操作。(2)操作数字段 表示计算机在操作中所需要的数据,或数据存放位置。4 3.1.2 寻址与寻址方式的概念寻址与寻址方式的概念 寻找操作数的过程称
3、为寻址,寻找操作数或操作数地址的方式称为寻址方式。8086指令中的操作数有3种可能的存放位置:(1)操作数在指令中,称为立即操作数。(2)操作数在内部寄存器中,称为寄存器操作数。(3)操作数在内存数据区中,称为存储器操作数。第第3章章5第第3章章 3.2 寻址方式及其应用寻址方式及其应用 3.2.1 立即数寻址立即数寻址MOV AL,25H ;将十六进制数25H送ALMOV AX,12B5H ;将12B5H送AX,MOV CL,50 ;将十进制数50送CLMOV AL,10100110B;将二进制数10100110B送AL6第第3章章 3.2.2 寄存器寻址寄存器寻址 操作数存放在CPU的内部
4、寄存器。MOV AX,BX;将BX中保存的操作数传送到AX中ADD AL,BL ;两个8位寄存器操作数相加,结果放在AL中INC CX ;对寄存器CX中的内容进行加1处理7第第3章章 3.2.3 存储器寻址存储器寻址 1.直接寻址方式 指令中给出的地址码即为操作数的有效地址EA。直接寻址方式的操作数有效地址EA已经在指令中给出,操作数的物理地址:PA(DS)10HEA。8第第3章章 2.寄存器间接寻址方式 寄存器间接寻址方式操作数的有效地址由寄存器指出,操作数位于存储单元中。操作数的物理地址为:PA(DS)10H指定寄存器内容。PA(SS)10H(BP)9第第3章章 3.寄存器相对寻址方式 指
5、令中给定基址寄存器或变址寄存器和一个8位或16位的相对偏移量,两者之和作为操作数的有效地址。有效地址:EA(reg)8位或16位偏移量;其中reg为给定寄存器。物理地址:PA(DS)10HEA (用BX、SI、DI间址寄存器)PA(SS)10HEA (用BP间址寄存器)10第第3章章 4.基址变址寻址方式 有效地址EA是基址寄存器加变址寄存器的内容。物理地址计算公式:PA(DS)10H(BX)(SI)PA(SS)10H(BP)(DI)5.相对基址变址寻址方式 指令中给出基址寄存器、变址寄存器和8位或16位的偏移量,三者之和作为操作数的有效地址。物理地址计算公式:PA(DS)10H(BX)(SI
6、)或(DI)偏移量PA(SS)10H(BP)(SI)或(DI)偏移量11第第3章章 3.2.4 I/O端口寻址端口寻址 1.直接端口寻址方式 指令中给出要访问的端口地址,端口数为0255,采用两位十六进制数表示。2.间接端口寻址方式 访问端口地址数超过256个时,采用间接寻址方式,可访问的端口数为065535。间接端口寻址把I/O端口的地址先送到寄存器DX中,用16位的DX作为间接寻址寄存器。12第第3章章 3.3 指令系统及其应用指令系统及其应用 3.3.1 数据传送类指令 数据传送类指令的基本功能是把操作数或操作数的地址传送到指定的寄存器或存储单元中。数据传送过程中,源操作数和目的操作数的
7、类型必须保持一致。源操作数可以是累加器、寄存器、存储器操作数和立即数,目的操作数可以是累加器、寄存器和存储器。13第第3章章 1.通用数据传送指令(1)传送指令MOV 该指令把源操作数传送至目的操作数,指令执行后源操作数内容不变,目的操作数内容与源操作数内容相同。源操作数可以是通用寄存器、段寄存器、存储器及立即数,目标操作数可以是通用寄存器、段寄存器(CS除外)或存储器。14第第3章章注意:使用MOV指令进行数据传送时段寄存器CS及立即数不能作为目标操作数;两个存储单元之间不允许直接传送数据;立即数不能直接传送到段寄存器;两个段寄存器之间不能直接传送数据。15第第3章章 (2)堆栈操作指令PU
8、SH/POP 堆栈是按照“后进先出”原则组织的内存数据区域,设置在堆栈段SS内,指针SP始终指向堆栈的栈顶。堆栈操作时:进栈指令PUSH使(SP)(SP)2。出栈指令POP的执行过程与PUSH相反,从当前栈顶弹出16位操作数到目标操作数,同时(SP)(SP)216第第3章章 (3)交换指令XCHG 实现字节数据交换,也可实现字数据交换。如XCHG AX,BX;将寄存器AX内容与BX内容互相交换位置。(4)换码指令XLAT 将累加器AL中的一个值转换为内存表格中的某一个值,再送回AL中。一般用来实现码制之间的转换,也称为查表转换指令。17第第3章章 2.地址传送指令(1)有效地址送寄存器指令LE
9、A 将存储器源操作数src的有效地址传送到16位的通用寄存器。(2)地址指针送寄存器指令LDS (3)指针送寄存器指令LES 18第第3章章 3.标志寄存器传送指令 标志寄存器传送是单字节指令,指令操作数以隐含形式规定,字节操作数隐含为AH。(1)取标志指令LAHF(2)置标志位指令SAHF(3)标志压入堆栈指令PUSHF(4)标志弹出堆栈指令POPF19第第3章章 4.输入/输出指令 8086指令系统中的输入/输出指令是专门通过累加器来执行的。输入指令:IN Acc,src ;Acc为8位或16位累加器输出指令:OUT dst,Acc 20第第3章章 3.3.2 算术运算类指令算术运算类指令
10、 8086的算术运算类指令包括加、减、乘、除4种基本运算指令,以及为进行BCD码十进制数运算而设置的各种较正指令。21第第3章章 加减法运算在执行过程中会产生溢出。无符号数运算时,如果加法运算最高位向前产生进位或减法运算最高位向前有借位,表示溢出;带符号数采用补码运算时,符号位也参与运算,出现溢出表示运算结果发生错误。22第第3章章 算术运算指令除加1指令INC不影响CF标志外,其余指令对CF、OF、ZF、SF、PF、AF等6个标志位均可产生影响,其规则如下:无符号数运算产生溢出时,CF1;带符号数运算产生溢出时,OF1;当运算结果为0时,ZF1;当运算结果为负数时,SF1;当运算结果中有偶数
11、个1时,PF1;当操作数为BCD码,低4位出现进位1时,AF1。23第第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 24第第3章章 2.2.减法指令减法指令(1)不带借位减法指令:SUB dst,src 指令功能为:(dst)(dst)(src)(2)带借位的减法指令:SBB dst,src 指令功能为:(dst)(dst)(src)CF(3)减1指
12、令:DEC opr 指令功能为:(opr)(opr)1(4)求补指令:NEG opr 该指令将 opr中的内容取2的补码,相当于将opr中的内容按位取反后末位加1。(5)比较指令:CMP opr1,opr2 指令功能为:(opr1)(opr2)25第第3章章 3.3.乘法运算指令乘法运算指令 乘法指令包括无符号数和带符号数相乘的指令,指令中只给出乘数,被乘数隐含给出。两个8位数相乘时被乘数放入AL中,16位数的乘积存放到AX中;两个16位数相乘时被乘数先放入AX寄存器中,32位数的乘积放到DX和AX两个寄存器中,规定DX中存放高16位,AX中存放低16位。26第第3章章(1)无符号数乘法指令:
13、MUL src若src为字节数据,执行AX(AL)(src);若src为字数据,执行DX、AX(AX)(src)(2)带符号数乘法指令:IMUL src 该指令的执行功能与MUL相同。27第第3章章 4.4.除法运算指令除法运算指令 除法指令可用来实现两个无符号数或带符号数的除法运算,包括字和字节两种操作,该指令隐含使用AX和DX作为一个操作数,指令中给出的源操作数为除数。(1)无符号数除法指令:DIV src DIV指令的被除数、除数、商和余数全部为无符号数。(2)带符号数除法指令:IDIV srcIDIV指令的被除数、除数、商和余数均为带符号数,且余数的符号位同被除数。28第第3章章 5.
14、5.符号扩展指令符号扩展指令 符号扩展指令是指用一个操作数的符号位形成另一个操作数,后一个操作数的各位是全0(正数)或全1(负数),符号扩展指令虽然使数据位数加长,但数据的大小并没有改变。该指令的执行不影响标志位。(1)字节转换为字指令CBW该指令的功能是将AL中的符号位D7扩展到AH中。(2)字转换为双字指令CWD 该指令的功能是将AX中的符号位扩展到DX中。29第第3章章 6.6.十进制调整指令十进制调整指令 十进制数在计算机中是采用二进制数来表示的,这就是BCD码,要对十进制的BCD码进行算术运算,必须对得到的结果进行调整,否则结果无意义。8086指令系统提供了以下两类十进制调整指令。(
15、1)组合BCD码加法、减法调整指令 DAA ;组合BCD码加法调整指令,将AL中的和调整为组合BCD码 DAS ;组合BCD码减法调整指令,将AL中的差调整为组合BCD码30第第3章章 (2)非组合BCD加法、减法调整指令AAA ;非组合BCD加法调整指令,将AL中的和调整为非组合BCD码AAS ;非组合BCD减法调整指令,将AL中的差调整为非组合BCD码 31第第3章章 3.3.3 逻辑运算与移位类指令逻辑运算与移位类指令1.1.逻辑运算指令逻辑运算指令 有以下5条逻辑运算指令,可对8位或16位操作数按位进行逻辑运算。(1)逻辑与指令:AND dst,src(2)逻辑或指令:OR dst,s
16、rc(3)逻辑异或指令:XOR dst,src(4)逻辑非指令:NOT dst(5)测试指令:TEST dst,src。32第第3章章 2.2.移位指令移位指令 移位操作类指令可以对字节或字数据中的各位进行算术移位、逻辑移位或循环移位。移位指令格式:SHL/SAL/SHR/SAR dst,1/CL循环移位指令格式:ROL/ROR/RCL/RCR dst,1/CL 33第第3章章 3.3.4 串操作类指令串操作类指令 数据串是存储器中的一串字节或字的数据序列。8086指令系统中设置了串操作指令,其操作对象是内存中地址连续的字节串或字串。在每次操作后能够自动修改地址指针,为下一次操作作准备。基本串
17、操作指令有串传送(MOVS)、串比较(CMPS)、串扫描(SCAS)、串存取(LODS、STOS)等。任何一个基本串操作指令的前面都可以加一个重复操作前缀,使指令操作重复,这样在处理长数据串时要比用循环程序速度快得多。34第第3章章 3.3.5 控制转移类指令控制转移类指令 (1)如指令给出改变IP中内容的信息,转移的目标位置和转移指令在同一个代码段,称段内转移;(2)如指令给出改变IP中内容的信息,又给出改变CS中内容的信息,转移的目标位置和转移指令不在同一个代码段,称段间转移。根据转移指令的功能,可分为无条件转移指令、条件转移指令、循环控制指令、子程序调用和返回指令4类。35第第3章章 1
18、.1.无条件转移指令无条件转移指令 无条件转移指令JMP用来控制程序转移到指定的位置去执行,指令中要给出转移位置的目标地址,通常有以下5种形式:JMP SHORT opr ;段内直接短转移JMP NEAR PTR opr ;段内直接近转移JMP WORD PTR opr ;段内间接转移JMP FAR PTR opr ;段间直接转移JMP DWORD PTR opr ;段间间接转移36第第3章章 2.2.条件转移指令条件转移指令 条件转移指令是根据上一条指令所设置的条件码来测试,被测试的内容为状态标志位。满足测试条件则转移到指令中指定的位置去执行,如果不满足条件则顺序执行下一条指令。条件转移指令
19、根据判断的标志位不同,通常可以归纳为3类:即判断单个标志位状态、比较无符号数高低和比较带符号数大小。这3类指令在使用之前,应该有比较CMP、测试TEST、加减或逻辑运算等指令。37第第3章章 3.3.循环控制指令循环控制指令 将一段代码程序执行多次操作即为循环,采用循环控制指令实现。循环控制转向的目的地址是在以当前IP内容为中心的128127的范围内,指令采用CX作为计数器,每执行一次循环,CX内容减1,直到为零后循环结束。(1)循环控制指令LOOP(2)为零或相等时循环控制指令LOOPZ/LOOPE(3)不为零或不相等时循环控制指令LOOPNZ/LOOPNE 38第第3章章 4.4.子程序调
20、用和返回指令子程序调用和返回指令(1)子程序调用指令 指令格式为:CALL NEAR PTR opr ;段内调用 CALL FAR PTR opr ;段间调用(2)子程序返回指令RET 指令格式:RET 或 RET 表达式 39第第3章章 3.3.6 处理器控制类指令处理器控制类指令 这类指令主要用于修改状态标志位、控制CPU的功能如使CPU暂停、等待、空操作等。40第第3章小结章小结 本章小结本章小结8086指令按操作数类别可分为隐含操作数指令、单操作数指令和双操作数指令;按操作数存放位置可分为立即数、寄存器操作数、存储器操作数和I/O端口操作数;寻找操作数地址的方式称为寻址方式。指令系统及其应用指令系统及其应用 41第第3章小结章小结有立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址、基址变址寻址和相对基址变址寻址等寻址方式;指令系统按功能可分为数据传送类、算术运算类、逻辑运算类、串操作类、控制转移类、处理器控制类等指令。状态标志是CPU进行条件判断和控制程序执行流程的依据,大多数指令执行不影响标志位,某些指令执行会按照规则影响标志位;指令系统及其应用指令系统及其应用 42 第第3 3章内容到此结束章内容到此结束 谢谢各位谢谢各位 !43