微机系统与接口教学资料 第三章2.ppt
《微机系统与接口教学资料 第三章2.ppt》由会员分享,可在线阅读,更多相关《微机系统与接口教学资料 第三章2.ppt(201页珍藏版)》请在三一办公上搜索。
1、3.4 8088(8086)的指令系统,一、IBM PC(8086/8088)指令系统,二、数据传送指令,三、算术运算指令,四、逻辑运算指令,五、串操作指令,六、控制转移指令,七、处理机控制指令,一、IBM PC(8086/8088)指令系统,8086/8088 指令系统可分为六组:数据传送指令(Data transfar);算术指令(Arithmetic);逻辑指令(Logic);串处理指令(String manipulation);控制转移指令(Control transfar);处理机控制指令(Processor control);,二、数据传送指令,通用数据传送指令,地址传送指令,累加
2、器专用指令,标志寄存器传送指令,1.通用数据传送指令(1)基本传送指令 MOV DST,SRC 源操作数寄存器、存储器、立即数 目的操作数 寄存器、存储器 执行的操作:DST SRC MOV指令最简单、最常用,用来赋初值,或传送数据,或对数据进行暂存等。,其中源操作数(src)和目的操作数(dst)均可采用多种寻址方式,其传送关系如图所示:,由图可知MOV指令有6种格式:(1)CPU通用寄存器之间传送(r/r)MOV CL,AL;将AL中的8位数据传到CL(2)通用寄存器和段寄存器之间(r/SEG)MOV DS,AX;将AX中的16位数据传到DS(3)用寄存器和存储单元之间(r/M)MOV A
3、L,BX;将BX所指存储单元内容传到AL,(4)段寄存器和存储单元之间(seg/M)MOV DS,2000H;将2000H和2001H两存储单元内容传到DS(5)立即数到通用寄存器(r/Imm)MOV SP,2000H;将2000H送SP(6)立即数到存储单元(M/Imm)MOV WORD PTR SI,4501H;将立即数4501H送(SI)所指 的字单元,注意:MOV指令可以传8位或16位数据例:MOV ES,AL;错 MOV CL,4321H;错 MOV指令的操作数中必用一个寄存器,不允许两存储单元之间传送数据MOV 2000H,3000H;错例:MOV AL,SI MOV DI,AL
4、不能用CS,IP作目的操作数 不允许在段寄存器之间直接传送数据例:MOV DS,ES;错,不允许用立即数作目的操作数 MOV 2000H,AL;错 不能向段寄存器送立即数 MOV DS,3000H;错例:MOV AX,3000H MOV DS,AX*MOV 指令不影响标志位。,例1:把地址为AREA1(段内偏移量)的存储单元的内容,传送至同一 段内的地址为AREA2的存储单元中。,Mov AL,AREA1Mov AREA2,AL,例2:若要传送的不是一个字节,而是一个数据块,(例如内有100个字节),如何实现?,mov si,offset area1 mov di,offset area2 m
5、ov cx,100Again:mov al,si;mov di,al inc si inc di dec cx jnz again int 3,(2)栈操作指令 PUSH OPRD POP OPRD 堆栈按照先进后出的原则组织的一段内存区域。8088中规定堆栈设 置在堆栈段(SS段)内,堆栈指针SP的初值决定了堆栈的大小。SP始终指向堆栈的顶部,即始终指向最后推入堆栈的信息所在 的单元。操作数:16位通用寄存器;段寄存器;16位内存操作数(除立即数之外的 任何寻址方式)。,方式:(1)CPU通用寄存器入/出栈,如:PUSH AX POP BX(2)段寄存器入/出栈,如 PUSH CS POP
6、DS(3)存储单元入/出栈 PUSHBX+DI POP2000H,PUSH AX指令分两步执行:1.SP-2SP2.将AH内容送至SP+1所指单元;3.再将AL内容送至SP所指单元;例:MOV AX,1234H PUSH AX,POP AX指令分两步执行:1.先将SP所指单元内容送至AL,然后再SP+1所指单元内容送至AH,然后SP+2 SP 例:MOV AX,5678H POP AX,入栈和出栈指令性用于程序保存和恢复数据,或用于转子或中断时保护现场和恢复现场。其主要注意:(1)堆栈操作指令中,有一个操作数是隐含了的,这个操作数就是(SP)指示的栈顶存储单元;(2)8086堆栈都是字操作(3
7、)每执行一条指令,(SP)自动增减2(4)CS寄存器可以入栈,但不能随意弹出一个数据到CS(5)在使用堆栈指令时,要按“先进后出”原则来编写程序,(3)交换指令 XCHG OPRD1,OPRD2 在寄存器间或寄存器与存储器间交换信息(不允许使用段寄存器)。源操作数:寄存器、存储器 目的操作数:寄存器、存储器 执行的操作:(OPRD1)(OPRD2)例:XCHG BX,BP+SI(BX)=6F30H(BP)=0200H(SI)=0046H(SS)=2F00H(2F246H)=1234H,例如:XCHG AL,BL;(AL)与(BL)间进行字节交换 XCHG 2200H,DX;(DX)与(2200
8、H)、(2201H)两 单元间的字交换使用时注意:(1)OPR1和OPR2不能同时为存储器操作数;(2)任一个操作数都不能使用段寄存器,也不能使用立即数。,用来对寻址机构进行控制的指令。指令传送到16位目标寄存器中的是存储器操作数的地址,而不是它的内容。1.地址传送指令 LEA,LDS,LES 把地址传送到指定寄存器。(1)LEA 有效地址送寄存器。LEA REG,SRC(REG)(SRC)目的操作数 源操作数(16位通用寄存器)(内存操作数)该地址常用来设置一个16位的寄存器作为地址指针;该指令的执行效果与 mov reg,offset src 相同。,(三)地址目标传送指令,例:LEA B
9、X,BP+SI;执行后,BX中为(BP)+(SI)的值 LEA SP,0520H;执行后,使堆栈指针(SP)=0520H,例:lea bx,bxsi 执行前(bx)=1000h(si)=2000h 执行后 bx=1000h+2000h=3000h,(2)LDS 把源操作数指定的内存的4个相继字节的内容送至指定寄存器及DS中 LDS REG,SRC(REG)(SRC)(DS)(SRC+2)目的操作数 源操作数(16位通用寄存器)(内存操作数)(1)该指令完成一个32位地址指针的传送;(2)该指令通常指定 SI 作寄存器 REG。,DS=1000h,10100h,00020020,0200h,20
10、00h,SI,DS,例:lds SI,100h,(3)LES 把源操作数指定的内存的4个相继字节的内容送至指定寄存器及ES中。LES REG,SRC(REG)(SRC)(ES)(SRC+2)目的操作数 源操作数(16位通用寄存器)(内存操作数)(1)该指令完成一个32位地址指针的传送;(2)该指令通常指定 DI 作寄存器 REG。,ES=1000h,10100h,00020020,0200h,2000h,DI,ES,例:les di,100h,3.累加器专用指令 IN,OUT,XLAT 输入输出指令 PC机中,所有I/O端口与CPU之间的通信都有IN,OUT指令完成。长格式(直接方式):IN
11、AL,PORT OUT PORT,AL PORT端口地址 短格式(间接方式):IN AX,DX;从(DX)和(DX)+1所 指的两个端口输一个字到AX,低地址端 口的值输 入到AL,高地址端口的值输 到AH,1 输入/输出(I/O)指令输入指令长格式:INAL,PORT;将PORT端口字节数据输入到AL短格式:IN AX,DX;从(DX)和(DX)+1所指的两个端 口输一个字到AX低地址端口的值输 到AL,高地址端口的值输 到AH,输出指令:长格式:OUT PORT,AL;将AL中的1个字节数据输出 到PORT端口短格式:OUT DX,AX;将AL中低位字节输出到(DX)所指端口,同时将AH中
12、的高位 字节输出到(DX)+1所指的端口例33:欲将12位A/D变换器所得数字量输入。这时,A/D变换器应使用一个字端口,设为20H。MOV DX,02F0H IN AX,DX,注意:(1)指令只能用累加器AX/AL作I/O过程机构,不能用其它寄存器;(2)长格式的I/O指令端口范围为0FFH。(3)运行有I/O指令的程序时,若无硬件端口的支持,机器将出现死锁(4)在使用短格式I/O指令时,端口地址只能赋给DX。,(2)换码指令 XLAT 功能:将AL指向的换码表中的一个字节的内容送到AL中。操作数:隐含的寄存器 BX,AL 操作:(AL)(BX)+(AL),应先将表格的首地址送入BX寄存器,
13、将待查的值(码)放入AL中,用它来表示表中某一项与表首址的距离。例34:数字0-9对应的格雷码为:18H、34H、05H(见图)。依次放在内存以TABLE开始的区域,当#10端口输入一位十进制数时,要求将其转换为相应的格雷码再输出给该端口。MOV BX,TABLE;BX指向TABLE的首址 IN AL,10;从端口0AH输入待查值 XLAT TABLE;查表转换 OUT 10,AL;查表结果输出到0AH端口,若10端口输入值为7,则查表转换后输出值为11H,如图所示:,4.标志寄存器传送指令(1)读取标志指令 LAHF 功能:把 Flag 的低字节内容装入寄存器 AH 中。操作数:隐含的操作数
14、 标志寄存器Flag,AH 执行的操作:AH Flag 的低位字节。,(2)设置标志指令 SAHF 功能:把 Ah 的内容装入 Flag 的低字节。操作数:隐含的操作数标志寄存器 Flag,AH 执行的操作:Flag 的低位字节 AH,注:该指令影响标志位 Z、A、P、C、S,(3)标志寄存器入栈指令 PUSHF 功能:将标志寄存器 Flag 的内容压入堆栈保存。(4)标志寄存器出栈指令 POPF 功能:把栈中内容弹出至标志寄存器 Flag。PUSHF指令将标志寄存器内容推入堆栈顶部,同时修改堆栈指针:(SP)(SP)-2。该指令执行后,标志寄存器内容不变。POPF指令功能正好相反。注:该指令
15、影响标志位 O、S、Z、A、P、C。,三、算术运算指令,加法指令,减法指令,乘法指令,除法指令,十进制调整指令,1.加法指令 ADD DST,SRC 源操作数:通用寄存器、存储器、立即数 目的操作数:通用寄存器、存储器 执行的操作:DST DST+SRC 注:该指令影响标志位 注意:该指令适合有符号数和无符号数的运算。,DST+SRC,O S Z A P C,0 0 1 0 0 1 0 0 0,1.加法指令 ADD DST,SRC 源操作数:通用寄存器、存储器、立即数 目的操作数:通用寄存器、存储器 执行的操作:DST DST+SRC 注:该指令影响标志位 注意:该指令适合有符号数和无符号数的
16、运算。,DST+SRC,O S Z A P C,0 0 1 0 0 1 0 0 0,例1:MOV DX,4652H ADD DX,0f0f0h,执行后:(DX)=3742H z=0 s=0 c=1 o=0 对无符号数 溢出 结果错 对有符号数 不溢出 结果正确 问:对带符号数和无符号数怎样判断是否溢出?,有符号数的溢出用溢出标志 o 判断;无符号数的溢出用进位标志 c 判断。,ADC DST,SRC 源操作数:通用寄存器、存储器、立即数 目的操作数:通用寄存器、存储器 执行的操作:DST DST+SRC+C 功能:主要用于多字节运算 注:该指令影响标志位 注意:该指令适合有符号数和无符号数的运
17、算。,DST+SRC+C,O S Z A P C,0 0 1 0 0 1 0 0 0,例2:在内存的First和Secontd开始的区域中分存放着2F365H和 5E024 H两个数,要求求其和,并存入Third中。2 F 3 6 5+5 E 0 2 4 8 D 3 8 9,MOV AX,FirstADD AX,SecondMOV Third,AXMOV AX,First+2ADC AX,Second+2MOV Third+2,AX,2 F 3 6 5 F 3 6 5+5 E 0 2 4+E 0 2 4 8 D 3 8 9 D 3 8 9 1 0 0 0 2+0 0 0 5 0 0 0 8,2
18、,1,FirstSecondThird,65F302 0024E0050089D30800,INC OPRD 操作数:通用寄存器、存储器(不能是段寄存器或立即数)执行的操作:OPRD OPRD+1 功能:用于在循环中修改地址指针及循环次数等。注:该指令影响标志位 例:INC CX;将CX的内容加1后 再送回CX中 注意:(1)该指令将操作数视为无符号数;(2)INC指令只影响OF、SF、ZF和PF,而不影响进位标志 CF,因此不能用INC指令进行循环计数来控制循环的结束。,OPRD+1,O S Z A P,0 0 1 0 0 1 0 0 0,2.减法指令 SUB DST,SRC 源操作数:通用
19、寄存器、存储器、立即数 目的操作数:通用寄存器、存储器 执行的操作:DST DST-SRC 注:该指令影响标志位 例如:SUB AX,BX;AX内容减去BX中的内容,结果放在AX中 注意:该指令适合有符号数和无符号数的运算。,DST-SRC,O S Z A P C,0 0 1 0 0 1 0 0 0,SBB DST,SRC 源操作数:通用寄存器、存储器、立即数 目的操作数:通用寄存器、存储器 执行的操作:DST DST-SRC C 注:该指令影响标志位 注意:该指令适合有符号数和无符号数的运算。同加法指令 有符号数的溢出用溢出标志 o 判断;无符号数的溢出用进位标志 c 判断。,DST SRC
20、-C,O S Z A P C,0 0 1 0 0 1 0 0 0,例:SUB DH,BP+4(DH)=41H(SS)=0000H(BP)=00E4H(00E8H)=5AH,结果:(DH)=0E7H S=1 Z=0 C=1 O=0 如果为有符号数则结果正确(无溢出)如果为无符号数则结果错误(有溢出),例3:双精度数运算 W=X+Y+24-Z,XYZW,65F302 0024E0050089D30800,MOV AX,X MOV DX,X+2ADD AX,YADC DX,Y+2;X+YADD AX,24ADC DX,0;X+Y+24 SUB AX,Z SBB DX,Z+2;X+Y+24-ZMOV
21、W,AXMOV W+2,DX;送入w,DEC OPRD 操作数:通用寄存器、存储器(不能是段寄存器或立即数)执行的操作:OPRD OPRD-1 功能:用于在循环中修改地址指针及循环次数等。注:该指令影响标志位 例:DEC BX;将BX的内容减1后 再送回BX中 DEC SI 注意:(1)该指令将操作数视为无符号数;(2)该指令不影响 进位标志 C,OPRD-1,O S Z A P,0 0 1 0 0 1 0 0 0,NEG OPRD 操作数:通用寄存器、存储器 执行的操作:求补指令,将操作数按位(连同符号位)取反后 加1,再送回操作数。注:该指令影响标志位,OPRD,O S Z A P C,0
22、 0 1 0 0 1 0 0 0,NEG将src中的内容变反加1。例如:若(AL)=03H,执行NEG AL后,(AL)=0FDH。0FDH的原码为10000011,即为-3.,CMP DST,SRC 源操作数:通用寄存器、存储器、立即数 目的操作数:通用寄存器、存储器 执行的操作:DST-SRC 注:该指令影响标志位 注意:(1)该指令同 SUB,但其不保存运算结果;(2)该指令后面通常跟一条转移指令,根据标志位 产生不同的程序分支。,DST-SRC,O S Z A P C,0 0 1 0 0 1 0 0 0,比较指令主要用于两个数之间的关系:大、小、相等。如:A,B1.比较相等。只要看Z
23、标志。Z=1相等 Z=0不相等。2.比较大小。分两种情况。无符号数 看进(借)位C 标志。C=1,有借位,则 AB A=A0H 1 0 1 0 0 0 0 0 A=53H 0 1 0 1 0 0 1 1 B=53H 0 1 0 1 0 0 1 1 B=A0H 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 1 1 AB AB,1,带符号数*同号:A=24H 0 0 1 0 0 1 0 0 B=44H 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 不会溢出O=0,用符号位 S 判断 O=0 S=0 AB S=1 AB S=0 AB S=1
24、 AB,结论:O S=0 AB O S=1 AB(详细述述见P106),8088中有几条用于判断有符号数大小的转移指令,如:JG/JNLE 大于则转移 条件为:O S=0 且 Z=0 JL/JNGE 小于则转移 条件为:O S=1 同样有几条用于判断无符号数大小的转移指令,如:JA/JNBE 高于则转移 条件为:C=0 且 Z=0 JBE/JNA 低于或等于则转移 条件为:C=1 或 Z=1,例4:比较两个无符号数的大小,并将大数存入AL中。,XY,65F302 0024E0050089D30800,MOV AL,X MOV BL,Y CMP AL,BL;AL-BL JNC NEXT;当CF=
25、0,转移 XCHG AL,BLNEXT:HLT,例5:比较两个带符号数的大小,并将大数存入AL中。,XY,65F302 0024E0050089D30800,MOV AL,X MOV BL,Y CMP AL,BL JG NEXT;大于则转移 XCHG AL,BLNEXT:HLT,例6:若自Block开始的内存中有100个带符号数,找出最大值存入Max单元。,Block,65F302 0024E00500,MOV BX,Offset Block MOV AX,BX INC BX INC BX MOV CX,100 Again:CMP AX,BX JG NEXT MOV AX,BX Next:IN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机系统与接口教学资料 第三章2 微机 系统 接口 教学 资料 第三
链接地址:https://www.31ppt.com/p-6614408.html