[工学]80868088指令系统

上传人:油条 文档编号:49628007 上传时间:2018-07-31 格式:PPT 页数:30 大小:438.50KB
返回 下载 相关 举报
[工学]80868088指令系统_第1页
第1页 / 共30页
[工学]80868088指令系统_第2页
第2页 / 共30页
[工学]80868088指令系统_第3页
第3页 / 共30页
[工学]80868088指令系统_第4页
第4页 / 共30页
[工学]80868088指令系统_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《[工学]80868088指令系统》由会员分享,可在线阅读,更多相关《[工学]80868088指令系统(30页珍藏版)》请在金锄头文库上搜索。

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

2、储器、寄存器(不能为 IP)和段寄存器(不能为CS)。 Src 是源操作数,它可以是存储器、寄存器、段寄存器 和立即数。第4章 80x86指令系统 需说明一点,对于代码段寄存器CS和指令 指针寄存器IP,通常无需用户利用传送指令改 变其中的内容。但是CS可以作为源操作数。16 位通用寄存器 AX BX CX DX BP SP SI DI AL BL CL DL AH BH CH DH段寄存器 CS DS SS ES存储器立即数16位816位816位8 16 位MOV 指令数据传送方向第4章 80x86指令系统 2.堆栈操作指令堆栈操作指令是用来完成压入和弹出堆栈操作的 。80868088指令系

3、统中提供了完成这两种操作的相 应指令。 压入堆栈指令指令格式及操作:PUSH src ;(SP) (SP)-2,(SP)+1:(SP) (src) src 源操作数可以是寄存器操作数和存储器操作 数,且必须是16位的操作数,但不能是立即数。第4章 80x86指令系统 弹出堆栈指令指令格式及操作:POP dst ; (dst) (SP)+1:(SP),(SP) (SP)+2 dst 目的操作数可以是寄存器操作数和存储器操作 数,且必须是16位的操作数,但不能是立即数。3.交换指令指令格式及操作: XCHG opr1, opr2 ;(opr1) (opr2) 第4章 80x86指令系统 (二) 累

4、加器专用指令这类指令中的一个操作数必须是累加器。累加 器操作数可以是8位的,也可以是16位的。 1.输入/输出指令输入输出指令可以分为两大类:一类是直接端 口地址的输入输出指令:一类是通过DX寄存器间 接端口地址的输入输出指令。 输入指令 直接寻址的输入指令指令格式及操作:IN acc, port ;(acc) (port)第4章 80x86指令系统 间接寻址的输入指令 指令格式及操作:IN acc, DX ;(acc) (DX) 输出指令 直接寻址的输出指令 指令格式及操作:OUT port, acc ; (port) (acc) 间接寻址的输出指令 指令格式及操作:OUT DX, acc

5、; (DX) (acc) 第4章 80x86指令系统 2.字节转换指令 指令格式及操作:XLAT src_table ;(AL) (BX)+(AL) XLAT指令是用来将一种字节代码转换成另一种 字节代码。即将BX的内容(代码表格首址src_table) 和AL的内容(表格偏移量)相加作为有效地址。并从 中读出此内存表格地址单元的内容传送到AL累加器中 。 XLAT指令还可以有以下几种表示形式:XLAT ;不写操作数XLATB ;有B就不允许再写操作数。 XLAT ES:src_table ;重设段寄存器为ES第4章 80x86指令系统 例在内存的数据段有一张16进制数的ASCII码表,其首地

6、址为 Hex_table,如下图所示,为欲将十六进制数0AH转换成ASCII码,则可用以 下几条指令实现: MOV BX, OFFSET Hex_tale;(BX) 表首址 MOV AL, 0AH ;(AL) 十六进制数A XLAT Hex_table;查表转换61000H 61001H 61002H6100AH 6100BH6100FH60000H DS:60000H BX: 1000H AX: 000AH+6100AHHex_table Hex_table+1 Hex_table+2Hex_table+A Hex_table+BHex_table+FA S C I I 表31H 32H41

7、H 42H30H46H0AHALEA6100AH41H41HA S C I I 表Hex_table=1000H第4章 80x86指令系统 (三)地址传送指令 1. 取有效地址指令 指令格式:LEA reg16, mem 此指令的功能是将存放源操作数的16位偏移地址( 即有效地址EA)送到一个16位的通用寄存器中。即源操 作数必须是一个存储器操作数,目的操作数必须是一个 寄存器操作数。例如: LEA BX, buffer LEA AX, BPDI LEA DX, betyBXSI 注意LEA指令和MOV指令的异同。第4章 80x86指令系统 不同:LEA BX, buffer;将存储器buff

