第三章 指令系统
第3章 指令系统(BH)
• 程序设计语言:是实现人机交换信息的基本工具,
分为机器语言、汇编语言和高级语言。 能直接识别和执行的语言。
• 机器语言:用二进制编码表示每条指令,是计算机
• 汇编语言:是用助记符、符号和数字等来表示指令
的程序设计语言。它与机器语言指令是一一对应的。
MOV direct,Rn;
111 1rrr direct
(Rn)
direct
MOV direct, direct;
1000 0101 源 direct 目的 direct
(源 direct) 目的 direct
MOV direct,@Ri ;
1000 011i direct
((Ri))
direct
• 例如
计算机科学学院
电子信息科学教研室
12
• 例如:将片内RAM 65H单元内容47H送A,可执行 指令“MOV A,@R0”。其中R0内容为65H。如 图所示:
以指令中所指定 的R0内容(65H) ① 为指针
地址 数据存储器
R0
65H
┋
② A
47H
将片内RAM 65H单 元内容47H送A
65H
11
计算机科学学院
电子信息科学教研室
4、寄存器间接寻址
• 寄存器间接寻址:操作数的地址事先存放在某个寄
存器中,寄存器间接寻址是把指定寄存器的内容作为 地址,由该地址所指定的单元内容作为操作数。
• 89C51规定R0或R1为间接寻址寄存器,它可寻址内部
地址RAM低位的128B单元内容。还可采用DPTR作为 间接寻址寄存器,寻址外部数据存储器的64KB空间。
第三章 MCS-51系列单片机指令系统及汇编语言程序设计
加1指令(5条)
INC INC INC INC INC A direct @Ri Rn DPTR
减1指令(4条)
DEC DEC DEC DEC A direct @Ri Rn
十进制调整指令(1条)
DA A ; DA指令只能放在加法指令后应用,把A中按二进制 相加后的结果调整成按BCD数相加的结果 。
堆栈操作类指令(2条)
PUSH direct POP direct 例:SP=07H,(35H)=55H,指令PUSH 35H执行后,55H送入 08H地址单元,SP=08H。
交换指令(5条)
XCH A,Rn XCH A,@Ri XCH A,direct XCHD A,@Ri SWAP A 例:A=80H,R0=32H,(32H)=FFH,指令XCHD A,@R0执行 后,A=8FH,(32H)=F0H。
• 作业: • 计算 2B46H * 8AH ,将计算结果放在片内 • RAM 4FH、4EH、4DH单元,4DH放最低 位。
3. 逻辑操作类指令(共24条)
“与”操作指令(6条)
ANL ANL ANL ANL ANL ANL A,direct A,#data A,Rn A,@Ri direct,A direct,#data
逻辑操作类指令共有24条,主要包括“与”、“或”、“异或”、求反、 清0、左右移位等逻辑操作。
“或”操作指令(6条)
ORL A,direct ORL A,#data ORL A,Rn ORL A,@Ri ORL direct,A ORL direct,#data 例:(21H)=3AH,A=14H,指令ORL 21H,A执行后,(21H)=3EH。
CHENG: MOV A , R2 • MOV B , R3 • MUL AB • MOV R5 , A • MOV R6 , B • MOV A , R2 • MOV B , R4 • MUL AB • ADD A , R6 • MOV R6 , A • MOV A , B • ADDC A , #00H • MOV R7 , A • RET
第三章 指令系统--指令
寻址方式指令系统
数据传送指令算术运算指令逻辑运算指令串操作指令
控制转移指令处理器控制指令
通用传送指令
累加器专用传送指令
地址传送指令
标志传送指令
对标志位的影响: 除SAHF和POPF指令外,其余的所有数据传送类指令
格式:
功能:
操作数类型:
DS,100H
用
堆栈:执行
PUSH
POP
SS指向堆栈段的起始位置SP指定栈顶
PUSH AX PUSH DS POP DS POP AX
格式:
oprd1,
立即数、段寄存器和
不影响
通用传送指令
累加器专用传送指令地址传送指令
标志传送指令
LEA (Load Effective Address)
LDS (Load pointer into register and DS) LES (Load pointer into register and ES)
LEA LEA
LEA
数据传送指令算术运算指令逻辑运算指令串操作指令
控制转移指令处理器控制指令
实现二进制
所有算术运算指令均所有算术运算指令均
四则运算是计算机经常进行的一种操作。
请注意算术运算指令对
只有一个操作数:寄存器或存储单元对操作数加
用于计数器和地址指针的调整
不影响进位
对操作数减
用于计数器和地址指针的调整不影响进位。
005-指令系统_1303
MOV 说明
段寄存器之间的传送 MOV ES, DS; 错 MOV AX, DS MOV ES, AX; 对 注意CS和IP的使用 CS和IP不能作为目标操作数,CS可以作为源操作数。 例: MOV CS,AX; 错 MOV AX,CS; 对 MOV IP, AX; 错 MOV AX,IP; 对
MOV 说明
ቤተ መጻሕፍቲ ባይዱ
MOV 应用
③ CPU内部寄存器(除CS和IP外)与存储器(所有寻址方式)
之间数据传送。可以实现一字节或一个字的传送。存储单元
之间不能直接传送
MOV MEM, AX; 累加器存储器,直接寻址
MOV MEM, DS;段寄存器存储器,直接寻址 MOV DISP[BX],CX;寄存器存储器,变址寻址
指令系统的符号说明
src, dest 源,目的操作数(下列寻址方式都可以用)
[BX+SI+n],[BX+DI+n],[BP+SI+n],[BP+DI+n]
[SI+n], [N], [ ] [DI+n], r [BP+n], [BX+n]
存储器单元的内容(正常在数据段)
ES:[ ] 附加存储器段的内容 OPRD 操作数 Seg im 段寄存器(CS, DS, ES, SS ) 立即数 (n 8位, nn 16位, nnnn 32位)
MOV 实例
…
MOV SI,OFFSET AREA1
MOV DI,OFFSET AREA2 MOV CX,100 AGAIN : MOV AL,[SI] MOV [DI],AL
INC
INC DEC …
SI
DI CX
第三章 指令系统
(1) 三地址双操作
50
指令
数指执令行一条三地址的加法指令需要访问514
下条指令
次主.存。
个 ( 假 单 存A显 设 元 放1号第中地指中在三单)址令,主一取地O,存第存元址次第P指放一的(双中从二令在、1A操2取5操的主第0作第0作含存二0)数一义 的 操号数存指和→为 5 作操令单,的2: 0 数A有作元第303分3号0数中四0别,取次0第指将号三令加单次,法元从第的。2二结1200000次果0从保第第1存一二号操操0到...单作作0主元数数
寄存器/存储器:直接给出寄存器或存储 器的地址码(名称)即可; 注:寄存器(CPU内部或外围设备内部) 及存储器的编址方式: 1)字编址、字节编址、位编址; 2)统一编址、非统一编址
操作数的编码方式
例:设某机主存容量为16MB ,机器 字长16 位,若最小寻址单位为字节 (按字节编址) ,其地址码为多少位? 若最小寻址单位为字(按字编址) ,其 地址码又为多少位?
共需12 条指令,其中7 条一地址的进、出栈指令, 5 条零地址的算术运算指令。进、出栈指令3 次访 存,算逻指令4 次访存,执行此程序共访存7 × 3 + 5 × 4 = 41 次。
例: 某一机器的指令系统,操作码8 位, 地址码均为16 位,CPU 与主存之间每次传 送16 位数据。A 、B 、C 、D 、E 表示字地 址,存放16 位数据。
常用指令寻址方式
顺序寻址方式 跳跃寻址方式:直接、相对、间接
栈及相关概念
1、栈的分类: 用寄存器实现堆栈(串联堆栈) 内存中开辟堆栈区
自底向上生成堆栈 自顶向下生成堆栈 2、栈的建立: 将栈顶地址传送到SP中 3、栈的操作: PUSH/POP、MOV
IA32指令系统
微机原理第3章-指令系统
▲按给出偏移地址方式的不同,分为以下5种: 寄存器间接寻址 寄存器相对寻址 基址加变址寄存器 相对基址加变址寄存器 MOV AL, [ BX ] MOV AL, [ BX + 10H ] MOV AL, [ BX + SI ] MOV AL, [ BX + SI + 10H ]
(1)寄存器间接寻址
寄存器寻址方式的操作数是寄存器的值,指令中直接 使用寄存器名,包括8位或16位通用寄存器和段寄存器。可 使用的16位寄存器:AX、BX、CX、DX、SI、DI、SP、 BP;其中:AX、BX、CX、DX可分成两8位使用。
例: MOV AX,CX
;(AX)
(CX)
INC CX
;(CX)
(CX)+1
3.直接寻址(Direct Addressing)
0002
AH
AL
默认段寄存器的关系: ① 使用BX、SI、DI,默认段寄存器为DS
(BX)
PA = ( DS )×10H + (SI) (DI)
② 使用BP,默认段寄存器为SS PA = ( SS )×10H + ( BP )
使用BX、SI、DI的寄存器寻址,默认段寄存器为DS
寄存器组 AH AL BH BL CH CL DH DL SI DI BP SP AX BX CX DX DS ES SS CS IP 地 址 加 法 器
运 算 器
控制总线CB
码
器
PSW标志 寄存器
执行部件控制电路
CPU
总线
内存
例: MOV AX , [ BX + SI ]
若 ( DS ) = 4000H
( BX ) = 2000H ( SI ) = 100H 则内存操作数的物理地址为:
汇编语言第3章 指令系统和寻址方式
5.寄存器相对寻址方式(register relative addressing)
EA=基址(base) 或变址( index)+偏移量 (displacement)
基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段
(SI) 物理地址=(DS)*16+(BX)+displacement
(DI) =(SS)*16+(BP)+ (SI)+displacement (DI)
例:mov AX,ARRAY[BX][DI] (DS)=1000H,(BX)=1200H, (DI)=1000H, ARRAY=1000H 物理地址=DS*16+(BX)+(DI)+ARRAY =DS*16+1200+1000+1000=13200H 若:(13200)=34H,(13201)=12H 则,(AX)=1234H 允许段超越。 例:mov AL,ES:ARRAY[BX][DI] 用途:处理成组数据(举例说明)
2.段内间接寻址(intrasegment indirect addressing) (IP)新=EA=寄存器或存储单元的内容 寄存器:所有寄存器寻址方式可用的寄存器 存储单元:所有存储单元寻址方式均适用 例:JMP SI (IP)=(SI) JMP WORD PTR VAR或简写JMP VAR (DS)=1000H,VAR=2000H 存储单元的物理地址=(DS)*16+VAR=12000H (12000H)=1234H 则,(IP)新=1234H
4.寄存器间接寻址方式(register indirect addressing)
EA=基址(base) 或变址( index) 基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段 (SI) 物理地址=(DS)*16+(BX) (DI) =(SS)*16+(BP)
第三章 8086 8088指令系统
SI 1200
+)
6000 0 1200 61200 AX 33 44
61200H 61201H
存储器 . . . 44H 33H 数 据 段
. . .
图 3-5 寄存器间接寻址示意图
3.2.5 寄存器相对寻址
寄存器相对寻址——操作数在存储器中。由指令指定的地址寄存器的内容加上指令中
给出的一个8位或16位的地址位移量,即可得操作数的偏移地址。
SI AX AX AX AX AX
3.2.8隐含寻址
隐含寻址—— 操作数隐含在操作码中,在有些指令的操作数中,不仅包含了操作的性质,
还隐含了部分操作数的地址。如乘法指令 MUL,在这条指令中只须指明乘数的地址,而被乘数 已经乘积的地址是隐含且固定的。这种将一个操作数隐含在指令码中的寻址方式就称为隐含
立即数操作数: 所谓立即数指具有固定数值的操作数,不因指令的执行而发生变化 。立即数操作 数只能用作源操作数,而不能用作目标操作数。
寄存器操作数:
8086CPU的8个通用寄存器和4个段寄存器可以作为指令中的寄存器操作数,寄存
器操作数在指令中既可以作为源操作数,也可以用作目标操作数。 存储器操作数: 参加运算的数据是存放在内存中。
两单元的内容送到AX中。假设DS=2000H,则所寻找的操作数的物理地址为: 2000H×10H+3102H = 23102H, 指令的执行情况如图3-3所示
存储器 . . .
MOV操作码
02H 31H AH AL 23102H 23103H
图 3-3 直接寻址方式
代 码 段
. . . ×× ×× . . . 数 据 段
请注意:使用基址—变址方式时,不允许将两个基址寄存器或两个变址寄存器组合
第3章MCS-51单片机指令系统
第3章MCS-51单片机指令系统3.1概述3.1.1指令格式3.1.2指令的三种表示形式3.1.3指令的字节数1. 单字节指令(49条)图3-1 MOVA,Rn指令的格式2单片机原理及其接口技术(第2版)2. 双字节指令(46条)3. 三字节指令(16条)3.1.4指令的分类1. 数据传送指令(28条)2. 算术运算指令(24条)3. 逻辑操作和环移指令(25条)4. 控制转移指令(17条)5. 位操作指令(17条)3.1.5指令系统综述1. 指令系统中所用符号的说明2. 指令对标志位的影响3.2寻址方式3.2.1寄存器寻址图3-2寄存器寻址示意图单片机原理及其接口技术(第2版) 3 3.2.2直接寻址图3-3直接寻址示意图3.2.3立即寻址3.2.4寄存器间址图3-4寄存器间址寻址示意图3.2.5变址寻址图3-5变址寻址示意图4单片机原理及其接口技术(第2版)3.2.6相对寻址图3-6相对寻址示意图3.2.7位寻址3.3数据传送指令3.3.1内部数据传送指令(15条)1. 立即寻址型传送指令2. 直接寻址型传送指令3. 寄存器寻址型传送指令4. 寄存器间址型传送指令5. 内部数据传送指令的使用图3-7 8×C552/8051指令的数据传送方式单片机原理及其接口技术(第2版) 5 3.3.2外部数据传送指令(7条)1. 16位数传送指令2. 外部ROM的字节传送指令图3-8 0~9平方值表3. 外部RAM的字节传送指令3.3.3堆栈操作指令(2条)图3-9例3.8的堆栈变化示意图6单片机原理及其接口技术(第2版)3.3.4数据交换指令(4条)3.4算术与逻辑运算和移位指令3.4.1算术运算指令(24条)1. 加法指令2. 减法指令3. 十进制调整指令4. 乘法和除法指令3.4.2逻辑运算指令(20条)1. 逻辑与运算指令2. 逻辑或指令3. 逻辑异或指令4. 累加器清零和取反指令3.4.3移位指令(5条)单片机原理及其接口技术(第2版)7图3-10例3.26附图3.5控制转移和位操作指令3.5.1控制转移指令(17条)1. 无条件转移指令图3-11 AJMP指令转移范围8单片机原理及其接口技术(第2版)图3-12例3.29附图图3-13带符号数的比较方法3. 子程序调用和返回指令图3-14二级子程序嵌套及断点地址存放单片机原理及其接口技术(第2版)9图3-15例3.33附图10单片机原理及其接口技术(第2版)4. 空操作指令3.5.2位操作指令(17条)1. 位传送指令2. 位置位和位清零指令3. 位运算指令4. 位控制转移指令习题与思考题3.1指令通常有哪三种表示形式?各有什么特点?3. 2 MCS-51指令按功能可以分为哪几类?每类指令的作用是什么?3. 3 MCS-51共有哪七种寻址方式?各有什么特点?3. 4指出下列每条指令源操作数的寻址方式和功能。
第三章 MCS--51指令系统
(3) 该指令使CY、OV清0。
如除数为0,则A为不定值,OV=1
第五节 逻辑运算指令 一、对A的操作 CLR A;A清0 CPL A;A取反 移位指令 RL A RLC A RR A RRC A
或 MOV R1,#20H MOV @R1, #3AH
MOV DPTR, #3020H
例3 将30H与20H内容互换
MOV A, 30H MOV 30H, 20H MOV 20H, A
(1)MOV 00H,#0FFH 或(1)MOV R0,#00H MOV @R0, #0FFH 或(1)MOV PSW, #00H MOV R0, #0FFH
INC Rn
INC direct INC @Ri
INC DPTR
例17 编程将存放在31H~33H中的数相加,其和放入30H单元 (设和不超过8位)。 MOV R0,#31H MOV A, @R0 INC R0 ADD A, @R0 INC R0 ADD A, @R0 MOV 30H, A MOV R0, #31H MOV R7, #03H MOV A, #00H LOOP:ADD A, @R0 INC R0 DJNZ R7, LOOP MOV 30H, A
第三章MCS-51单片机指令系统
基本要求: 熟记MCS-51的主要指令及简单程序的编程方法。 难点及处理: MCS-51的111条指令比较枯燥 ,需要记忆,可 多读一些例题并动手编一编。
第一节 指令及其表示方式
一、指令的基本概念 指令--让计算机做某操作所发命令
指令系统-- 一台计算机所有指令的集合。 MCS-51单片机共111条指令,分为五大类
四、堆栈操作指令 入栈:PUSH direct 出栈:POP direct
第三章MCS51的指令系统
3.4.1 MCS-51数据传送指令
[1]. 以累加器A为目的操作数类指令(4条) 这4条指令的作用是把源操作数指向的内容送到累加器A。有直接、
立即数、寄存器和寄存器间接寻址方式:
MOV A,direct
(direct)→(A)直接单元30H
MOV A,0A2H
§3.1 概述
7种寻址方式,111条指令
指令所占用空 间(字节数)
指令执行周期 (运算速度)
单字节指令:49条 双字节指令:45条 三字节指令:17条
单周期指令:64条 双周期指令:45条 四周期指令:2 条
试问
1 如果一条指令执行时间为3个机器周 期,那么需要经历多少个时钟周期?
2 如果一条指令执行时使用了2us,而 晶振使用的是12MHz,请问执行这条指 令需要多少个机器周期?
(A)+((Ri))+(C)→(A) 累加器A中的内容与工作寄存 器Ri指向地址单元中的内容、连同进位位相加,结果存在A中
3.4.2 MCS-51算术运算指令
[3]. 带借位减法指令(4条)
这组指令包含立即数、直接地址、间接地址及工作寄存器与累加器A连同借位 位C内容相减,结果送回累加器A中。
3.4.1 MCS-51数据传送指令
[2]. 以寄存器Rn为目的操作数的指令(3条)
这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器 Rn中。有直接、立即和寄存器寻址方式:
MOV Rn, direct (data)→(Rn) 直接寻址单元中的内容送到寄存器Rn中 MOV R4,37H
**补充知识
MCS51系列单片机为复杂指令单片机CISC。目前单片机大 量使用的是精简指令集RISC结构单片机.
第三章MCS-51指令系统
3.1 概述
3.2
3.3
寻址方式
MCS-51的指令系统
3.4
伪指令
3.1
概述
指令:使计算机完成某种操作的命令。 指令系统 :计算机能够执行的全部操作所对应的指 令集合。 机器语言: 采用二进制编码表示指令,是计算机能够直 接识别和执行的语言。 汇编语言: 采用助记符 、符号、数字来表示指令的程序 语言,它与机器语言指令时一一对应的。
如果我们分别向DPH,DPL送数,则结果也一样。
如下面两条指令: 则就相当于执行了 MOV DPH,#35H MOV DPTR,#3512H。 MOV DPL,#12H。
(6) 累加器A与片外RAM之间的数据传递类指令(4条)
MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A 说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所 有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外 部RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接 进行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送 入另一个单元(设为0200H单元),也必须先将0100H单元中的内 容读入A,然后再送到0200H单元中去。
MOV B,R0
PUSH ACC
;R0→B,R0为寄存器寻 址,B为直接寻址。
;A的内容压入堆栈
3.2.4
寄存器间接寻址
例:MOV A, @R0
• 以寄存器中内容为地址,以该地址中内容为操作数的
寻址方式。间接寻址的存储器空间包括内部RAM和
外部RAM。 • 能用于寄存器间接寻址的寄存器有R0,R1,DPTR, SP。其中R0、R1必须是工作寄存器组中的寄存器。 SP仅用于堆栈操作。
第三章基本指令系统
注:该指令用在多字节加法运算中。
28
例:两个4字节无符号数相加,两数分别在2000H、3000H开 始的内存单元,和放在2000H开始的4个内容单元。
MOV SI, 2000H MOV AX, [SI] MOV DI, 3000H ADD AX, [DI] MOV [SI], AX MOV AX, [SI+2] ADC AX, [DI+2] MOV [SI+2], AX ;SI指向一加数首址 2000H ;AX 8423H ;DI指向另一加数首址 ;AX 8423H+7F00H ;低16位和送[2000H][2001H] ;AX 1000H 3000H ;AX 1000H+2000H+CF ;高16位和送[2002H][2003H]
4)DST、SRC长度要一致。
MOV AL, BX ()
5) DST 不能是立即数 MOV 1000H, AX () 6)DST、SRC 不能同时为存储器寻址 MOV [1000H], [3000H] () 7)MOV指令不破坏源操作数
6
一、通用传送指令——XCHG
2、XCHG 格式:XCHG OPR1, OPR2 ; OPR1 OPR2 功能:两操作数内容相交换。 例: XCHG BL, AL ;两寄存器内容交换(字节交换)
第三章基本指令系统指令系统8086指令系统什么是指令系统cpu指令系统mcs51指令系统指令系统层指令系统的作用微处理器的指令系统指令系统就是指令吗
第三章 8086CPU基本指令系统
3.1 数据传送指令 3.2 算术运算指令
3.3 十进制调整指令
3.4 逻辑运算指令和移位指令 3.5 处理器控制指令
27
一、加法指令——ADC
微机原理与接口技术第三章指令系统
标识符的构成
符号集合 英文字母(a~Z)、数字(0~9)、特殊符号(?、@、 _、 $)。 构成规则 不可以以数字开头;
不能实用单独的“?”作为标识符;
取名尽量有含义,但不能采用汇编语言的保留字; 助记符、定义符、寄存器名称等 最大长度为31字符。 例如: ABCDH →标识符 0ABCDH →立即数
MOV AX,05C7H 汇编指令 B8C705H
一对一
机器指令
3.1.2 指令格式 汇编语言指令:由操作码和操作数两部分组成。 操作码 操作数 操作数 指令的一般格式
操作码:指示指令要执行的具体操作。用助记符(一 般为英文字母缩写)表示。 操作数:指出指令执行过程中的操作对象。用符号或 符号地址标志。
(×)MOV CS,AX
(×)MOV AH, BX
AH AL BH BL CH CL DH DL
MOV AX, BX
;AX←BX
演示
寄存器寻址方式举例
MOV BX,1234H ;AX=1234H
源操作数是立即数寻址方式
目的操作数是寄存器寻址方式 MOV AX,BX BX=AX=1234H 源操作数和目的操作数均为寄存器寻址方式
AX 88H 66H … 66H 88H … 堆栈段 33200H 33201H
……
……
MOV BX, 1100H MOV AX, [BX]
码段
AX: 0078H
堆栈段
DS:0000H
…… ……
内存内容 偏移地址
0000H 0001H …… 1100H 1101H 1102H
…… ……
78H 00H 56H
计算机原理 指令系统
第三章指令系统第一节指令基本格式及寻址方式一、指令及指令系统的概念1.指令指令是计算机硬件能够直接识别和执行的命令。
指令是计算机微操作的组合。
能够完成一定处理任务的指令序列就是计算机程序。
区别:计算机运行所需的指令及相关文档的集合称为软件。
2.指令系统一台计算机所能执行的所有指令的全体集合称为指令系统。
反而言之,不同计算机有不同的指令系统。
强调:指令系统属于计算机硬件范畴。
一个完整的指令系统应满足下面几个要求:(1)完备性:指用汇编语言编制各种程序时指令系统提供的指令足够用。
(2)有效性:指令尽其所能可能短,以便程序所占存储空间小、执行速度快。
(3)规整性:指令的长度是字节的整数倍。
对称性:所有寄存器和存储单元可以同等对待,指令可以使用各种寻址方式。
匀齐性:指令可以支持各种数据结构,编程时无需考虑数据类型。
一致性:指令的长度与数据的长度有一定的关系,以方便存取和处理。
(4)兼容性:在不同机器上能够不作修改地运行。
二、指令格式及分类1.指令格式指令包括操作码和地址码(操作数)。
操作码:表明该条指令操作的性质和功能。
地址码:表明参加操作的操作数地址和结果地址。
指令长度:是操作码的长度与地址码的长度之和。
指令的长度与字长没有固定关系,但一定是字节的整数倍。
操作码的长度,决定指令的种类(条数)。
地址码的长度,决定了指令的寻址空间(所能访问的最大存储空间)。
2.指令格式的分类根据指令中给出的操作数的个数可以将指令分为:零地址指令、一地址指令、二地址指令、三地址指令、多地址指令。
一条指令可以没有地址码,但必须要有操作码。
( )零地址指令中没有一个操作数地址,如停机指令(HALT)、空操作指令(NOP)。
三、寻址方式寻址方式包括:指令的寻址:确定本条指令的地址和下一条要执行指令的地址的方法。
(顺序寻址方式PC(程序计数器、指令指针寄存器)和跳跃寻址方式)操作数的寻址:找到操作数的方法。
操作数寻址方式有:1.立即数寻址:指令中直接给出操作数,通常用于给寄存器设置初始值,操作数在指令中,特点是寻址速度最快,缺点是灵活性最差。
第三章指令系统总结及课后题
字 节 地 址
10、如何访问SFR,可采用那些寻址方式? 答:用直接寻址,位寻址,寄存器寻址 11、如何访问片外RAM,可使用那些寻址方式? 答:只能采用寄存器间接寻址(用MOVX指令) 12、如何访问片内RAM,可使用那些寻址方式? 答:低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器 寻址(R0~R7) 高128字节:直接寻址,位寻址,寄存器寻址 13、如何访问片内外程序存储器,可使用那些寻址方式? 答:采用变址寻址(用MOVC指令) 14、说明十进制调整的原因和方法? 答:压缩BCD码在进行加法运算时应逢十进一,而计算机只将 其当作十六进制数处理,此时得到的结果不正确。用DA A指令 调整(加06H,60H,66H) 15、说明8951布尔机处理机功能? 答:用来进行位操作
;被减数的低8位→A ;减数低8位→R2 ;被减数减去减数,差→A ;低8位结果→30H ;被减数的高8位→A ;减数高8位→R2 ;被减数减去减数,差→A ;高8位结果→30H
带借位减法指令(四条)
汇编指令格式 SUBB A, Rn; 机器码格式 1001 1rrr 操作 (A)-CY -(Rn) → A 注释 将工作寄存器内容与CY及 累加器A中的数相减, “差”存放于累加器A中 SUBB A,direct;1001 0101 direct SUBB A,@Ri; 1001 011i (A) -CY -((Ri)) →A (A) -CY -(direct) →A 将内部RAM单元内容与 CY及累加器A中的数相减, “差”存放于累加器A中 将间接寻址(Ri为R0或R1) 所得的片内RAM单元中内 容与CY及累加器A中的数
高128字节RAM区(SFR区,特殊功能寄存器区)
B
F0
ACC
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MOV AX,1050H[BX][SI] 若(BX)=2000H,(SI)=1600H, (DS)=1200H,指令中给出的偏移量为 1050H,则源操作数的物理地址为16650H
若用BX作为基址寄存器,则段寄存器为DS,操 作数在数据段中; 若用BP作为基址寄存器,则段寄存器为SS,操 作数在堆栈段中。
微机原理与接口技术 第三章 指令系统
2015/12/20
1
第一节 指令的基本结构和执行时间
指令 指令系统 8086/8088CPU的指令系统共包含92种基 本指令,按照功能可将它们分为6大类: • 数据传送指令 • 算术运算指令 • 逻辑运算和移位指令 • 串操作指令 • 控制转移指令 • 处理器控制指令
2015/12/20
10
四、寄存器间接寻址(Register Indirect Addressing) MOV AX,[DI] 指令中的16位寄存器的内容不是操作数,而是 操作数的偏移地址,操作数本身则在存储器中。 可用的寄存器有四个,分别是:SI、DI、BX 和BP,但如果使用不同的间址寄存器,则相 应的段寄存器有所不同
2015/12/20 18
基址加变址的寻址方式
2015/12/20
19
第三节 8086的指令系统
• 数据传送(Data transfer) • 算术运算(Arithmetic) • 逻辑运算和移位(Logic) • 串操作(String manipulation) • 控制转移(Control transfer) • 处理器控制(Processor control)
2015/12/20 35
例:
现要查出数值6对应的 ASCII码 LEA BX,Hex_table ;(BX)←表的首地址 MOV AL,6 ;(AL)←6 XLAT ;查表转换 结果为(AL)=36H,为6 所对应的ASCII码。
2015/12/20
36
字位扩展指令
操作数扩展的规则是:扩展时在高位添 加符号位,即将符号位扩展到整个高8位 (或高16位)。 例如,要把有符号数 35H 扩展为一个字, 则结果为0035H;而如果要扩展的数是 81H,则结果为FF81H。
2015/12/20
4
指令的执行时间 一条指令的执行时间包括取指令、取操作数、 执行指令及传送结果几部分,单位用时钟 周期表示 寄存器操作数的指令执行速度最快,立即 数操作数次之,存储器操作数指令的执行 速度最慢
2015/12/20 5
第二节 8086的寻址方式
一、立即寻址 (Immediate Addressing)
堆栈示意图
2015/12/20
29
堆栈操作指令PUSH,POP
PUSH src ;src的高8位→[(SP)-1] ;src的低8位→[(SP)-2] ;(SP)-2→(SP) POP dest ;[SP]→dest的低8位 ;[SP+1]→dest的高8位 ;(SP)+2→(SP)
2015/12/20 30
25
2015/12/20
使用MOV指令完成数据传送时需注意几点:
Biblioteka MOV指令的两个操作数的类型必须相同 MOV AX,DL ╳ 不能用一条MOV指令完成两个存储器单元之 间的数据传送 MOV [BX],[SI] ╳ 不能用立即数直接给段寄存器赋值 MOV DS,DATA ╳ 不能在段寄存器之间进行直接数据传送 MOV DS,ES ╳ 通常不要求用户用MOV指令修改代码段寄存 器CS和指令指针寄存器IP的内容,但CS可以 作为源操作数
32
POP AX指令执行示意图
2015/12/20
33
交换指令XCHG (Exchange)
指令格式及操作: XCHG dest,src ;(dest) ←→(src) 源操作数和目标操作数均可以是寄存器或存 储器,但不能同时为存储器。即可以在寄存器 与寄存器之间、寄存器与存储器之间进行交换, 但不能在存储器与存储器之间进行交换。 不能为段寄存器操作数。即段寄存器的内容 不能参加交换。 两个操作数的字长必须相同,可以是字节交 换,也可以是字交换。
16
六、基址-变址寻址(Based Indexed Addressing) 将BX和BP看作基址寄存器,将SI和DI看作变 址寄存器。 基址加变址的寻址方式: 把一个基址寄存器(BX 或BP)的内容加上一个变址寄存器(SI或DI) 的内容,再加上指令中指定的8位或16位位移量 (必须要以一个段寄存器作为地址基址),作为 操作数的地址 MOV AX,1050H[BX][SI]
2015/12/20
2
8086指令的一般格式如下: 操作码 [操作数],[操作数]
操作数主要分为3类: 立即数操作数、 寄存器操作数 存储器操作数。
2015/12/20 3
表3-2 隐含及允许超越的段寄存器 存储器操作的类型 隐含的段寄存器 允许超越的段寄存器 偏移地址 取指令 CS 无 IP 堆栈操作 SS 无 SP 通用数据读写 DS CS,ES,SS 有效地址 源数据串 DS CS,ES,SS SI 目标数据串 ES 无 DI 用BP作为基址寄存器 SS CS,DS,ES 有效地址
2015/12/20 23
⑴ 一般传送指令MOV (Movement) MOV dest,src ;(dest)←(src)
既可传送字节操作数(8位),也可传送 字操作数(16位); 可使用本章讨论过的各种寻址方式; 可实现以下各种传送:
24
2015/12/20
MOV可实现的各种传送:
26
2015/12/20
⑵ 堆栈操作指令PUSH和POP (Push word onto stack, Pop word off stack)
堆栈是内存中一个特定的区域,用以存放 寄存器或存储器中暂时不用但又必须保存 的数据。
2015/12/20
27
堆栈操作需要遵循以下原则:
堆栈的存取每次必须是一个字(16位); 向堆栈中存放数据时,总是从高地址向低地址方 向增长,从堆栈取数据时正好相反; 堆栈指令中的操作数只能是寄存器或存储器操作 数,而不能是立即数; 堆栈段在内存中的位置由 SS 决定,堆栈指针 SP 总是指向栈顶,即SP的内容等于当前栈顶的偏移 地址。在压入操作数之前, SP 先减 2 。每弹出一 个字,SP加2; 对堆栈的操作遵循“后进先出 (LIFO: Last In First Out)”的原则。最后压人堆栈的数据会最先 2015/12/20 28 被弹出。
指令中,操作数 src 和 dest 可以是以下三 种类型: 寄存器(包括数据寄存器、地址寄存器 和变址寄存器); 段寄存器( CS 除外。 PUSH CS 指令是 合法的;而POP CS是非法的); 存储器单元
2015/12/20 31
PUSH AX指令执行示意图
2015/12/20
2015/12/20 34
查表转移指令XLAT (Translate)
指令格式与操作: XLAT ;(AL)←[(BX)+(AL)] 或:XLAT src_table (src_table表示要查 找的表的首地址)
可以根据表中元素的序号查出表中相应元素的内容 应预先将要查找的这类代码排成一个表存放在内存的 某个区域中。 将表的首地址(偏移地址)送BX寄存器,要查找的元 素的序号送AL,表中第一个元素的序号为0,然后依次 为1,2,3,…。 执行XLAT指令后,标中指定序号的元素存于AL
2015/12/20
20
OPRD mem acc dest src disp DATA port () []
泛指各种类型的操作数 存储器操作数 累加器操作数 目的操作数 源操作数 8位或16位偏移量,可用符号地址表示 8位或16位立即数 输入输出端口,可用数字或表达式表示 表示寄存器的内容 表示存储单元的内容或偏移地址
2015/12/20
37
CBW (Convert Byte to Word)
CBW ; 若 (AL)<80H, 则 (AH)=00H;否则 (AH)=FFH。
CBW将一个字节的数(8位)扩展为一个字长的数(16位)。 指令中隐含了操作数AL和AH。CBW指令不影响标志位。
例如,把字节9AH扩展为字的语句如下: MOV AL,9AH CBW 其结果为:(AX)=FF9AH。
2015/12/20 13
无论用SI、DI、BX或BP作为间址寄存器, 都允许段超越。 MOV ES:[DI],AX MOV DX,DS:[BP]
2015/12/20
14
五、变址寻址(Indexed Addressing) 以指定的寄存器内容, 加上指令中给出的8位或 16位位移量(必须要以 一个段寄存器作为基地 址),作为操作数的地 址。 作为变址寻址的寄存器 可以是SI、DI、BX、 BP四个寄存器中的任一 个
主要用于给寄存器 或存储单元赋初值 MOV AX,3508H
2015/12/20
6
二、直接寻址(Direct Addressing) 直接寻址指令在指令的操作码后面直接 给出操作数的16位偏移地址。 此偏移地址也称为有效地址 EA(Effective Address),与指令的操 作码一起,存放在内存的代码段. 低8位存放在低地址单元,高8位存放在 高地址单元。
寄存器与寄存器之间的传送: MOV AL,CL 寄存器与段寄存器之间的传送: MOV DS,AX 寄存器与存储器之间的传送: MOV [3000H],AX 立即数到寄存器的传送: MOV AL,20H 立即数到存储器的传送: MOV BYTE PTR[BP+SI],20H 存储器与段寄存器之间的传送: MOV DS,[2000H]