内容正文:
四川省(电子信息大类)对口招生《单片机原理与应用》
复习讲义
模块 3 单片机指令系统
考点三 算术操作类指令
【考纲要求】
掌握MCS-51系列算术操作类指令的形式和功能。
【知识网络】
【知识和技能要点】
算术操作类指令
1.加法指令
共有4条加法运算指令:
ADD A,Rn;(A)+(Rn)→A,n=0~7
ADD A,direct;(A)+(direct)→A
ADD A,@Ri;(A)+((Ri))→A,i=0,1
ADD A,#data;(A)+#data→A
一个加数总是来自累加器A,而另一个加数可由不同的寻址方式得到。结果总是放在A中。
使用加法指令时,要注意累加器A中的运算结果对各个标志位的影响:
(1)如果位7有进位,则置“1”进位标志Cy,否则清“0”Cy
(2)如果位3有进位,置“1”辅助进位标志Ac,否则清“0”Ac(Ac为PSW寄存器中的一位)
(3)如果位6有进位,而位7没有进位,或者位7有进位,而位6没有,则溢出标志位OV置“1”,否则清“0”OV。
2.带进位加法指令
标志位Cy参加运算,因此是三个数相加。共4条:
ADDC A,Rn;(A)+(Rn)+C→A,n=0~7
ADDC A,direct;(A)+(direct)+C→A
ADDC A,@Ri;(A)+(Ri)+C→A,i=0,1
ADDC A,#data;(A)+#data+C→A
3.增1指令
5条增1指令:
INC A
INC Rn;n=0~7
INC direct
INC @Ri;i=0,1
INC DPTR
不影响PSW中的任何标志,若原变量中内容为FFH则程序执行后变量变为00H。
第5条指令INC DPTR,是16位数增1指令。指令首先对低8位指针
DPL的内容执行加1的操作,当产生溢出时,就对DPH的内容进行加1操作,并不影响标志Cy的状态。
4.十进制调整指令
用于对BCD码十进制数加法运算结果的内容修正。
指令格式:DA A
两个压缩BCD码的数按二进制相加之后,必须经本指令的调整
才能得到正确的和数(仍为压缩BCD码表示)。
应用背景:
(1)该指令执行前,一般有一条加法指令。
(2)加法指令中的两个加数,应该是用压缩BCD码表示的十进制数,和存放在A中。
(3)执行完DA指令后,A中存放的数是两个加数的十进制和,也使用压缩BCD码表示。
5.带借位的减法指令
4条指令:
SUBB A,Rn;(A)-(Rn)-Cy→A,n=0~7
SUBB A,direct;(A)-(direct)-Cy→A
SUBB A,@Ri;(A)-((Ri))-Cy→A,i=0,1
SUBB A,#data;(A)-#data-Cy→A
从累加器A中的内容减去指定的变量和进位标志Cy的值,结果存在累加器A中。
如果位7需借位则置“1”Cy,否则清“0”Cy;
如果位3需借位则置“1”Ac,否则清“0”Ac;
如果位6需借位而位7不需要借位,或者位7需借位,位6不需借位,则置“1”溢出标志位OV,否则清“0”OV。
6.减1指令
4条指令:
DEC A;(A)-1→A
DEC Rn;(Rn)-1→Rn,n=0~7
DEC direct;(direct)-1→direct
DEC @Ri;((Ri))-1→(Ri),i=0,1
减1指令不影响标志位。
7.乘法指令
MUL AB;A×B→BA
如果积大于255,则置“1”溢出标志位OV
8.除法指令
DIV AB;A/B→A(商),余数→B
如果B的内容为“0”(即除数为“0”),则存放结果的A、B中的内容不定,并置溢出标志位OV为“1”。
【练习题】
1、 填空题
1.MCS-51单片机中,实现累加器A加1的指令是______________。
2.累加器A=80H,执行完指令ADD A,#83H后,进位标志位CY=__________。
3.MCS-51单片机中,减法指令的助记符是______________。
4.已知A=30H,执行ADD A, #20H后,累加器A的值为______________。
5.执行指令DEC R0后,若R0=00H,则R0的最终值为______________。
6.若(A)=0DBH,(R4)=73H,CY=1,执行指令SUBBA,R4后,结果为A=_________,CY=______。
7.已知A=08H,B=02H执行DIV AB后,则累加器A的值为______________。
二、选择题(10题)
1.下列指令中,属于算术操作类指令的是( )
A. MOV A, #30H B. ADD A, 40H C. ANL A, #0FH D. JMP 1000H
2.MCS-51单片机中,INC指令的功能是( )
A. 减法 B. 加法 C. 加1 D. 减1
3.下列指令中,格式正确的算术指令是( )。
A. ADD R1, #20H B. ADD A, R0 C. INC #30H D. DEC A, #01H
4.下列指令中不影响标志位CY的指令有( )。
A. ADD A,20H B.CLR A
C. RRC A D.INC A
5.下列指令中,用于实现累加器A减1的是( )
A. DEC A B. INC A C. SUBB A, #01H D. ADD A, #0FFH
6.已知A=45H,B=23H,执行ADD A, B后,累加器A的值为( )
A. 68H B. 22H C. 67H D. 45H
7.下列关于SUBB指令的说法,正确的是( )
A. 无需考虑进位标志位
B. 是带借位减法指令
C. 可直接实现两个寄存器之间的减法
D. 不影响标志位
8.已知A=0C0H,执行INC A后,A的值和进位标志C分别为( )
A. 0C1H,0 B. 0C1H,1 C. 0B9H,0 D. 0B9H,1
9.已知A=0FH,B=04H,执行MUL AB后,A和B的值分别为( )
A. 3CH,00H B. 00H,3CH C. 0FH,04H D. 04H,0FH
10.已知A=07H,B=03H,执行DIV AB后,余数存放在( )
A. 累加器A中 B. 寄存器B中 C. 程序计数器PC中 D. 堆栈指针SP中
三、判断题
1.ADD指令可以实现累加器A与内部RAM单元之间的加法运算。( )
2.INC指令执行后,会影响进位标志位C。( )
3.SUBB指令是不带借位减法指令,无需考虑进位标志位。( )
4.执行DEC A指令后,若A=00H,则A的值变为0FFH。( )
5.已知A=0FFH,执行ADD A, #01H后,进位标志位C=1,A=00H。( )
6.带进位加法指令ADDC,只有当进位标志位C=1时,才会在加法中加1。( )
7.MUL AB指令执行后,若乘积大于255,则寄存器B中存放高8位,A中存放低8位。( )
8.DIV AB指令中,若除数B=0,则会产生溢出,程序会出错。( )
9.执行INC DPTR指令后,DPTR的值会自动加1,可用于实现地址递增。( )
四、简答题
已知(A)=7AH,(B)=02H,(R0)=30H,(30H)=0A5H,(PSW)=80H,写出以下各条指令执行后A和PSW的内容。
①XCH A,@RO2
②XCHD A,@RO3
③SWP A
④ADD A,30H5
⑤ADDC A,30H
⑥SUBB A,30H
⑦SUBB A,#30H
⑧INC @RO
⑨MUL AB
⑩DIV AB
【答案】
一、填空题
1.INC A ;2.1
3.SUBB ;4.50H
5.0FFH
6.67H 0 ;7.04H
二、选择题
1.B ;2.C ;3.B ;4.D ;5.A
6.A ;7.B ;8.A ;9.B ;10.B
三、判断题
1.√;2.×;3.×;4.√
5.√;6.√;7.√;8.√;9.√
四、简答题
初始值:
(A)=7AH,(B)=02H,(R0)=30H,(30H)=0A5H,PSW=80H(C=1)
① XCH A,@R0 (全字节交换)
A ↔ (30H)
A=0A5H,PSW=80H
② XCHD A,@R0 (低4位交换)
A低4位 ↔ (30H)低4位
A=075H,PSW=81H
③ SWAP A (高低4位交换)
7AH → 0A7H
A=0A7H,PSW=81H
④ ADD A,30H (不带进位加法)
7AH + 0A5H = 11FH
A=1FH,PSW=81H
⑤ ADDC A,30H (带进位加法)
7AH+0A5H+1=120H
A=20H,PSW=C0H
⑥ SUBB A,30H (带借位减法)
7AH - 0A5H -1 = 0D4H(有借位)
A=0D4H,PSW=84H
⑦ SUBB A,#30H (带借位减法)
7AH -30H -1 = 49H
A=49H,PSW=01H
⑧ INC @R0 (内部RAM自增)
(30H)=0A5H+1=0A6H
A=7AH,PSW=81H(C=1)
⑨ MUL AB (乘法)
7AH × 02H = 0F4H
A=0F4H,B=00H,PSW=00H(C=0,OV=0)
⑩ DIV AB (除法)
7AH ÷ 02H = 3DH 余0
A=3DH,B=00H,PSW=01H(C=0)
【真题演练】
1.(24单招,单选题)指令"ADDA,30H”实现的功能是什么。( )
A.数据传送 B.程序跳转
C.加法运算 D.减法运算
2.(25单招,单选题)下列选项中可以实现数据交换的指令是( )
A. ADD A,03H B.MOVC A,@DPTR
C. MOV A,03H D.MOV A.@RO
3.(25单招,单选题)MCS-51单片机中,已知(A)=28H,(30H)=47H,执行指令“ADD A,30H”后,累加器A的值是)( )
A.47H B.58H C. 6FH D.75H
【答案】
1.C; 2.C ;3.C
原创精品资源学科网独家享有版权,侵权必究
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$