第七讲单片机指令系统二PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1)在单片机内部,减法操作实际上是在控制器控制下 采用补码加法来实现的。但在实际应用中,若要判定 减法操作结果,则可按二进制减法法则进行。
2)无论相减的两数是无符号数还是带符号数,减法操 作总是按带符号二进制数进行的,并能对PSW中各标 志位产生影响。产生标志位的法则是:若最高位在减 法时有借位,则Cy=1,否则Cy=0;若低4位在减法时 向高4位有借位,则AC=1,否则AC=0;奇偶校验标志 位P和加法时的取值相同。
3)除法指令执行后也会影响三个标志Cy , OV和P,执行除 法指令后,进位标志一定会被清除,即Cy=0。溢出标志只在 除数B=0时才被置1,其它情况OV=0,P按A中个数确定。
4)乘除指令只针对8位无符号数,若需要带符号数或多字节 乘除法,则需要编写相应程序。
二、十进制调整指令
这是一条专用的指令,用来实现BCD码的加法或减法运算。
b)两个负数相加(符号位均为1),若和为正数(符号 位为0),则一定溢出。
产生溢出时,OV=1,否则OV=0。 在上例中,两负数相加后,和仍为负数,故而OV=0; 4)加法指令还会影响辅助进位标志AC和奇偶标志P。上 例中AC=0,P=0。
执行下述指令后,OV=?
MOV A , #81H MOV R1 , #81H ADD A, R1
1.逻辑与运算指令(按位与) ANL A, RN ANL A, DIRECT ANL A, @RI ANL A, #DATA ANL DIRECT , A ANL DIRECT , #DATA
2).逻辑或运算指令(按位或) ORL A, RN ORL A, DIRECT ORL A, @RI ORL A, #DATA ORL DIRECT , A ORL DIRECT , #DATA
2)在确定相加后进位Cy的值时,总是把两个操作数直接 相加而得出Cy的值,上例中Cy=1。若是两个带符号数相 加,相加后的进位值应该丢弃,即忽略PSW中的Cy值。
3)在确定相加后溢出标志OV的值时,计算机总是把操作 数当作带符号数来对待。
a)两个正数相加(符号位均为0),若和为负数(符号 位为1),则一定溢出。
二、算术运算指令(24条)
1.加法指令
ADD A, RN ;AA+RN ADD A, DIRECT ;AA+(DIRECT) ADD A, @RI ;AA+(RI)
ADD A, #DATA ;AA+DATA 1)在求和时,总是把操作数直接相加,而不作任
何变换。 例:A=1101 0011 ,R1=1110 1000 执行ADD A, R1 时,其和为:A=10111011
(1)同符号数相减不会溢出,即OV=0
(2)若一个负数减正数,差为正数(符号位为0),则一定溢出, 或一个正数减负数(符号位为1),差为负数,则一定溢出。
3)在MCS-51指令中,没有不带Cy的减法指令,也就 是不带Cy的减法指令是非法指令。若要进行不带借位 的减法操作,则在减法之前先使用指令使Cy清零,然 后再相减。
3.加1指令
INC A
INC RN
INC DIRECT
INC @RI
INC DPTR
第一条指令影响PSW中的奇偶标志位P,其余指令不会对任何
标志位产生影响。 4.带借位减法指令
SUBB A, RN SUBB A, DIRECT SUBB A, @RI SUBB A, #DATA
例:将累加器A中低4位送入P1口低4位,P1口高4位不变。
MOV ANL ANL ORL MOV SJMP END
例: 执行下列指令后,PSW中各位为?
CLR C
MOV A, #52H
SUBB A, #0B4H
5.减1指令
DEC A
DEC RN
DEC DIRECT
DEC @RI
和加1指令类似,只有第一条指令影响奇偶校验标志位P。其 余指令都不影响PSW标志位状态。
6.乘除指令和其它运算指令
一、乘除指令
DA A
;A44, Cy=1
SJMP $
;
END
(2)BCD减法
十进制无符号减法可按以下步骤进行:
1)求BCD减数的补数,即9AH-减数
2)被减数与减数的补数相加
3)经过十进制加法调整后就得到所求的十进制减法运算结果。
例:己知:M1和M2中分别存有被减数91和减数36,试编程求差 并存入M3单元。
2.带进位加法指令
ADDC A, RN ADDC A, DIRECT ADDC A, @RI ADDC A, #DATA
例:30H、31H单元和40H、41H单元各存放一双字节 数,低位在前,高位在后,使其相加,和置于30H、 31H单元中 MOV A, 30H ADD A, 40H MOV 30H, A MOV A, 31H ADDC A, 41H MOV 31H, A
DA A ;若AC=1或A3~0>9,则AA+06H
;若Cy=1或A7~4>9,则AA+60HFra Baidu bibliotek
十进制调整指令执行时仅对进位位Cy产生影响 ,Cy=1表示和
己超过或等于十进制的99
(1)BCD码加法
例:试写出85+59的BCD码加法程序,
ORG 1000H
MOV A, #85H
ADD A, #59H ;A85+59=DEH
ORG 1000H
CLR C
MOV A, #9AH ;ABCD模100
SUBB A, M2 ;ABCD减数的补数
ADD A, M1 ;被减数+减数的补数
DA A
;对A进行加法调整
MOV M3, A ;M3BCD差
CLR C
SJMP $
END
三、逻辑运算指令(20条)及移位指令(5条)
MUL AB ; A*BBA
DIV AB ; AB=A…..B
1)乘法指令为一字节指令,执行时需四个机器周期,相乘按 无符号数进行。
2)乘法指令执行后会影响三个标志Cy , OV和P,执行乘法 指令后,进位标志一定会被清除,即Cy=0。相乘后若有效积 为 8 位 , 即 B=0, 则 OV=0, 若 B!=0,( 即 积 超 过 2 5 5 ) 则 OV=1。