《基本指令系统》PPT课件.ppt
《《基本指令系统》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《基本指令系统》PPT课件.ppt(111页珍藏版)》请在三一办公上搜索。
1、第三章 8086基本指令系统,8086全部指令按功能可分成六大类:数据传送指令、算术运算指令、逻辑指令、串操作指令、控制转移指令和处理机控制指令。本章主要介绍以下内容:数据传送指令算术运算指令位操作指令字符串操作指令 32位CPU扩展的指令,3.1 数据传送指令,数据传送指令负责将数据、地址或立即数传送到寄存器或存储单元中。在8086/8088 CPU指令系统中,数据传送指令共有14条分5组,它们是:(1)通用数据传送指令:MOV、XCHG、XLAT(2)堆栈操作指令:PUSH、POP(3)标志寄存器传送指令:LAHF、SAHF、PUSHF、POPF(4)地址传送指令:LEA、LDS、LES(
2、5)输入输出指令:IN、OUT其中除标志寄存器传送指令外,数据传送指均不影响任何标志位。,3.1 数据传送指令,3.1.1 机器指令格式指令:机器语言的一条语句,它是一组有意义的 二进制代码,由操作码字段和操作数字段 两个部分组成。操作码字段:表示该指令应进行什么性质的操作。操作数字段:指出指令执行的参与者,也就是各 种操作的对象。,图3-1 指令的一般格式,3.1 数据传送指令,3.1.2 通用数据传送指令 通用数据传送指令负责CPU内部的寄存器以及内存单元之间的数据传递,是数据传送指令中使用最多的一组指令。该类指令主要包括:MOV、XCHG和XLAT指令。,3.1 数据传送指令,一、基本的
3、传送指令MOV(Move)格式:MOV DEST,SRC;(DEST)(SRC)其中:(DEST)、(SRC)分别为源和目的操作数。例:MOV AL,BL;BL中的8位数据送AL MOV ES,DX;DX中16位数据送ES MOV AX,BX;MOV CX,1000H MOV DX,5040;立即数5040送DX注:对段寄存器赋值时,只能通过寄存器赋值,不能用立即数直 接赋值。,允许的操作数组合:,SRC 可为:立即数、通用寄存器、存储器、段寄存器。DEST可为:通用寄存器、存储器、段寄存器 DEST和SRC可以有9种组合,如下图所示:(1)通用寄存器到通用寄存器 如:MOVAX,BX;(2)
4、立即数到通用寄存器 如:MOVAX,03H;(3)立即数到存储单元 如:MOVBYTE PTR 2000H,12H(4)存储单元到通用寄存器 如:MOVAX,2000H;(5)通用寄存器到存储单元 如:MOV 2000H,AX;图3-2 MOV指令传送示意图,(6)通用寄存器到除CS外的段寄存器 如:MOVDS,AX;。(7)段寄存器到通用寄存器 如:MOVAX,DS;(8)存储器到除CS外的段寄存器 如:MOVES,2000H;(9)段寄存器到存储器 如:MOV2000H,DS;,二、交换指令 XCHG(Exchange)格式:XCHG DEST,SRC;(DEST)(SRC)功能:将两个操
5、作数DEST与SRC的内容互换.允许的操作数组合:交换可以在通用寄存器之间或通用寄存器与存储器之间进行,但不能在两个存储单元之间直接进行,DEST 与SRC可以为字或者是字节。例:XCHG AL,BL;AL和BL的内容互换 XCHG BX,CX;BX和CX的内容互换。XCHG 1200H,CX;CX中的内容和1200H,;1201H两单元的内容互换,三、查表换码指令 XLAT(Translate)格式:XLAT;AL(BX+AL)表:256字节的数据区。BX BX指向表的首地址 AL 指向数据表某项地址(0255)。执行XLAT时,将BX+AL指向字节单元中的值送AL。该指令操作数全为隐含,换
6、码表首地址在BX中,欲读取数据表单元偏移量在AL中。,例:MOV BX,1000H MOV AL,04H XLAT;AL(BX+AL)=(1004H)=50H换码过程:,3.1.3 堆栈操作指令堆栈及堆栈操作指令(1)堆栈的概念 堆栈是内存的一个逻辑段,当这个段被指定为堆栈后,可用堆栈操作指令对它进行特殊规则的访问,这个规则就是:不论入栈还是出栈,都只能从栈顶处进行,堆栈内数据遵循先进后出,后进先出的原则。(2)堆栈的设置 8086/8088中专门有2个寄存器用于堆栈操作:堆栈段寄存器SS和堆栈指针寄存器SP。SS用来存放堆栈段的段基址,SP用于指示堆栈的顶部单元的段内偏移量,开始时堆栈内没有
7、数据,栈顶就是栈底,故开始时要将栈底单元的偏移量赋给它,以指明栈低位置。,3.1 数据传送指令,二、堆栈操作指令 堆栈按“后进先出”原则设计的数据区。堆栈段地址由SS段寄存器提供堆栈区操作数据地址由堆栈指针寄存器SP提供。SP的初值是指向的地址为栈底,进行堆栈数据操作后SP指向栈顶地址。必须为字操作数1入栈指令PUSH(Push onto the stack)格式:PUSH SRC;SPSP-2,(SP+1,SP)(SRC)8088的入栈过程:(1)SPSP-1,调整堆栈指针,指向一个空地址(新栈顶)(2)(SP)(SRCH),源操作数高字节送SP指向的单元;(3)SPSP-1,调整堆栈指针,
8、指向一个空地址SP;(4)(SP)(SRCL),源操作数低字节送SP指向的单元。,8086的入栈过程:(1)SPSP-2,调整堆栈指针,指向一个空地址;(2)(SP)(SRC),源操作数(字)送SP指向的单元。例1:PUSH AX PUSH BX,2.出栈指令POP(Pop from the stack)格式:POP DEST;(DEST)(SP+1,SP),SPSP+2;或(DEST)(SP),SPSP+28088的出栈过程(1)(DESTL)(SP),源操作数低字节(SP)送目的;(2)SPSP+1,调整堆栈指针SP;(3)(DESTH)(SP),源操作数高字节(SP)送目的;(4)SPS
9、P+1,再调整堆栈指针SP。8086的出栈操作(1)(DEST)(SP),源字操作数(SP)送目的;(2)SPSP+2,调整堆栈指针SP。,例2:将例1堆栈内容,仍弹出给AX、BX。POP BX POP AX例3:将例1堆栈内容,弹出给BX、AX,交换出栈。POP AX POP BX,3.1 数据传送指令,3.1.4 标志传送指令标志寄存器是一个存放条件标志、控制标志的寄存器,主要用于反映处理器的状态和运算结果的某些特征及控制指令的执行。标志传送指令主要用于对标志寄存器的内容进行读取和修改,共包括4条指令:LAHF、SAHF、PUSHF和POPF。,1)LAHF读标志指令格式:LAHF执行操作
10、:(AH)(PSW的低8位)该指令的两个操作数均是隐含的,源操作数为标志寄存器的低字节,目的操作数为AH寄存器。其中,标志寄存器的低字节包含SF、ZF、AF、PF和CF,分别对应第7、6、4、2和0位,而第5、3、1位无定义。,2)SAHF取标志指令格式:SAHF执行操作:(AH)(PSW的低8位)该指令的两个操作数均是隐含的,源操作数为AH寄存器,目的操作数为标志寄存器的低字节。,3)PUSHF标志进栈指令格式:PUSHF执行操作:(SP)(SP)-2(SP)+1,(SP)(PSW)该指令的两个操作数均是隐含的,源操作数为标志寄存器,目的操作数为指针SP所指向的堆栈顶部的一个字单元。其功能是
11、将标志寄存器的内容压入堆栈。,4)POPF标志出栈指令格式:POPF执行操作:(PSW)(SP)+1,(SP)(SP)(SP)+2该指令的两个操作数均是隐含的,源操作数为指针SP所指向的堆栈顶部的一个字单元,目的操作数为标志寄存器。其功能是将堆栈顶部字单元内容弹出到标志寄存器中。,3.1.5 地址传送指令 用于传送段地址或偏移地址的指令一、取有效地址指令 LEA(Load effective address)格式:LEA reg16,mem16;reg16 mem16 功能将源操作数所在单元的16位偏移量(mem16),送到16位寄存器(reg16)目的中。例:LEA AX,2728;将272
12、8单元的偏移量送AX。LEA BX,BP+SI;BX中的内容为BP+SI的值 LEA SP,0482;使堆栈指针SP为482,3.1 数据传送指令,二、将地址指针装到DS和目的寄存器 LDS(Load DS with pointer)格式:LDS reg16,mem32;reg16(mem32),DS(mem32+2)功能把指向mem32开始的四个地址单元内容,高字(段地址)传送到DS中,低字(偏移量)送目的寄存器(reg16)。,例1:设2130H-2133H四个单元中,存放着一个地址,2131H、2130H中存地址的偏移量为2211H,2133H、2132H中存段地址值为4433H,执行指
13、令:LDS DI,2130H;DI2211H,DS4433H。,三、将地址指针装到ES和另一个寄存器LES(Load ES with pointer)格式:LES reg16,mem32;reg16(mem32),;ES(mem32+2)功能把指向mem32开始的四个地址单元内容,高字(段地址)传送到ES中,低字(偏移量)送目的寄存器(reg16)。例2:条件同例1 LES DI,2130H;DI2211H,ES4433H。,3.1.6 输入/输出指令 8086/8088 CPU由于采用独立编址方式,因此必须使用专门的输入/输出指令。这类指令利用累加器AL或AX和外设接口中的端口以字节或字为单
14、位进行信息的传输。由于专门用到了累加器,所以又称累加器专用传送指令。共包括两条指令:IN和OUT。,3.1 数据传送指令,由于8086/8088 CPU外设最多可以有65536个端口,端口号为0000H0FFFFH,因此源操作数有两种格式:当端口号为00H0FFH时(即前256个端口),端口号以立即数的形式直接在指令中指定,这就是长格式中的PORT;当端口号位于0100H0FFFFH时,应先用MOV指令将端口号传送到DX寄存器中,再使用短格式访问端口。,1)IN输入指令,格式:IN AL,PORT 长格式字节操作 IN AX,PORT 长格式字操作 IN AL,DX 短格式字节操作 IN AX
15、,DX 短格式字操作执行操作:(AL)(PORT)长格式字节操作(AX)(PORT+1,PORT)长格式字操作(AL)(DX)短格式字节操作(AX)(DX)+1,(DX)短格式字操作,2)OUT输出指令,格式:OUT PORT,AL 长格式字节操作 OUT PORT,AX 长格式字操作 OUT DX,AL 短格式字节操作 OUT DX,AX 短格式字操作执行操作:(AL)(PORT)长格式字节操作(AX)(PORT+1,PORT)长格式字操作(AL)(DX)短格式字节操作(AX)(DX)+1,(DX)短格式字操作,算术运算指令负责执行加、减、乘、除四则基本运算。它包括无符号数、有符号数的二进制
16、算术运算和十进制算术运算调整指令,它们中有双操作数指令,也有单操作数指令。,3.2 算术运算指令,3.2.1 加法指令1.不带进位位的加法指令 ADD(Add)格式:ADD DEST,SRC;DEST(DEST)+(SRC)例:ADD AL,90H;ADD BX,23OOH;ADD SI,CX;ADD BX+DI,AX;ADD AX,BX+3000H;,3.2 算术运算指令,2.带进位位的加法指令ADC(Add with the carry)格式:ADC DEST,SRC;DEST(DEST)+(SRC)+CFADC与ADD指令的区别,是加进位标志CF。例:ADC AX,DI;AX AXDIC
17、F ADC BX,SI;BX(SI)+BX+CF ADC BX,1OOOH;BX BX+1OOOH+CF ADC AL,53;AL AL+53+CF,例:两个4字节的无符号数,分别放在2000H和2100H开始的存储单元中,低位在前,高位在后,两数相加运算后,和放在2000H开始的内存单元中。程序如下:CLC;清进位位CF MOV SI,2000H;取第一个数的首地址 MOV AX,SI;将第一个数的低16位取到AX MOV DI,2100H;取第二个数的首地址 ADC AX,DI;第一个数和第二个数的低16位及CF0相加 MOV SI,AX;低16位相加的结果送到2000H和2001H单元
18、MOV AX,SI+2;取第一个数的高16位送到AX中 ADC AX,DI+2;两个数的高l6位连同进位位相加 MOV SI+2,AX;高16位相加的结果送到2002H,2003H单元,3增量指令INC(Increment)格式:INC DEST;DEST(DEST)+1用于循环程序中修改指针和循环次数。例:INC CL;将CL中的内容加1 INC BX;将BX中的内容加1 INCBYTEPTRBX+SI+1500,3.2.2 减法指令1不带借位的减法指令 SUB(Subtract)格式:SUB DEST,SRC;DEST(DEST)(SRC)例:SUB AX,CX SUB BP+4,CL S
19、UB AX,60 SUB SI,3010H SUB BYTE PTRDI,1OH 2.带借位的减法指令 SBB(Subtract with borrow)格式:SBB DEST,SRC;DEST(DEST)(SRC)CF例:SBB BX,1840H SBB WORD PTR SI+2,2OOOH,3.减量指令 DEC(Decrement)格式:DEC DEST;DEST(DEST)1例:DEC AX DEC BYTE PTR DI+5 4.取补指令 NEG(Negate)格式:NEG DEST;DEST0-(DEST)例:MOV AL,01110011B NEG AL;AL10001101B
20、MOV BX,1111000011110000B NEG BX;BX0000111100010000B,5.比较指令CMP(Compare)格式:CMP DEST,SRC;FLAGS(DEST)(SRC)CMP执行两个数的相减操作,只影响标志寄存器(AF,CF,OF,SF,PF和ZF),不影响DEST。CMP后面要有一个条件转移指令,判断状态。,例:CMP AX,1000H;将AX的内容和1000H相减,影响标志位 CMP AX,BX+DI+100;将AX的值和字存储单元(BX+DI+100);数相比较,影响标志位,3.2.3 乘法指令1.无符号数乘法MUL(unsigned multiple
21、)格式:MUL SRC;两字节相乘:AXAL*(SRC)两字相乘:(DX,AX)AX*(SRC),2.带符号数乘法IMUL(signed multiple)格式:IMUL SRC;两字节相乘:AXAL*(SRC),结果带符号两字相乘:(DX,AX)AX*(SRC),带符号,3.2.4 除法指令1.无符号数除法DIV(unsigned divide)格式:DIV SRC;168位:ALAX/(SRC)(商),AHAX/(SRC)(余数)3216位:AX(DX,AX)/(SRC)(商),DX(DX,AX)/(SRC)(余数)2有符号数除法IDIV(signed divide)格式:IDIV SRC
22、;操作与DIV相同,但结果带符号。,3.2.5 符号扩展指令1.字节转换为字CBW(Convert byte into word)格式:CBW;将AL中的符号扩展到AH中。例:MOV AL,10011010B CBW;AX1111111110011010B2.字转换为双字CWD(Convert word into double word)格式:CWD;将AX中的符号扩展到DX中。,3.2.6 十进制调整指令 BCD(binary-coded decimal)是一种二进制的数字编码形式,是用二进制编码的十进制数,又称二进码十进数。它利用了4个二进制位来储存一个十进制的数码,由于常用的BCD码中从
23、左到右每一位的1分别表示8、4、2、1,所以这种代码又称8421BCD码。在IBM-PC中,表示十进制数的BCD码有压缩BCD码和非压缩BCD码两种格式。所谓压缩BCD码格式(packed BCD format),指的是用4位二进制数表示一位BCD码,用一个字节表示的两位BCD码。非压缩型BCD码格式(unpacked BCD format)是指一个字节可存放一个一位十进制数,其中高4位的内容不做规定(也有部分书籍要求为0,二者均可),低4位二进制数表示该位十进制数,,1.压缩BCD码加法累加器调整指令DAA(Decimal Adjust for Addition),格式:DAA;对AL的值调
24、整为正确的压缩BCD码。执行DAA前两个压缩型BCD码相加的结果已存于AL中。DAA调整的过程:若(AL&OFH)9 或标志 AF=1 则 ALAL+6,AF1 若 AL9FH或CF1 则 ALAL+60H,CF1 例:MOV AL,16H;AL=16 MOV CL,18H;BL=18 ADD AL,CL;AL=2EH,不符合1618=34 DAA;调整后,AL=34H,2压缩BCD码减法调整指令DAS(Decimal Adjust for Subtraction),格式:DAS;与DAA类似,将AL中的结果,调整为正确压缩BCD码 调整操作:若(AL&0FH)9或AF=1 则ALAL6,AF
25、1 若AL9FH或CF=1 则ALAL60H,CF1 例:MOV AL,86H;AL=86 MOV BL,07H;BL7 SUB AL,BL;AL7FH,AF1,CF0 DAS;AL79H,AF1,CF0,3.非压缩BCD码加法累加器调整指令AAA(ASCII Adjust for Addition),格式:AAA 非压缩BCD码相加的结果已存于AL中,AAA调整AL为正确的非压缩BCD码。AAA调整的过程:若(AL&OFH)9 或标志 AF=1 则 ALAL+6,AHAH+1,AF1 CFAF,AL(AL&OFH)否则 AL(AL&OFH)例:MOV AL,09H;AL=9 MOV CL,0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本指令系统 基本 指令系统 PPT 课件
链接地址:https://www.31ppt.com/p-5487069.html