当前位置:文档之家› 微机原理第3章80868088CPU的指令系统资料

微机原理第3章80868088CPU的指令系统资料

CD21H 机器语言——机器指令系统+相应的语法规则 汇编指令——指令的助记符形式。例如:INT 21H 汇编语言——汇编指令系统+相应的语法规则
8088/8086指令系统特点: 对硬件控制最彻底、占内存少、运行速度快 了解计算机组成结构和工作过程的工具 8086指令系统是整个x86系列CPU指令的基本集合,
第3章 8086/8088指令系统
mov ax,12h call display Jmp 1234h
主要内容
指令系统的一般概念 对操作数的寻址方式 六大类指令的操作原理
操作码的含义 指令对操作数的要求 指令执行的结果
§ 3.1 概述
指令——控制计算机完成指定操作的命令 指令系统——CPU所有指令及其使用规则的集合 机器指令——指令的二进制代码形式。例如:
IMUL 累加器乘8位寄存器 80~98
0
累加器乘16位寄存器 128~154
0
累加器和内存字节乘 (86~104)+EA
1
累加器和内存字乘 [134(138)~160(164)]+EA
1
DIV 除数在8位寄存器中 80~90
0
除数在16位寄存器中 144~162
0
除数为8位内存数 (86~96)+EA
SUB 寄存器到内存
16(24)+EA
立即数到寄存器
4
立即数到内存
17(25)+EA
MUL 累加器乘8位寄存器 70~77
累加器乘16位寄存器 118~133
累加器和内存字节乘 (76~83)+EA
累加器和内存字乘 [124(128)~139(143)]+EA
访问内存次数
1 1 0 1 1 0 1 0 1 0 1 0 1 2 0 2 0 0 1 1
内存到累加器
10(14)
寄存器到寄存器
2
内存到寄存器
8(12)+EA
寄存器到内存
9(13)+EA
MOV 立即数到寄存器
4
立即数到内存
10(14)+EA
寄存器到段寄存器 2
内存到段寄存器
8(12)+EA
段寄存器到寄存器 2
段寄存器到内存
9(13)+EA
ADD 寄存器到寄存器
3
或 内存到寄存器
9(13)+EA
移位
SHL/SHR/SAR,ROL/ROR,RCL/RCR
串操作
MOVS,CMPS,SCAS,LODS,STOS
控制转移
JMP,JXX,LOOP,CALL/RET, INT/IRET
8088/8086的操作数分为3类
立即数 寄存器操作数 存储器操作数
1、立即数(常数)
取值范围:
8位
16位
一般情况下,只需给出段内偏移地址 地址可以是直接的,也可以是间接的,还可以是地址表达式
一般不允许两个操作数同时为存储器操作数
存储单元的物理地址
CPU通过计算指令给出的 地址表达式得到存储器
操作数的偏移地址
存储单元的物理地址
=段基地址 + 偏移地址
汇编语言中只使用逻辑地址 (段地址:偏移地址)
段基地址
若指令中没有指明所涉及的段寄存器,CPU就采用默认 的段寄存器来确定操作数所在的段。
段寄存器使用的一些基本约定
*这些操作的段和偏移的使用由CPU决定,程序员无法更改。
存储器操作类型
*取指令 通用数据读写 串操作:源串 串操作:目标串 *堆栈操作 BP作为基址寄存器
默认的 段寄存器
CS DS DS ES
向后兼容 应用广泛,资料易于寻找
指令按功能分为六大类(92种)
数据传送类 算术运算类 逻辑运算和移位 串操作 控制转移类 处理器控制
§ 3.1.1 指令的基本构成
目的

说明要执行的 操作对象,可以 是什么操作 有0个、1个或2个
[指令基本构成举例]
MOV AX , BX
操作码 操作数 ADD AX,[SI+6] INC [BX] HLT
内存数据移1位
15(23)+EA
内存数据移若干位 20(28)+EA+4*位数
段内/段间直接转移 15
JMP 段内间接转移
8(12)+EA
段间间接转移
1
除数为16位内存数 [150(154)~168(172)]+EA
1
IDIV 除数在8位寄存器中 101~112
0
除数在16位寄存器中 165~184
0
除数为8位内存数 (107~118)+EA
1
除数为16位内存数 [171(175)~190(194)]+EA
1
循环和移在寄存器中移1位 2
位 在寄存器中移若干位 8+4*位数
无符号数 00H-FFH(0-255) 0000H-FFFFH(0-65535)
80H-7FH
带符号数
(-128~127)
8000H-7FFFH (-32768~32767)
MOV AX,0FA00H MOV 8000H,DX
;正确 ;错误
2、寄存器操作数
放在8个通用寄存器或4个段寄存器中的操作数
AX
16 位
AH
AL
BX
16 位
BH
BL
CX
16 位
CH
CL
DX
DH
16 位
DL
SI
DI
只能存放字操作数
BP
SP
CS
DS
段寄存器存放
当前操作数的
ES
段基地址
SS
不允许将立即数传送到段寄存器
3、存储器操作数
存储器操作数
类型 存储单元个数
字节
1

2
双字
4
指令中实际给出的是存储单元的地址,用[],如[1000H]、 [BX]、[SI+10]
部分8088常用指令
指令类型
助记符
数 数据传送 MOV,PUSH/POP,XCHG等
据 传
地址传送 LEA,LDS,LES
送 输入输出,ADC,INC
术 运
减法 SUB,SBB,DEC,NEG,CMP
算 乘/除法 MUL,IMUL,DIV,IDIV
逻辑
AND,OR,NOT,XOR,TEST
SS SS
允许超越的段寄存器 CS,ES,SS CS,ES,SS
CS,DS,ES
段内偏移来源
IP 由寻址方式指定
SI DI SP 由寻址方式指定
偏移地址
存储器操作数的偏移地址(也称有效地址 )可以通过不同的寻址方式由指令给出。
例:若(BX)=2000H, (SI)=0A00H, (DI)=2A00H,则以下指令的结果是一样的。
MOV AL, [2A00H] MOV AL, [BX+0A00H] MOV AL, [BX][SI] MOV AL, [DI]
§ 3.1.2 指令的执行时间
一条指令的执行时间=∑
单位用时钟周期数表示
取指令 取操作数 执行指令 传送结果
常用指令执行时间
指令
所需时钟周期数
MOV 累加器到内存
10(14)
相关主题