课次10 微机原理PPT.ppt_第1页
课次10 微机原理PPT.ppt_第2页
课次10 微机原理PPT.ppt_第3页
课次10 微机原理PPT.ppt_第4页
课次10 微机原理PPT.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

4、作: IN acc, 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 ;不

5、写操作数 XLATB ;有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 此指令的功能是将存放源操作数的1

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

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

8、SAHF,OF,DF,IF,TF,SF,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码的

9、结果。,例4.3 计算两个多字节十六进制数之和: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 ;位移量加1 DE

10、C CX ;循环次数减1 JNZ LOOPER ;加完否,若没完,转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,例要求计

11、算两个至今指数之和,78?。可用以下指令实现: MOV AX, 0007H;(AL)=07H,(AH)=00H MOV BL, 08H;(BL)=08H ADD AL, BL;(AL)=0FH AAA;(AL)=05H,(AH)=01H ;(CF)=(AF)=1 MOV 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为首址的

12、内存区。 由于200个带符号数中可能既有正数,又有负数,因此先要判断正负。如为正数,可以原封不动地传送到另一内存区;如为负数,则需先求补即可得到负数的绝对值,然后再传送。程序如下:,LEA SI,TAB1;(SI)源地址指针 LEA DI,TAB2 ;(DI)目标地址指针 MOV CX,200 ;(CX)循环次数,CHECK: MOVAL,SI ;取一个带符号数到AL ORAL,AL ;AL内容不变,但使之影响标志 JNSNEXT ;若(SF)=0,则转NEXT NEG AL ;否则求补 NEXT:MOV DI,AL ;传送到目标地址 INC SI ;源地址加1 INC DI ;目标地址加1 DEC CX ;循环次数减1 JNZ CHECK ;如不等于零,则转CHECK HLT ;停止,AAS指令的操作为: 如果(AL) 0FH9 或 (AF)1 则(AL) (AL)06H (AH) (AH)1 (AF) 1 (CF) (AF) (AL) (AL) 0FH) 否则(AL) (AL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论