收藏 分享(赏)

课次10 微机原理PPT.ppt

上传人:kpmy5893 文档编号:7256725 上传时间:2019-05-11 格式:PPT 页数:30 大小:438KB
下载 相关 举报
课次10 微机原理PPT.ppt_第1页
第1页 / 共30页
课次10 微机原理PPT.ppt_第2页
第2页 / 共30页
课次10 微机原理PPT.ppt_第3页
第3页 / 共30页
课次10 微机原理PPT.ppt_第4页
第4页 / 共30页
课次10 微机原理PPT.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、4.1.3 8086/8088指令系统,8086/8088CPU指令系统包含有133条基本指令。按其功能可以分为6类,它们是: 数据传送类指令 算术运算类指令 逻辑运算与位移类指令 字符串指令 控制转移类指令 处理器控制类指令。,一、 数据传送类指令,数据传送类指令时将数据、地址或立即数传送到寄存器或存储器单元中。它又可分为通用数据传送指令、累加器专用传送指令、地址传送指令和标志传送指令等四组。 (一)通用数据传送指令 1. 最基本的传送指令 指令格式及操作:MOV dst,src ;(dst)(src) dst 是目的操作数,它可以是存储器、寄存器(不能为IP)和段寄存器(不能为CS)。 S

2、rc 是源操作数,它可以是存储器、寄存器、段寄存器和立即数。,需说明一点,对于代码段寄存器CS和指令指针寄存器IP,通常无需用户利用传送指令改变其中的内容。但是CS可以作为源操作数。,16 位,2.堆栈操作指令 堆栈操作指令是用来完成压入和弹出堆栈操作的。80868088指令系统中提供了完成这两种操作的相应指令。 压入堆栈指令 指令格式及操作:PUSH src ;(SP) (SP)-2,(SP)+1:(SP) (src) src 源操作数可以是寄存器操作数和存储器操作数,且必须是16位的操作数,但不能是立即数。, 弹出堆栈指令 指令格式及操作:POP dst ; (dst) (SP)+1:(S

3、P),(SP) (SP)+2 dst 目的操作数可以是寄存器操作数和存储器操作数,且必须是16位的操作数,但不能是立即数。3.交换指令 指令格式及操作: XCHG opr1, opr2 ;(opr1) (opr2),(二) 累加器专用指令 这类指令中的一个操作数必须是累加器。累加器操作数可以是8位的,也可以是16位的。 1.输入/输出指令 输入输出指令可以分为两大类:一类是直接端口地址的输入输出指令:一类是通过DX寄存器间接端口地址的输入输出指令。 输入指令 直接寻址的输入指令 指令格式及操作:IN acc, port ;(acc) (port),间接寻址的输入指令 指令格式及操作:IN ac

4、c, DX ;(acc) (DX) 输出指令 直接寻址的输出指令 指令格式及操作:OUT port, acc ; (port) (acc) 间接寻址的输出指令 指令格式及操作:OUT DX, acc ; (DX) (acc),2.字节转换指令 指令格式及操作:XLAT src_table ;(AL) (BX)+(AL) XLAT指令是用来将一种字节代码转换成另一种字节代码。即将BX的内容(代码表格首址src_table)和AL的内容(表格偏移量)相加作为有效地址。并从中读出此内存表格地址单元的内容传送到AL累加器中。 XLAT指令还可以有以下几种表示形式:XLAT ;不写操作数XLATB ;有

5、B就不允许再写操作数。 XLAT ES:src_table ;重设段寄存器为ES,例在内存的数据段有一张16进制数的ASCII码表,其首地址为Hex_table,如下图所示,为欲将十六进制数0AH转换成ASCII码,则可用以下几条指令实现: MOV BX, OFFSET Hex_tale ;(BX) 表首址 MOV AL, 0AH ;(AL) 十六进制数A XLAT Hex_table ;查表转换,BX: 1000H,AX: 000AH,Hex_table,(三)地址传送指令 1. 取有效地址指令 指令格式:LEA reg16, mem 此指令的功能是将存放源操作数的16位偏移地址(即有效地址

6、EA)送到一个16位的通用寄存器中。即源操作数必须是一个存储器操作数,目的操作数必须是一个寄存器操作数。例如: LEA BX, buffer LEA AX, BPDI LEA DX, betyBXSI 注意LEA指令和MOV指令的异同。,不同:LEA BX, buffer ;将存储器buffer的偏 移地址送到BXMOV BX, buffer ;将存储器buffer的内容传送到BX 相同:LEA BX, buffer MOV BX, OFFSET buffer 以上两条指令都是将存储器buffer的偏移地址送到BX。其中OFFSET buffer 表示存储器偏移地址。,2. 地址指针装入DS指