8、er的偏移地址送到BXMOV BX, buffer;将存储器buffer的内容传送到BX相同:LEA BX, bufferMOV BX, OFFSET buffer 以上两条指令都是将存储器buffer的偏移地 址送到BX。其中OFFSET buffer 表示存储器偏移地 址。第4章 80x86指令系统 2. 地址指针装入DS指令指令格式:LDS reg16, mem32此指令的功能是将源操作数所对应的双字长的内 存单元中的高字内容(一般为16位段基址)送入DS, 低字内容(一般为偏移地址)送入指令所指定的寄存 器中。例如: LDS DI, 2130H34H 12H 00H 40H2130H2

9、132HDMDIDS1234H4000H第4章 80x86指令系统 3. 地址指针装入ES指令指令格式:LDS reg16, mem32此指令的功能是将源操作数所对应的双字长的内 存单元中的高字内容(一般为16位段基址)送入ES, 低字内容(一般为偏移地址)送入指令所指定的寄存 器中。例如: LES DI, 2130H34H 12H 00H 40H2130H2132HDMDIES1234H4000H第4章 80x86指令系统 (四) 标志传送指令 1.取标志指令 指令格式: LAHF 2.置标志指令 指令格式: SAHFOF DF IF TF SF ZFAFPFCFFLAGAHLAHF和SAH

10、F指令操作示意图第4章 80x86指令系统 3.标志压入堆栈指令指令格式及操作:PUSHF;(SP) (SP)-2, ;(SP)+1;(SP) (FLAG) 4.标志弹出堆栈指令指令格式及操作:POPF; (FLAG) (SP)+1;(SP), ; (SP) (SP)+2第4章 80x86指令系统 二、算术运算指令 80868088有丰富的算术运算指令,而且可以处 理4种类型的数据,如下表所示:AX、DX寄存器乘除AX寄存器乘除AX、DX寄存器乘除AX寄存器乘除AX寄存器加减09分离式AX寄存器乘除AX寄存器加减099组合式十 进 制所有的通用寄存器或存储器加减-32768+3276716位带

11、符号所有的通用寄存器或存储器加减-1281278位带符号所有的通用寄存器或存储器加减06553516位无符号所有的通用寄存器或存储器加减02558位无符号 二进制可作累加器使用的寄存器或存储器可作累加器使用的寄存器或存储器运算运算数据范围数据范围数据类型数据类型第4章 80x86指令系统 1.加法指令在微处理器中,没有专用的BCD码运算指令, 使用二进制运算指令进行BCD码数的运算,然后用 BCD码运算调整指令进行调整,重新得到BCD码的 结果。BCD调整指令ASCII码调整指令(dst) (dst) + 1(dst) (dst)+(src)+(CF)(dst) (dst) +(src)操作功

12、能1CPS Z ADAAAAAINC dstADC dst, srcADD dst, srcO标志位影响指令格式第4章 80x86指令系统 例4.3 计算两个多字节十六进制数之和:3B74AC60F8H+20D59E36C1H=?式中被加数和加数均有5个字节,可以编一个循环程序实现以上运算。假设已将被加数和加数分别存入从DATA1和DATA2开始的两个内存区,且均为低位字节在前,高位字节在后,如图4.15所示。要求相加所得结果仍存回以DATA1为首址的内存区。 第4章 80x86指令系统 程序流程图如图4.16所示。程序如下:MOV CX,5;设置循环次数MOV SI,0 ;置位移量初值CLC

13、 ;清进位CFLOOPER:MOV AL,DATA2SI;取一个加数ADC DATA1SI,AL;和一个被加数相加INC SI ;位移量加1DEC CX ;循环次数减1 JNZ LOOPER ;加完否,若没完,转LOOPER,继续相加HLT ;程序暂停 第4章 80x86指令系统 图4.15 例4.3中被加数和加数在内存中的存放情况 第4章 80x86指令系统 图4.16 例4.3的程序流程图 第4章 80x86指令系统 AAA指令的操作为: 如果(AL) 0FH9 或 (AF)1 则(AL) (AL)06H (AH) (AH)1 (AF) 1 (CF) (AF) (AL) (AL) 0FH)

14、 否则(AL) (AL) 0FH) DAA指令的操作为: 如果(AL) 0FH9, (AF)1 则(AL) (AL)06H (AF) 1 如果(AL) 9FH 或 (CF)1 则(AL) (AL)60H (CF) 1第4章 80x86指令系统 例要求计算两个至今指数之和,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)=1MOV AX, 0007H;(AL)=07H,(AH)=00H MOV BL, 08

15、H;(BL)=08H ADD AL, BL;(AL)=0FH DAA;(AL)=15H,(AH)=00H ;(CF)=0,(AF)=1第4章 80x86指令系统 2.减法指令BCD调整指令ASCII码调整指令(dst) (src)(dst) 0 (dst)(dst) (dst) 1(dst) (dst) (src) (CF)(dst) (dst) (src)操作功能AASCMP dst, src1CPS Z ADASNEG dstDEC dstSBB dst, srcSUB dst, srcO标志位影响指令格式第4章 80x86指令系统 例4.4 内存数据段存放了200个带符号数,首地址为TAB1,要求将各数取绝对

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号