第3章(09.2)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.加1指令(5条) INC INC INC INC INC A Rn direct @Ri DPTR
指令功能:使操作数所指定的单元的内容加1 例:已知A=12H,R0=33H,(21H)=32H,(34H)=22H, DPTR=1234H,连续执行下面的指令。 说明:除了“INC A”影响奇偶标志位外,其余操作均 INC A 不影响PSW;“INC DPTR”是一条16位加1指令,这条 INC R0 指令在加1过程中,若低8位有进位可直接向高8位进位, INC 21H 不需要通过进位位Cy传送。 INC @R0 INC DPTR
4.清0与取反指令(2条) 取反: CPL A 5.循环移位指令(4条) RL A RR A RLC A RRC A 清零: C0
A.0 A.7 A.7 A.0 A.0
CY
CY
后两条指令,影响P标志和CY。
综合举例: 例1:把累加器A中的低4位状态,通过P1口的高4 位输出, P1口的低4位状态不变。 ANL A,#0FH ;屏蔽A的高4位 SWAP A ANL P1,#0FH ;清P1口高4位 ORL P1,A ;P1口高4位输出A的低4位; 例2:编制程序将存放在片外RAM的30H单元中某 数的低4位取反,高2位置1,其余2位清0。 例3:编制程序求片内RAM的20H,21H,22H单元 中的数的补码,并将结果仍放回到20H,21H, 22H中。
(40H)= (41H)=
H H
(50H) = (51H)=
H H
A= R0=
H H
5.减1指令(4条) DEC DEC DEC DEC A Rn direct @Ri
指令功能:使操作数所指定的单元的内容减1
说明:减1指令中没有DPTR减1指令.
6.十进制调整指令(1条) DA A 指令功能:在进行BCD码加法运算时,跟在ADDC和ADD 指令之后,用来对BCD码加法运算结果进行自动修正。
2、比较不等转移指令(4条)
CJNE CJNE CJNE CJNE A,#data,rel A,direct,rel Rn,#data,rel @Ri,#data,rel
此类指令的功能是将两个操作数比较,如果两者相等, 就顺序执行,如果不相等,就转移。 同样地,使用时,我们可以将rel理解成标号,即: CJNE A,#data,标号 CJNE A,direct,标号 CJNE Rn,#data,标号 CJNE @Ri,#data,标号
控制转移指令
利用这些指令,可以判断两数是否相等。 但有时还想得知两数比较之后哪个大,哪个小, 本条指令也具有这样的功能: 如果两数不相等,则CPU还会用CY(进位位) 来反映哪个数大,哪个数小。 如果前面的数大,则CY=0,否则CY=1。 因此在程序转移后再次利用CY就可判断出哪个 数大,哪个数小了。
2.带进位位的加法指令(4条) ADDC ADDC ADDC ADDC A,Rn A,direct A,@Ri A,#data
指令功能:将A中的值和其后面的值以及进位位CY 的值相加,最终结果存在A,常用于多字节数运算中。 说明:运算结果对PSW各位的影响与加法指令相同
例:将片内RAM中21H,20H单元的16位二进制数与片内 RAM中31H、30H单元的16位二进制数相加,并将结果存 放到片内RAM的41H,40H单元中。
举例:
控制转移指令
说明:当直接地址中的内容与立即数操作时,可以对 内部RAM或SFR以及端口的指定位进行置“1”操作。
例:分析下列程序段,每条指令执行的结果 MOV MOV MOV ORL ORL ANL A,#45H R1,#25H 25H,#39H A,@R1 25H,#13H 25H,A ;A=45H ;R1=25H ;(25H)=39H ;45H∨39H = 7DH→A ;39H∨13H = 3BH →(25H) ;3BH∨7DH = 7FH →(25H)
例:分析下列程序段,每条指令执行的结果 MOV MOV MOV ANL ANL ANL A,#45H R1,#25H 25H,#79H A,@R1 25H,#15H 25H,A
;A=45H ;R1=25H ;(25H)=79H ;45H∧79H = 41H→A ;79H∧15H = 11H →(25H) ;11H∧41H = 01H →(25H)
说明:①该指令只对一个字节和调整,如为多字节相 加,必须进行多次调整; ②该指令不能直接对BCD码减法结果进行调整, 必须变BCD码减法为BCD码补码加法,然后采用该指令 来调整。
例:试编写程序,实现52+68的BCD码加法,并分析执 行过程
7.乘除指令(2条) MUL AB DIV AB
指令功能:①乘法指令实现8位无符号乘法,指令执行 后,16位积的高位在B中,低位在A中 ②除法指令实现8位无符号除法,A放被除 数,B放除数,指令执行后商在A中,余数在B中
一、逻辑运算类指令(24条) 1.逻辑与指令(6条) ANL ANL ANL ANL ANL ANL A,Rn A,direct A,@Ri A,#data direct,A direct,#data
指令功能:将目的操作数的内容和源操作数的内 容按位逻辑“与”运算,结果送目的操作数所指的地 址单元。前四条指令执行后影响P标志,后两条指令, 若直接地址为I/O端口,则为“读-改写”操作。
跳转的范围不同。 短转移类指令:AJMP 长转移类指令:LJMP 相对转移指令:SJMP addr11 addr16 rel
转移范围: 2KB 64KB -128~+127
指令构成不同。 AJMP、LJMP后跟的是绝对地址,而SJMP后跟的是 相对地址。(rel=转移的目的地址-(PC)-2) 指令长度不同 原则上,所有用SJMP或AJMP的地方都可以用 LJMP来替代。
课堂练习
1.设:内部RAM中,(40H)=50H,(41H)=60H,(50H)=30H, (51H)=70H,执行下列片段后:
a. MOV MOV INC MOV R0,40H A,@R0 R0 @R0,A b. MOV ;R0=50H MOV ;A=30H INC ;R0=51H MOV ;(51H)=30H R0,#40H A,@R0 @R0 A,@R0 ;R0=40H ;A=50H ;(40)=51H ;A=51H
控制转移指令
(2)第四条指令与前三条指令相比有所不同 间接转移指令:JMP @A+DPTR 这条指令的用途也是跳转,转到什么地方去呢? 这可不能由标号简单地决定了。 转移地址由A+DPTR形成,并直接送入PC。 指令对A、DPTR和标志位均无影响。 本指令可代替众多的判别跳转指令,又称为散 转指令,多用于多分支程序结构中。
例:
MOV DPTR,#TAB ;将TAB代表的地址送入DPTR JMP @A+DPTR ;跳转 TAB: AJMP ROUT0 ;跳转ROUT0开始的程序段 TAB+2: AJMP ROUT1 ;跳转ROUT1开始的程序段 TAB+4: AJMP ROUT2 ;跳转ROUT2开始的程序段 TAB+6: AJMP ROUT3 ;跳转ROUT3开始的程序段 ... ROUT0: 执行该段程序后,程序将根 ... 据A中的内容转移到不同的 ROUT1: 程序段去执行----散转。 ... A=0,转ROUT0 ROUT2: A=2,转ROUT1 ... A=4,转ROUT2 ROUT3: A=6,转ROUT3
单片机原理及应用
算术运算和逻辑运算指令(48条)
一、算术运算类指令(24条)
1.不带进位位的加法指令(4条) ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data 指令功能:将A中的值与源操作数所指内容相加, 最终结果 存在A中。 说明:该指令对PSW中CY、AC、OV、P标志位产生影响 例:设A=ADH,R0=97H,执行指令“ADD A,R0”,则 结果和各标志位如何?
二、条件转移类指令(8条) 条件转移指令是指在满足一定条件时进行相对转 移,否则程序继续执行本指令的下一条指令。 1、累加器判0转移指令(2条) JZ JNZ rel rel ;如果A=0,则转移,否则顺序执行。 ;如果A≠0,就转移
新的PC值=当前PC+偏移量rel 我们在编写汇编语言源程序时,可以直接写成: JZ 标号 ;即转移到标号处。
控制转移类指令(17条)
这一类指令的功能是改变指令的执行顺序,转 到指令指示的新的PC地址执行。此类指令一般不影 响PSW。 包括以下类型: 无条件转移和条件转移 相对转移和绝对转移 长转移和短转移 调用与返回指令
一、无条件转移类指令(4条) 短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel 间接转移指令:JMP @A+DPTR (1)上面的前三条指令,统统理解成:PC值改变,即 跳转到一个标号处。 那么他们的区别何在呢?
说明:①若乘积大于FFH,溢出标志位OV置“1”,否 则清零。CY总是为0,乘法指令也影响P。 ②除法指令执行后,进位标志CY和溢出标志OV 均清零,只有当除数为0时,OV=1,且A、B内容不变。
例1:已知A=9AH,B=5DH,执行指令“MUL AB”,试分 析执行结果及各标志位状态 B=37H,A=F2H,OV=1,CY=0,P=1 例2:已知A=14H,B=06H,执行指令“DIV AB”,试分 析执行结果及各标志位状态 B=02H,A=03H,OV=0,CY=0,P=0
3.带借位的减法指令(4条) SUBB SUBB SUBB SUBB A,Rn A,direct A,@Ri A,#data
指令功能:将A中的值减去源操作数所指内容以及 进位位C中的值,最终结果存在A中。 说明:没有不带借位的减法指令,如果需要做不带借 位的减法指令(在做第一次相减时),只要将CY清零 即可。 例:已知A=CAH,R2=55H,CY=1,分析“SUBB A,R2” 指令的执行结果。
例:
L1: L2:
MOV A,R0 JZ L1 MOV R1,#00H AJMP L2 MOV R1,#0FFH SJMP L2 END
在执行上面这段程序前:如果R0=0,结果R1=0FFH。 而如果R00,则结果是R1=00H。 把上面的那个例子中的JZ改成JNZ,看看程序执行的 结果是什么? 如果R0=0,结果R1=00H。如果R00,结果是R1中的 值为0FFH。
3.逻辑异或指令(6条) XRL XRL XRL XRL XRL XRL A,Rn A,direct A,@Ri A,#data direct,A direct,#data
指令功能:将目的操作数的内容和源操作数的内 容按位逻辑“异或”运算,结果送目的操作数所指的 地址单元。前四条指令执行后影响P标志,后两条指令, 若直接地址为I/O端口,则为“读-改写”操作。
说明:当直接地址中的内容与立即数操作时,可以对 内部RAM或SFR以及端口的指定位进行取反操作。
例:分析下列程序段,每条指令执行的结果 MOV MOV MOV XRL XRL ANL A,#45H R1,#25H 25H,#39H A,@R1 25H,#13H 25H,A ;A=45H ;R1=25H ;(25H)=39H ;45H⊕39H = 7CH→A ;39H⊕13H = 2AH →(25H) ;2AH⊕7CH = 56H →(25H)
例:已知(30H)=56H,请将30H单元的高4位清0, 低4位保持不变。
2.逻辑或指令(6条) ORL ORL ORL ORL ORL ORL A,Rn A,direct A,@Ri A,#data direct,A direct,#data
指令功能:将目的操作数的内容和源操作数的内 容按位逻辑“或”运算,结果送目的操作数所指的地 址单元。前四条指令执行后影响P标志,后两条指令, 若直接地址为I/O端口,则为“读-改写”操作。
相关文档
最新文档