7、令 指令格式:LDS reg16, mem32 此指令的功能是将源操作数所对应的双字长的内存单元中的高字内容(一般为16位段基址)送入DS,低字内容(一般为偏移地址)送入指令所指定的寄存器中。例如:LDS DI, 2130H,3. 地址指针装入ES指令 指令格式:LDS reg16, mem32 此指令的功能是将源操作数所对应的双字长的内存单元中的高字内容(一般为16位段基址)送入ES,低字内容(一般为偏移地址)送入指令所指定的寄存器中。例如:LES DI, 2130H,(四) 标志传送指令 1.取标志指令 指令格式: LAHF 2.置标志指令 指令格式: SAHF,OF,DF,IF,TF,S

8、F,ZF,AF,PF,CF,FLAG,AH,LAHF和SAHF指令操作示意图,3.标志压入堆栈指令 指令格式及操作:PUSHF ;(SP) (SP)-2,;(SP)+1;(SP) (FLAG) 4.标志弹出堆栈指令 指令格式及操作:POPF ; (FLAG) (SP)+1;(SP),; (SP) (SP)+2,二、算术运算指令,80868088有丰富的算术运算指令,而且可以处理4种类型的数据,如下表所示:,1.加法指令,在微处理器中,没有专用的BCD码运算指令,使用二进制运算指令进行BCD码数的运算,然后用BCD码运算调整指令进行调整,重新得到BCD码的结果。,例4.3 计算两个多字节十六进制

9、数之和:3B74AC60F8H+20D59E36C1H=?式中被加数和加数均有5个字节,可以编一个循环程序实现以上运算。假设已将被加数和加数分别存入从DATA1和DATA2开始的两个内存区,且均为低位字节在前,高位字节在后,如图4.15所示。要求相加所得结果仍存回以DATA1为首址的内存区。,程序流程图如图4.16所示。程序如下:MOV CX,5 ;设置循环次数MOV SI,0 ;置位移量初值CLC ;清进位CF LOOPER:MOV AL,DATA2SI;取一个加数ADC DATA1SI,AL ;和一个被加数相加INC SI ;位移量加1DEC CX ;循环次数减1 JNZ LOOPER ;

10、加完否,若没完,转LOOPER,继续相加HLT ;程序暂停,图4.15 例4.3中被加数和加数在内存中的存放情况,图4.16 例4.3的程序流程图,AAA指令的操作为:如果 (AL) 0FH9 或 (AF)1则 (AL) (AL)06H (AH) (AH)1(AF) 1(CF) (AF)(AL) (AL) 0FH)否则 (AL) (AL) 0FH) DAA指令的操作为:如果 (AL) 0FH9, (AF)1则 (AL) (AL)06H (AF) 1如果 (AL) 9FH 或 (CF)1则 (AL) (AL)60H (CF) 1,例要求计算两个至今指数之和,78?。可用以下指令实现: MOV A

11、X, 0007H ;(AL)=07H,(AH)=00H MOV BL, 08H ;(BL)=08H ADD AL, BL ;(AL)=0FH AAA ;(AL)=05H,(AH)=01H;(CF)=(AF)=1MOV AX, 0007H ;(AL)=07H,(AH)=00H MOV BL, 08H ;(BL)=08H ADD AL, BL ;(AL)=0FH DAA ;(AL)=15H,(AH)=00H ;(CF)=0,(AF)=1,2.减法指令,例4.4 内存数据段存放了200个带符号数,首地址为TAB1,要求将各数取绝对值后存入以TAB2为首址的内存区。由于200个带符号数中可能既有正数,

12、又有负数,因此先要判断正负。如为正数,可以原封不动地传送到另一内存区;如为负数,则需先求补即可得到负数的绝对值,然后再传送。程序如下:,LEA SI,TAB1 ;(SI)源地址指针LEA DI,TAB2 ;(DI)目标地址指针MOV CX,200 ;(CX)循环次数,CHECK: MOV AL,SI ;取一个带符号数到ALOR AL,AL ;AL内容不变,但使之影响标志JNS NEXT ;若(SF)=0,则转NEXTNEG AL ;否则求补 NEXT: MOV DI,AL ;传送到目标地址INC SI ;源地址加1INC DI ;目标地址加1DEC CX ;循环次数减1JNZ CHECK ;如

13、不等于零,则转CHECKHLT ;停止,AAS指令的操作为:如果 (AL) 0FH9 或 (AF)1则 (AL) (AL)06H (AH) (AH)1(AF) 1(CF) (AF)(AL) (AL) 0FH)否则 (AL) (AL) 0FH) DAS指令的操作为:如果 (AL) 0FH9, (AF)1则 (AL) (AL)06H (AF) 1如果 (AL) 9FH 或 (CF)1则 (AL) (AL)60H (CF) 1,3.乘法指令,AL,源操作数,AX,源操作数,4.除法指令,8086/8088CPU执行除法时规定:除数只能是被出数的一半字长。当被除数为16位时,除数应为8为;当被除数为32位时,除数应为16为,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报