云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > mcs-51单片机

mcs-51单片机

  • 62 次阅读
  • 3 次下载
  • 2025/6/15 12:23:31

MOV 22H,#0FFH MOV A,20H SUBB A,21H JB OV,NEXT

JNB ACC.7,NEXT1 ;差为正则转移

CPL A ;差为负,求补为绝对值 ING A

NEXT1:MOV 22H.,#00H NEXT: SJMP $

2-14 试编写程序,求20H,21H,22H单元的三个补码数差得绝对值,即

。结果保留在A中。若运算出现溢出,则置23H单元为0FFH;否则,

置23H单元为00H。

解:此题的解法与上题相似。只是每次减法以后都要判断是否出现溢出,而不是做完两次减法以后才判断溢出。因为有可能第一次减法以后已经溢出,再作一次减法以后反倒没有溢出,而这时的结果实际上已经不正确了。例如,64-(-64)-(-1)=129。结果已经溢出,但分两步运算时,先由

64-(-64)=01000000-11000000=10000000

这时已经出现溢出,OV=1。若再作第二次减法,则结果为: 10000000-11111111=10000001

溢出标志反而被清零(因为负数减负数不可能溢出),但实际的结果并不正确。所以,需要每作完一次减法运算就检查溢出标志。程序如下:

CLR C

MOV 23H,#0FFH ;先置溢出标志 MOV A,20H

SUBB A,21H ;第一次相减 JB OV,NEXT ;溢出则结束

CLR C ;准备第二次相减 SUBB A,22H ;第二次相减 JB OV,NEXT ;溢出则结束

JNB ACC.7,NEXT1 ;差为正则转移 CPL A ;求反加一 ING A NEXT1:MOV 23H.,#00H NEXT: SJMP $

2-15 有一个16位二进制数,高8位存于21H单元,低8位存于20H单元。试问:(1)执行以下程序段,完成什么逻辑功能?(2)能否用MOV指令替代其中的XCH指令而不改变程序的逻辑功能?写出相应的程序段。(3)这两个程序段的执行结果是否完全相同?差别在那里?

CLR C XCH A,21H RRC A XCH A,21H XCH A,20H RRC A XCH A,20H

解:(1)程序完成的逻辑功能是使21H和20H中的16位二进制数右移一位,并使最高位为0,一般称为逻辑右移一位。

(2)可以用MOV指令,修改后程序段如下: CLR C MOV A,21H RRC A MOV 21H,A MOV A,20H RRC A MOV 20H,A

(3)有所差别。虽然从16位右移功能来说两者的功能是相同的,但第一个程序段执行后,累加器A的内容仍维持原值,而第二个程序段执行后将改变A中的数值。

2-16 分析以下程序段的逻辑功能。若要用MOV指令代替其中的交换指令而不改变程序的逻辑功能,应如何进行修改?设20H中存放的是两个四位二进制数。

MOV R1,#20H

XCHD A,@R1 ADD A,#01H XCHD A,@R1 XCH A,@R1 ADD A,#01H XCH A,@R1

解:程序的功能是将20H单元中的两个四位二进制数分别加1,并且舍弃可能产生的进位。如(20H)=6AH,程序执行后位(20H)=7BH。又如(20H)=9FH,执行后(20H)=A0H。

不采用交换指令而要完成同样的功能,可以有多种修改方法。以下仅为一例: MOV R1,#20H XCHD A,@R1

ADD A,#01H ;低4位加1 JB AC,NEXT ;判断低四位有无进位 ADD A,#01H ;高4位加1 NEXT: MOV @R1,A ;送回20H单元

2-17 分析以下程序段的运行结果。若是将其中的DA A指令取消,则结果会有什么不同? CLR C

MOV 20H,#99H MOV A,20H ADD A,#01H DA A MOV 20H,A

解:程序运行结果是A=00H,Cy=1,(20H)=00H。

取消DAA指令后,运行结果为A=9AH,Cy=0,(20H)=9AH。

2-18 以下的两个程序段中,R2内所存入的都是两位16进制数。试问这两个程序段各进行多少次循环?

MOV R2,#60H LOOP:??

??

DJNZ R2,LOOP

SJMP $ MOV R2,#60H LOOP:??

?? MOV A,R2 ADD A,#99H DA A MOV R2,A JNZ LOOP SJMP $

解:第一个程序段循环96次,第二个程序段循环60次。

第一个程序段中,R2的值就当作一般二进数处理。而第二个程序段中,R2的值是按两位十进数处理的,所以两者的循环次不同。

2-19 指出以下哪些指令是不存在的,并改用其它指令(或若干条指令)来实现预期的指令功能。

(1) MOV 20H,30H (2) MOV R1,R2 (3) MOV @R3,20H (4) MOV DPH,30H (5) MOV C,PSW.1 (6) MOV SMOD,C (7) MOVX R2,@DPTR (8) PUSH 20H (9) POP R0 (10) XCH R1,R2

解:其中第(1),(4),(5),(8)条指令是正确的,其余都不正确,修改结果如下: (2) MOV A,R2 MOV R1,A (3) MOV A,R3

MOV R1,A

搜索更多关于: mcs-51单片机 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

MOV 22H,#0FFH MOV A,20H SUBB A,21H JB OV,NEXT JNB ACC.7,NEXT1 ;差为正则转移 CPL A ;差为负,求补为绝对值 ING A NEXT1:MOV 22H.,#00H NEXT: SJMP $ 2-14 试编写程序,求20H,21H,22H单元的三个补码数差得绝对值,即。结果保留在A中。若运算出现溢出,则置23H单元为0FFH;否则,置23H单元为00H。 解:此题的解法与上题相似。只是每次减法以后都要判断是否出现溢出,而不是做完两次减法以后才判断溢出。因为有可能第

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com