第3章-指令系统(位操作指令)-2
第3章80C51的指令系统
另一类直接寻 址是转移目标地 址的寻址。如: LJMP ADDR16
操作数 在50H单元
50H
3AH
E5H 50H
MOV A,50H
RAM
3AH
ACC
ROM
SFR
2021/6/23
15
❖ 定义:将操作数的地址直接存放在指令中,这种 寻址方式称为直接寻址。
❖ 特点:指令中含有操作数的地址。该地址指出了 参与操作的数据所在的字节单元地址或位地址。 计算机执行它们时便可根据直接地址找到所需要 的操作数。
第3章 80C51的指令系统
3.1 指令格式及常用符号
3.2 80C51的寻址方式
3.3 数据传送指令
(29条)
3.4 算数运算指令
(24条)
3.5 逻辑运算与循环类指令(24条)
3.6 控制转移类指令
) 3.7 位操作类指令
(17条 (17条)
2021/6/23
1
❖ 指令:CPU按照人们的意图来完成某种操作的命令。
24
❖ 定义:将程序计数器PC的当前值(取出本条指令后的PC 值)与指令第二个字节给出的偏移量(rel)相加,形成 新的转移目标地址。称为相对寻址方式。
❖ 特点:相对寻址方式是为实现程序的相对转移而设计的, 为相对转移指令所使用,其指令码中含有相对地址偏移量, 能生成浮动代码。
❖ 如: SJMP rel
寻址范围:只能对程序存储器ROM进行寻址,主要用于 查表性质的访问。
2021/6/23
22
注意:累加器A中存放的操作数地址相对基地址的 偏 移 量 的 范 围 为 00H ~ FFH ( 无 符 号 数 ) 。 MCS-51单片机共有以下三条变址寻址指令:
单片机4-2
A
半字节
RAM
半字节
图3-8 半字节交换操作
1.要用传送类指令访问 要用传送类指令访问MCS-51片外 片外RAM,它的指令操作码助 要用传送类指令访问 片外 它的指令操作码助 记符是 1)MOV ) 2)MOVX 3)MOVC 4) 以上都行 2.PSW=18H时,当前工作寄存器 时 1)0组 ) 组 2)1组 ) 组 3)2组 ) 组 4)3组 ) 组
A 一字节 源操作数 一字节
⑵半字节交换指令 汇编指令格式 操作 XCHD A,@Ri ; (A0~3) ((Ri) 0~3) (A0 间接寻址的单元内容与累加器A中的内容的低 位互换, 将Ri间接寻址的单元内容与累加器 中的内容的低 位互换, 间接寻址的单元内容与累加器 中的内容的低4位互换 位内容不变。 高4位内容不变。该操作只影响标志位 。 位内容不变 该操作只影响标志位P。 这条指令为低字节交换指令。该指令将累加器 的低 位与 的低4位与 这条指令为低字节交换指令。该指令将累加器A的低 R0或R1所指出的片内 所指出的片内RAM单元的低 位数据相交换,各自的 单元的低4位数据相交换 或 所指出的片内 单元的低 位数据相交换, 位不变。 所示。 高4位不变。其操作如图 所示。 位不变 其操作如图3-8所示
A寄存器 寄存器
寄存器间接寻址@R1, 寄存器间接寻址 , R0(外RAM0B~255B) ( )
寄存器间接寻址@DPTR 寄存器间接寻址 (外RAM0B~64KB) )
图3-6 外部数据存储器传送操作
8. 栈操作指令(2条) 栈操作指令( 条 ⑴PUSH(入栈)指令 (入栈) 汇编指令格式 操作 字节 PUSH direct 先(SP)+1→SP 2 后(direct)→(SP) ⑵POP(出栈)指令 (出栈) 汇编指令格式 操作 POP direct 先((sp))→direct (SP)后(SP)-1→(SP)
第3章 C6000指令系统(1-2)
Dr. Naim Dahnoun, Bristol University, (c)
Texas Instruments 2002
12
32.2.2 延迟间隙(Delay Slots)
BK1
BK0
R
R,W
Mode select fields
15
14 13
12 11
10 9
87
6
B7 mode B6 mode B5 mode B4 mode A7 mode
5
4
A6 mode
R,W
3
2
A5 mode
1
0
A4 mode
R,W
00:线性寻址(复位后默认值)
各模式 01:循环寻址,使用BK0字段
Dr. Naim Dahnoun, Bristol University, (c)
Texas Instruments 2002
18
3.2.4 寻址方式及Load/Store类指令
一、寻址方式
寻址模式寄存器AMR各个位域的定义
Block size fields
31
26 25
21 20
16
ห้องสมุดไป่ตู้
Reserved
13
3.2.3 指令操作码映射图(Opcode Map)
C6000的每一条指令都是32位,都有自己的代码,详细指 明指令相关内容。
.L unit
31 29 28 27 23 22 18 17
13 12 11
54 3 2 10
微机原理与接口技术第3章(指令部分)
例:编程计算 0+1+2+3+4+ -----10 编程计算
MOV AL,0 , MOV BL,1 , MOV CL,10 NEXT:ADD AL,BL , INC BL DEC CL JNZ NEXT ;CL≠0 转 ≠ HLT
1
3.1 概述 一、指令包含的基本内容
12
(3)相对寻址
例: MOV AX, [SI+100H]
;结果 : 结果 AX (DS×16+SI+100H) ×
例:MOV AL,[BP+DATA] MOV AL, DATA[BP] ; DATA是符号表示的位移量。 表示的位移量 是符号表示的位移量。
结果 : AL (SS×16+BP+DATA) ×
11
(2)间接寻址 例:MOV AX,[BX] , •结果 : AX 结果 (DS×16+BX) ×
...
3000H:0000H : • EA= BX /SI /DI , 物理地址=DS*16+EA 物理地址 • EA= BP 物理地址=SS*16+EA 物理地址 :1234H :50H :1235H :30H
1. 做什么操作? 做什么操作? MOV ,ADD, OR,CMP等助记符 等助记符
2. 操作的数据是什么? ①CPU内的寄存器; 操作的数据是什么? 内的寄存器 内的寄存器; 内存的某一个或几个单元 单元; ②内存的某一个或几个单元; 结果放在那里? 3. 结果放在那里? 立即数。 ③立即数。 端口; 端口 ④I/O端口; 下一条指令在哪里? 4. 下一条指令在哪里? IP←IP+1
第三章PLC指令系统2
DW和 SHR DW,其他部分完全相同。最大实际可移位次 数为32。 指令格式: SLD SRD 例: SLD SRD OUT, N (双字左移) OUT, N (双字右移) MD0, 2 LD0, 3
2.
循环左移、循环右移
循环移位特点: 移位数据存储单元的移出端与另一端相连,同时又与 SM1.1 (溢出) 相连,所以最后被移出的位被移到另一端的同时,也被放到SM1.1位存 储单元。 移位次数与移位数据的长度有关,如果移位次数设定值大于移位数据 的位数,则执行循环移位之前,系统先对设定值取以数据长度为底的 模,用小于数据长度的结果作为实际循环移位的次数。如字左移时, 若移位次数设定为36,则先对36取以16为底的模,得到小于16的结果4, 故指令实际循环移位4次。 如果移位操作使数据变为0,则零存储器位(SM1.0)自动置位。 移位指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出)。 使能流输出 ENO 断开的出错条件: SM4.3 (运行时间); 0006 (间接 寻址)。 移位次数N为字节型数据。
循环右移指令:
移位指令 (2)字循环左移和字循环右移指令:RLW,RRW
指令盒与字节循环移位只有名称变为 ROL
W和 ROR W ,其他部分完全相同。使能输入有效时, 把字型输入数据IN循环左移或循环右移N位后,再 将结果输出到 OUT 所指的字存储单元(在语句表 中, IN 与 OUT 使用同一个单元)。实际移位次数 为设定值取以16为底的模所得的结果。 指令格式: RLW OUT, N (字循环左移) RRW OUT, N (字循环右移) 例: RLW MD0, 2 RRW LD0, 3
SHRB EN ENO ENO DAT A S_BIT I0.1 正跳变 I0.2 S_BIT 0 1 0 0 1 0 0 0 1 1 溢出位 1
微机原理第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章_MCS-51单片机指令系统及汇编语言程序设计2
3. 汇编语言的语句格式是什么?使用标号有什么限制?注释段起什么作用? 答案: MCS-51汇编语言的语句格式应符合下列结构: 【标号:】 操作码 【操作数】【;注释】 标号位于语句的开始,由以字母开头的字母和数字组成,它代表该语句的地址。 标号与操作码之间要用“:”隔开,标号与“:”之间不能有空格,“:”与操 作码之间可以有空格。 注释在语句的最后,以“;”开始,是说明性的文字,与语句的具体功能无关。 4. MCS-51汇编语言有哪几条常用伪指令?各起什么作用? 答案: ORG:汇编程序起始地址,用来说明其后程序段在存储器中存放的起始地址; EQU:赋值指令,用来给变量标号赋予一个确定的数值; DB:定义数据字节,指令按字节数的形式把数据存放在存储单元中; DW:定义数据字,按字(双字节)的形式把数据存放在存储单元中; DS:定义存储区,从指定的地址单元开始,保留一定数量的存储单元; BIT:位定义,其功能是把位地址赋给字符名称; END:汇编结束,表明汇编语言程序结束。
2.顺序程序
顺序程序是指程序中没有使用转移类指令的程序段,机器执行这 类程序时也只需按照先后顺序依次执行,中间不会有任何分支、循环, 也不需要调用子程序。 例:将一个单字节十六进制数转换成BCD码。 解:算法分析。单字节十六进制数在0~255之间,将其除以100后, 商为百位数;余数除以10,商为十位数,余数为个位数。 设单字节数存放在40H,转换后,百位数存放在R0中,十位数存 放在R1中,个位数存放在R2中,具体程序如下: ORG 0030H MOV A, 40H ;将单字节十六进制数送入A中 MOV B,#64H ;将100送入B中, #64H可直接写成#100 DIV AB MOV R0,A ;百位数送R0,余数在B中 XCH A,B ;余数送入A中 MOV B,#0AH ;将10送入B中, #0AH可直接写成#10 DIV AB ;商为十位数,余数为个位数 MOV R1,A MOV R2,B SJMP $
第3章答案指令系统1-40
第3章指令系统1,简述下列基本概念:指令,指令系统,机器语言,汇编语言,高级语言。
1、指令:CPU根据人的意图来执行某种操作的命令指令系统:一台计算机所能执行的全部指令集合机器语言:用二进制编码表示,计算机能直接识别和执行的语言汇编语言:用助记符、符号和数字来表示指令的程序语言高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言2,什么是计算机的指令和指令系统?2、见第1题。
3,简述89C51汇编指令格式。
3、操作码[目的操作数] [,源操作数]4,简述89C51寻址方式和所能涉及的寻址空间。
5,要访问特殊功能寄存器和片外数据寄存器,应采用哪些寻址方式?5、SFR:直接寻址,位寻址,寄存器寻址;片外RAM:寄存器间接寻址6,在89C51片内RAM中,已知(30H)=38H, (38H)=40H, (40H)=48H, (48H)=90H, 请分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果。
6、MOV A,40H ;直接寻址(40H)→AMOV R0,A ;寄存器寻址(A)→R0MOV P1,#0F0H ;立即数寻址0F0→P1MOV @R0,30H ;直接寻址(30H)→(R0)MOV DPTR,#3848H ;立即数寻址3848H→DPTRMOV 40H,38H ;直接寻址(38H)→40HMOV R0,30H ;直接寻址(30H)→R0MOV P0,R0 ;寄存器寻址(R0 )→P0MOV 18H,#30H ;立即数寻址30H→18HMOV A,@R0 ;寄存器间接寻址((R0)) →AMOV P2,P1 ;直接寻址(P1)→P2最后结果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H 注意:→左边是内容,右边是单元7,对89C51片内RAM的高128字节的地址空间寻址要注意什么7、用直接寻址,位寻址,寄存器寻址8,指出下列指令的本质区别。
第3章 8086(8088)CPU指令系统
20H 00H
00H 34H 12H
3000H:0000H
注: ◆基址因子BP访问默认为堆栈段 ◆不能同时取两个基址因子;也不 能同时去两个变址因子
16
+
3000H:3000H
AH
AL
第3章 8086/8088CPU指令系统
4.1.4 操作数寻址方式
●存储器寻址之相对基址加变址寻址(Base
9
第3章 8086/8088CPU指令系统
3.1.3 操作数寻址方式
4.1操作数寻址方式
所谓操作数的寻址方式,是在指令格式中怎样有效的表示出操 作数的存放位臵,CPU在执行该指令时,按照指令格式中的表示找 到并对数据进行存取。 1.立即寻址(Immediate Addressing) 立即寻址中的操作数作为指令的一 部分存放在代码段中,在取指阶段数据 随指令一起被取到CPU,这种数据在指 令格式中的直接表现为常数。 如:MOV AL,34H
2
第3章 8086/8088CPU指令系统
汇编语言指令或符号指令:用字母和其它一些符 号组成的“助记符”与操作数等表示的指令称为汇编 语言指令或符号指令。 例如: MOV AX, BX ; AX←BX 而其二进制代码(机器代码)为89D8H,就是 1000 1001 1101 1000 B 不易理解,不易记忆。助记符是MOV。
操作码
操作数
4
第3章 8086/8088CPU指令系统
3.1.1 8086/8088指令格式
4.1操作数寻址方式
8086/8088机器指令格式通常1-6个字节组成。典型的指令格式 由2个字节组成,如下图所示。
操作码 D W MOD REG R/M
03.9 第三章 - 单片机指令系统(位操作指令MOV、SETB、CLR、CPL、ANL、ORL)
;A = 59H = 0101 1001B ;P1 = A = 0101 1001B ;C = 1 ;ACC.1 = 1 ;P1.3 = 0 ;P1.6 = 0 ;P1.2 = 1 ;(20H)= P1 = 0001 0101B ;(30H)= A = 0101 1011B
09:43
单片机技术
8
3.9.2 位控制指令(SETB、CLR、CPL)
;P1.0 = 1 ;ACC.3 = 0 ;C = 1 ;C = 1 ;C = 1 ;P3.4 = 1
09:43
单片机技术
14
3.9.3 位条件转移指令(JC、JB、JBC)
❖ 1.判C转移指令ຫໍສະໝຸດ JC、JNC)JC rel
;先PC←PC+2;若(Cy)= 1时转移,且PC'
=PC+rel,否则顺序执行
CPL bit ;(bit)= (/bit)
▪ 功能:将Cy或bit取反。
09:43
单片机技术
9
3.9.2 位控制指令(SETB、CLR、CPL)
❖ 课堂练习
▪ 执行以下指令?
SETB P1.0 CLR 20H CLR PSW.2 CPL PSW.2 CLR RS0 SETB RS1
;P1.0 = 1 ;20H = 0 ;PSW.2 = 0 ;PSW.2 = 1 ;RS0 = 0 ;RS1 = 1
❖ 1.位置1指令(SETB)
▪ 格式:SETB C ;(Cy) = 1
SETB bit ;(bit)= 1
▪ 功能:将Cy或bit置1。
❖ 2.位置0指令(CLR)
▪ 格式:CLR C ;(Cy) = 0
CLR bit ;(bit)= 0
▪ 功能:将Cy或bit置0。
003_微机原理-指令系统_2
MOV DS, AX
不影响标志位
3.3 指令系统—换码指令
指令书写格式: XLAT
指令执行的操作:
(AL)←((DS:BX+AL)) 查表操作,将BX指定的缓冲区中、AL指定的位移处的一个字节数 据取出赋给AL
指令说明
操作数隐含使用基地址寄存器BX与AL寄存器 换码指令执行前,在主存建立一个字节量表格,内含要转换的目 的码字,表格首地址存放于BX,AL存放相对表格首地址的位移量 换码指令执行后,指令将AL寄存器的内容转换为目标码字,因为 偏移量AL为8位,表格长度≤256字节 不影响标志位
数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令
控制转移指令
处理器控制指令
3.3 指令系统-通用数据传送指令
指令书写格式: MOV dst, src
指令执行的操作:(dst)←(src) 指令说明
操作数类型:立即操作数,寄存器操作数,存储器操作数 立即操作数不能作为目的操作数DST 错误:MOV 30H, AL 两个操作数也不能同时为存储器操作数 错误: MOV [DI+100H], [SI+200H]
dst为目的操作数,操作数类型可为寄存器操 作数或存储器操作数 cnt为移位次数,可为立即数1,或由寄存器 CL指定 SHL、SHR和SAL指令影响标志位CF和OF, cnt=1时,SHL与SAL移位后的最高位和CF不 同,则OF=1;SHR,OF=移位前最高位 SAR指令影响标志位CF、OF、PF、SF、ZF, AF不确定;
; 测试AL中数据的奇、偶
3.3 指令系统-移位指令
逻辑左移指令: SHL dst, cnt 算术左移指令: SAL dst, cnt
可编程序控制器第三章-2定时器和计数器指令
LD I0.1 R T1,1
可编程控制器原理及应用
应用定时器指令应该注意的问题
不能把一个定时器同时用做接通延时定时器(TON) 和断开延时定时器(TOF)
使用复位(R)指令对定时器复位后,定时器位为0, 定时器当前值为0
有记忆接通延时定时器(TONR)只能通过复位指令 进行复位操作
当复位信号(R)有效时,计数器被复位,SV的值等 于0,计数器的状态变为0
可编程控制器原理及应用
增计数器的时序图
I4.0 I2.0
4
C3 CU CTU
R
LD I4.0 LD I2.0 CTU C3,4
PV I4.0
I2.0
5
PV
4
3
2
2
1 SV 0
01
C3
可编程控制器原理及应用
增计数器的注意事项
PT
可编程控制器原理及应用
带有记忆接通延时定时器的语句表表示
定时器标识符TONR
构 成
定时器编号Tn
时间设定值PT
TONR Tn, PT
可编程控制器原理及应用
带有记忆接通延时定时器的工作原理
工 作
当定时器的启动信号IN的状态为0时,定时器的当前值 SV为0,定时器的状态也是0,定时器不工作
原 理 当Tn的启动信号由0变为1时,定时器开始工作,每过
对于断开延时定时器,需要输入端有一个负跳变(由 ON到OFF)的输入信号启动计时
可编程控制器原理及应用
对于不同分辨率的定时器,它们当前值的刷新周期是 不同的
1ms:定时器位和当前值的更新不与扫描周期同步,每 毫秒更新一次。对于大于1ms的程序扫描周期,在一 个扫描周期内,定时器位和当前值刷新多次。
51单片机 第三章指令系统
10
3.2.5 变址寻址方式
1.
变址寻址方式是以程序计数器PC或数据指针 DPTR作为基址寄存器,以累加器A作为变址寄 存器,它们两者内容之和为有效地址。 寻址范围:
程序存储器空间。
2.
3.
变址寻址方式的指令只有3条:
⑴ MOVC A, @A+DPTR ⑵ MOVC A, @A+PC ⑶ JMP @A+DPTR ; 查表指令 ; 查表指令 ; 散转指令
⑴ 低128个存储单元,8-bit二进制数表示地址。 ⑵ 特殊功能寄存器,用直接地址或称号表示。
2.
3.
例如,指令 MOV A, 30H
; A ← (30H)
8
3.2.3 寄存器间接寻址方式
1.
寄存器间接寻址时,指令中给出的寄存器为地 址指针。 寻址范围:
⑴ 片内和片外RAM 256单元,用R0或R1间接寻址。
34
4.
除法
整数部分
DIV AB
A
被除数
X B
除数
商
A
B
余数部分
除数为0,商的A和B内容不确定,且(OV)=1 。 标志Cy总是被清0。 例: 若(A)=FBH(251),(B)=12H (18),执行指令 DIV AB 之后,(A)=0DH, (B)=11H,(OV)=0,(Cy)=0。
35
3.3.3 逻辑运算及移位类指令
例: 若(A)=C3H,(R0)=AAH,执行指令 ANL A, R0 之后,(A)=82H。
37
逻辑或 源操作数与直接地址单元内容相或
ORL direct, A #data
源操作数与累加器A的内容相或
第3章 MCS-51 单片机的指令系统
2.2 用@Ri进行间接寻址的指令 MOVX A, @Ri; ((Ri)) MOVX @Ri,A; (A) (A) ((DPTR))
说明:若外部扩展RAM小于等于256单元,用@Ri间接 寻址进行数据传送,8位地址线足够使用。
若外部扩展较大的RAM区域,须用P2口输出高8位地址, 用@Ri表示低八位地址,P0口分时作低8位地址线和数 据线,P2口应事先预置。
累加器
Rn #data 立即数
寄存器
2 外部数据存储器(或I/O)的读写指令 2.1 用@DPTR进行间接寻址的指令
MOVX A, @DPTR; ((DPTR)) (A)
MOVX @DPTR,A; (A)
((DPTR))
DPTR为16位数据指针,该指令可寻址外部RAM64K范围 (0000H-0FFFFH),地址低8位由P0口输出,地址高8 位由P2口输出,数据通过P0口读入或写出。
一 数据传送指令 1 内部数据传送指令(MOV) 指令格式:MOV <目的操作数〉,<源操作数> 指令的源操作数和目的操作数都在单片机内部。可以 是片内RAM地址,也可以是特殊功能寄存器SFR的地址 指令的功能是把源操作数指定的字节变量复制到目的 操作数所规定的单元或寄存器中,源字节不变。
1.1 立即数传送指令 源操作数为立即数 八位立即数传送指令: MOV A,#DATA; DATA (A) 例:MOV A,#02H; MOV Rn,#DATA; DATA (Rn) n=0-7 例:MOV R3,#02H; MOV @Ri,#DATA; DATA ((Ri)) i=0,1 例:MOV @R1,#02H; MOV direct,#DATA; DATA (direct) 例:MOV 30H,#02H;
第3章 指令系统
(2) 32位寻址:任何一个32位通用寄存器可作为基址寄存器 ;除ESP之外的任一个32位通用寄存器可作为变址寄存器。 如:MOV AX,[EBX+ECX] ; 或 MOV AX,[EBX][ECX] ; DS段的字数据送AX。
17
7、带位移的基址加变址寻址:基址寄存器内容与变址 寄存器内容再加偏移量之和形成操作数的EA。即: EA=[基址寄存器]+[变址寄存器]+偏移量
:通用寄存器。长度可以是8位、16位、32位。 如reg8表示8位通用寄存器,reg16表示16位通用寄存 器。
Sreg mem imm
:段寄存器(段选择符)。
:存储器。长度可以是8位、16位、32位。如 mem8表示8位存储器。 :立即数。长度可以是8位、16位、32位。 AL,AX或EAX) 。
操作符:指令的操作符,指示CPU完成某种操作,不 可省略。 操作数:指令执行时的操作对象,可以是数据或地址 表达式。 注释:程序注解。 **方括号表示其中的内容为可选项。
START:MOV AX,DATA MOV DS,AX
;设置DS
4
数据类型
80X86主要包括以下六种数据类型: 1、无符号二进制数:
有符号二进制数以补码形式存储,地址单元分配与 无符号数类似。
3、浮点数(实数)
(从略)
6
4、BCD码 1)压缩(组合)BCD码:1字节存放两个BCD码,如图 a。 2)非压缩BCD码:1字节存放一个BCD码(低4位) ,如图b。
第3章 指令系统3-2(2)
例3-60 用SAR指令计算-128/8=-16的程序如下: MOV AL,1000 0000B ;AL=-128 MOV CL,03H ;右移位次数3 SAR AL,CL ;右移3次 指令执行后,AL=0F0H=-16。
10
CF
MSB←—----------------LSB
ROL循环左移
CF
MSB—---------------→LSB
SAR算术右移
7
例3-58 MOV AH,06H SAL AH,1 MOV CL,03H SHL DI,CL SAL BYTE PTR[BX],1
CF MSB←—----------------LSB ←0 SHL/SAL逻辑/算术左移
8
CF 0
MSB-—---------------→LSB
SHR逻辑右移
27
表3-11 直接标志条件转移指令 指令助记符
JC JNC JZ/JE JNZ/JNE JS
测试条件
CF=1 CF=0 ZF=1 ZF=0 SF=1 有进位 无进位
指令功能
转移 转移 转移 转移
结果为零/相等 符号为负
结果不为零/不相等 转移
JNS
JO
SF=0
OF=1
符号为正
溢出
转移
转移
JNO
JP/JPE
例3-55 假设AX中存有两个BCD数0508H,要将它 分别转换成ASCII码,结果放回AX。 OR AX,3030H
4
例3-56 若AL中存有某外设端口的状态信息,其中 D1位控制扬声器发声,要求该位在0、1之间来回变 化,其余各位保留不变,实现如下:
XOR AL,0000 0010B
5
第3章 Thumb-2指令系统
15
ARM Cortex-M3 Toolchain Flow
ARM Cortex-M3
The combination of a conditional instruction
r0
sequence IT (If/Then) with the same visible
NB: Most compilers automatically provide the Assembler code stubs shown here, allowing majority of code in High Level ‘C’ language
Assembler
Thumb C/C++ Compiler
上条指令结果的标志
IPSR+EPSR
IPSR+APSR
EPSR+APSR
xPSR = APSR+EPSR+IPSR 主堆栈指针
进程堆栈指针
常规异常屏蔽寄存器
常规异常的优先级阈值寄存器
等同BASEPRI,但是施加了写的限制:新的优先级比较比旧的高(更小的数)
fault 屏蔽寄存器(同时还包含了PRIMASK 的功能,因为faults 的优先级更高)
将移位后的寄存器值传送到寄存器中
将16位立即数传送到寄存器的高半字[31:16]中
将16位立即数传送到寄存器的低半字[15:0]中,
并将高半字[31:16]清零
将状态传送到寄存器中
精选版课传件送ppt到状态寄存器中
17
4. Cortex-M3常用的Thumb-2指令集(续)
(1)数据传送指令(续)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计
• • • • •
20
汇编语言
单击此处编辑母版标题样式
程序设计
• • • • •
单击此处编辑母版文本样式 第二级 第三级 第四级 第五级
21
汇编语言
汇编语言
单击此处编辑母版标题样式
程序设计
• • • • •
单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 辽宁石油化工大学计算机与通信工程学院 主讲:王晓虹
汇编语言程序设计 (第三章)
1
汇编语言
三、位操作指令 程序设计 单击此处编辑母版标题样式
• • • • •
单击此处编辑母版文本样式 第二级 第三级 第四级 第五级
对一个位串,AND可以屏蔽(清0)某些位,OR可以置位(置1)某些位, XOR可以取反某些位,XOR可以检查两个位串是否匹配。
10
汇编语言
单击此处编辑母版标题样式 • ①屏蔽若干位。 (常用指令)
• AND AL,01H;屏蔽AL的D7~D1,保留D0 • 单击此处编辑母版文本样式 • AND AL,0FH;屏蔽AL高4位,保留低4位 • 第二级 1 (常用指令) •②使若干位置 • • OR BL,0F0H;使BL高4位置1,低4位不变 第三级 •③清除CF、OF 或 设置标志 • 第四级 • AND AL,AL (AND AL,0FFH;OR BL,BL;……) • • ;第五级 类似指令没有改变目的操作数,但使CF=OF=0,也 • 可能纯粹以设置其他标志(ZF)为目的。
程序设计
15
汇编语言
单击此处编辑母版标题样式 (3)算术左移指令
格式:SAL OPD,COUNT
程序设计
• • • • •
单击此处编辑母版文本样式 功能:SAL指令与SHL指令的功能完全相同。 第二级 第三级 (4)算术右移指令 第四级 格式:SAR OPD,COUNT 第五级 功能:将目的操作数向右移动COUNT指定的位数,每右移一位,最高
9
汇编语言
单击此处编辑母版标题样式
程序设计
• • • • •
单击此处编辑母版文本样式 AND AX,0 ;AX清0 AND CL,0FH ;屏蔽CL的高4位 第二级 OR BH,00111100B ;将BH的中间4位置位 第三级 XOR BL,0F0H ;将BL高4位变反 第四级 NOT指令执行不影响状态标志,其他逻辑指令执行后将重新设置SF、 ZF、PF的状态,而总使CF=0、OF=0,AF状态不确定。 第五级
3
汇编语言
单击此处编辑母版标题样式 【例】将AL中第3位和第7位清零。
MOV AL,0FFH
程序设计
• • • • •
单击此处编辑母版文本样式 AND AL,77H 第二级 第三级 第四级 第五级
4
汇编语言
(2)逻辑或指令 格式:OR OPD,OPS 功能:将目的操作数与源操作数按位相或,结果送目的操作数。 即:OPD←(OPD)∨(OPS)。 说明: •① 第二级 “或”操作的运算原则是:1∨1=1,0∨1=1,1∨0=1,0∨0=0。 ② OR指令常用于: • 第三级 (a) 使一个操作数中的若干位保持不变,而另外若干位置1的 场合。这时,要保持不变的这些位与“0”相或;而要置1 的这些位与“1”相或。 (b) 某一操作数,自己和自己相“或”,操作数不变,但可以 • 第五级 使进位标志CF清0。
作数的值。 ② TEST指令常用于:在不希望改变原有的操作数的情况下,用来 检测某一位或某几位的条件是否满足。编程时常与条件转移指 令一起使用,可在TEST指令后面加上条件转移指令,来测试操 作数某位是否为1,或者是否为0。
7
汇编语言
单击此处编辑母版标题样式 【例】测试AX中的第12位是否为0,不为0则转L。
2
汇编语言
三、位操作指令 单击此处编辑母版标题样式 8086 提供的位操作指令包括逻辑运算指令和移位指令,这类指令可直接对
程序设计
寄存器或存储器中的位进行操作。 1.逻辑运算指令 • 单击此处编辑母版文本样式 逻辑运算指令包括:AND指令、OR指令、XOR指令、TEST指令和NOT指令, 其中前四种指令是双操作数指令,符合双操作数指令的一般规律,这四条指 • 第二级 令执行后将使 CF和OF位为0,AF位不确定,而SF、ZF和PF位则根据运算结果设 置;NOT指令是单操作数指令,符合单操作数指令的一般规律,它的执行不影 响标志位。 • 第三级 (1)逻辑与指令 • 格式: 第四级 AND OPD,OPS 功能:将目的操作数与源操作数按位相与,结果送目的操作数。 • 第五级 即:OPD←(OPD)∧(OPS)。 说明:① “与”的运算原则是:1∧1=1,0∧1=0,1∧0=0,0∧0=0。 ② AND指令常用于: (a)使一个操作数中的若干位保持不变,而若干位清为0的场合。 ( b )某一操作数,自己和自己相“与”,操作数不变,但可以使进 位标志CF清0。
的一部分位取反,则应使用XOR指令。 【例】逻辑非运算。 MOV AX,878AH ;(AX)=878AH
NOT
AX
;(AX)=7875H
8
汇编语言
- AND指令对一个数据的指定位清0。例如,AND AL,0FH指令就实现将高4 位清0。
单击此处编辑母版标题样式
程序设计
• • • • •
OR 指令常常用来对一些指定位置1。例如,指令OR AL,02实现对累加器中 单击此处编辑母版文本样式 的D1位置1。 第二级 XOR指令常常用在一些程序的开头使某个寄存器清0,以配合初始化工作 的完成。例如,XOR AX,AX,使累加器清0。 第三级 NOT指令常用来将某个数据取成反码,再加上1,便得到补码。 TEST指令一般用来检测指定位是1还是0,而这个指定位往往对应一个物 第四级 理量。 例如,某一个状态寄存器的最低位反映一种状态,为1时,说明状态信号 第五级 满足要求,于是,就可以先将状态寄存器的内容读到AL中,再用TEST AL, 01指令,此后就可以通过对ZF的判断来了解此状态位是否为1。如果ZF= 1,说明结果为0,即最低位为0,条件不满足;如果ZF=0,说明结果不 为0,即最低位不为0,而为1,所以条件满足。
TEST 1000H AX,______
程序设计
• • • • •
单击此处编辑母版文本样式 JNE L 第二级 (5)逻辑非指令 格式:NOT OPD 第三级 功能:将目的操作数各位取反,结果送目的操作数。 第四级 即:OPD←(OPD)。 第五级 说明:若将整个操作数取反,则应使用NOT指令,若只需将操作数
;(BH)=0F4H ;(CL)=2 ;(BH)=0FDH,(CF)=0
程序设计
• • • • • •
18
汇编语言
单击此处编辑母版标题样式
程序设计
• 单击此处编辑母版文本样式 • 第二级 •( 第三级 6)循环右移指令ROR 格式:ROR OPD,COUNT • 第四级 功能:将目的操作数向右循环移位COUNT指定的位数,每右移一位, 右移前的最低送最高位以及CF。 • 第五级
(5)循环左移指令ROL 格式:ROL OPD,COUNT 功能:将目的操作数向左循环移位COUNT指定的位数,每左移一位, 左移前的最高送最低位以及CF。
19
汇编语言
单击此处编辑母版标题样式 (7)带进位的循环左移指令RCL
单击此处编辑母版文本样式 功能:将目的操作数连同CF位一起向左循环移位COUNT指定的位数, 第二级 每左移一位,左移前的CF送最低位,左移前的最高位送CF。 第三级 (8)带进位的循环右移指令RCR 第四级 格式:RCR OPD,COUNT 第五级 功能:将目的操作数连同CF位一起向右循环移位COUNT指定的位数,
程序设计
总结
11
汇编语言
单击此处编辑母版标题样式 • ④求反 NOT AL / NOT WORD PTR[BX+DI]
程序设计
X⊕0=X X⊕1=X •• ⑤对指定位求反 单击此处编辑母版文本样式 XOR AL,0FH;AL高4位不变,低4位求反 •• 第二级 • XOR CL,55H;CL偶数位求反,奇数位不变 • 第三级 •• 第四级 ⑥清除寄存器及CF(常用指令) XOR AX,AX / XOR BX,BX •• 第五级
;的操作数
⑦不改变操作数,测试操作数或操作数的指定位
13
汇编语言
单击此处编辑母版标题样式 2 移位指令
程序设计
•
移位指令包括算术移位指令、逻辑移位指令和循环移位指 • 单击此处编辑母版文本样式 令,分别进行左移和右移操作。这些指令均有统一的语句格式: 第二级 • •[标号: ]操作符OPD,1或 [标号:]操作符OPD,CL • 第三级 • 其功能为将目的操作数的所有位按操作符规定的方式移动 •1位或按寄存器 第四级 CL规定的次数(0--255)移动,结果送入目的 8位(或16位)的寄存器数据或存储器数 •地址。目的操作数是 第五级 据。
的有效的方法。 如指令XOR AX,AX ;AX清0。
(c) 测试某一操作数是否与另一确定的操作数相等。这种操作在检查地址是 否匹配时是常用的。
6
汇编语言
单击此处编辑母版标题样式 【例】按位加运算。
MOV AL,45H ;(AL)=45H
程序设计
• • • • •
单击此处编辑母版文本样式 ;(AL)=74H XOR AL,31H ;(AL)=? 第二级 (4)测试指令 格式:TEST OPD,OPS 第三级 功能:目的操作数与源操作数按位相与,结果反映在标志位上, 但不送回目的操作数。 即:(OPD)∧(OPS)。 第四级 说明: ① 该指令完成与AND指令相同的操作,但TEST指令不改变目的操 第五级