XCH MOV SJMP
方法4(堆栈传送法): PUSH PUSH POP POP SJMP
A,40H 30H,A $
30H 40H 30H 40H $
第十二讲
一、授课内容: MCS―51单片机指令系统 二、授课类型:讲授 三、授课时数:4学时 四、教学目标:
掌握并熟练运用MCS―51系列单片机的算术运算指令 五、教学重、难点:
熟练运用MCS―51系列单片机的算术运算指令 六、教学设想:
借助产品、作品演示,一方面可以使课堂生动,另一方面可以腾出大量时间加强对重难点知识的讲解,增强学生对知识的理解,同时提高他们对本学科的兴趣. 七、教学过程:(板书) 算术运算类指令 1.加法指令
ADD A,Rn ADD A,direct ADD A,@Ri
;A← A + Rn ;A← A +(direct) ;A← A +(Ri)
ADD A,#data 2.带进位加指令
ADDC A,Rn ADDC A,direct ADDC A,@Ri ADDC A,#data
;A← A + #data
;A← A + Rn + C ;A← A +(direct)+ C ;A← A +(Ri)+ C ;A← A + #data + C
C为来自PSW状态寄存器中的进位位C。
例如,设A=20H,R0=21H,C=1,执行指令 ADDC A,R0后,A=42H。 3.带借位减指令
SUBB A,Rn SUBB A,direct SUBB A,@Ri SUBB A,#data
;A← A - Rn - C ;A← A -(direct)- C ;A← A -(Ri)- C ;A← A - #data – C
例如,设A=39H,R0=20H,(20H)=32H,C=1,执行指令 SUBBA,@R0后,A=06H。 4.乘法指令
MUL AB
;BA← A×B
A和B中各存放一个8位无符号数,指令执行后,16位乘积的高8位在B中,低8位存A中。
例如,A=30H,B=60H,执行 MUL AB 后,A=00H,B=12H。 5.除法指令
DIV AB
;A÷B→商在A中,余数在B中
A和B中各存放一个8位无符号数,A放被除数,B放除数。指令执行后,A中存放商,B中存入余数。若B=00H,则指令执行后OV=1,A与B不变。
例如,A=30H,B=07H,执行 DIV AB 后,A=06H,B=06H。 6.加1指令
INC A INC Rn INC direct
;A← A + 1 ;Rn← Rn + 1
;(direct)← (direct)+ 1
INC @Ri INC DPTR
;(Ri)←(Ri)+ 1 ;DPTR← DPTR + 1
例如,(30H)=22H,执行 INC 30H 后,(30H)=23H。 7.减1指令
DEC A DEC Rn DEC direct DEC @Ri
;A← A - 1 ;Rn← Rn - 1
;direct← (direct)- 1 ;(Ri)←(Ri)- 1
例如,R0=30H,(30H)=22H,执行 DEC @R0 后,(30H)=21H。 8.十进制调整指令
DA A ;把A中按二进制相加的结果调整成按BCD码相加的结果 例如,A=65BCD,B=78BCD,C=0,执行下列语句 ADD DA
后,A=43 BCD,C=1。
例如,试把存放在R1R2和R3R4中的两个16位数相加,结果存于R5R6中。 解:参考程序如下: MOV ADD MOV MOV ADDC 相加时的进位位加进来
MOV
SJMP $
A,B A
A,R2 A,R4 R6,A A,R1 A,R3
;取第一个数的低8位 ;两数的低8位相加 ;保存和的低8位 ;取第一个数的高8位
;两数的高8位相加,并把低8位
R5,A ;把相加的高8位存入R5寄存器中
第十三讲
一、授课内容: 80C51单片机的指令系统 二、授课类型:讲授 三、授课时数:4学时 四、教学目标:
掌握并熟练运用单片机的逻辑运算指令 五、教学重、难点:
熟练运用单片机的逻辑运算指令 六、教学设想:
借助产品、作品演示,一方面可以使课堂生动,另一方面可以腾出大量时间加强对重难点知识的讲解,增强学生对知识的理解,同时提高他们对本学科的兴趣. 七、教学过程:(板书) (一)逻辑运算与循环类指令 1.“与”操作指令
逻辑“与”运算的特点是: ① X∧1=X;
② X∧0=0 利用这个特点可以对某个操作数的某一位或某几位清零。 2.“或”操作指令
逻辑“或”运算的特点是: ① X∨1=1; ② X∨0=X
利用这个特点,可以对某个操作数的某一位或几位置“1”。 3.“异或”操作指令
逻辑异或运算的特点是:
利用这个特点,可以对某个操作数的某一位或某几位取反。 4.求反与清除指令 5.循环指令
指令周期 汇编指令 操作说明 代码长度(字节) Tosc TM RR A值循环右移(移向低位)一位,A0移入A7。 A RRC A值带进位位循环右移一位,A0移入Cy,CyA 移入A7。 RL A值循环左移(移向高位)一位,A7移入A0。 A RLC A值带进位位循环左移一位,A7移入Cy, CyA 移入A0。 1 1 1 1 12 12 1 1 12 1 12 1 “RR A ”指令和“RL A ”指令的功能分别是将累加器A的内容循环左移或右移一位;“RRC A”指令和 “RLC A ”指令的功能分别是将累加器A的内容带进位位Cy循环左移或右移一位。
有时可运用“RLC A”指令实现无符数乘2运算,用“RRC A”指令实现除2运算(商为非整数时向下取整)。 (二)程序转移类指令 1.无条件转移指令
? 绝对(短)转移指令 AJMP
? 长转移指令 LJMP
addr16 ;PC ← addr16 addr11 ;PC10~0 ← addr11
? 短(相对)转移指令 SJMP
? 间接转移指令 JMP
@A+DPTR ;PC ← A + DPTR rel ;PC ← PC + 2 + rel