单片微型计算机原理与接口技术 髙锋版 课后答案第4章(5)

2021-09-24 13:39

0054 CSFO XCH A,B ;(A)=b3,(B)=b2

0056 CB XCH A,R3 ;(A)=R3(b1),(R3)=b3

0057 75F00A MOV B,#10

005 A4 MUL AB ;(A)=(bl X l0)L,(B)=(bl X l0)H

005B 2B ADD A,R3 ;A=[(bl X 1O)L+b3]

005C FB MOT R3,A ;此时R3×10,R4×10已经完成

005D 08 INC R0 ;取下一位BCD码

005E EC MOV A,R4 ;(R4+下一位BCD码数值)送B4

005F 26 ADD A,@RO

0060 FC MOV R4, A

0061 EB MOV A,R3 ;进位加到高8位

0062 3400 ADDC A,#0

0064 FB MOV R3.A

0065 DAE7 DJNZ R2,LOOP ;循环(n-1)次

0067 D0F0 POP B ;恢复现场

0069 D0E0 POP ACC

006B D0D0 POP PSW

006D 22 RET ;返回

例如:4位.BCD数为6553,依次存入内存单元20 H、21 H、22 H和23 H中。转换结果为19 9H,依次存人R3和R4中。

【4-19】将外部RAM的40 H单元中的一个字节拆成2个ASCII码,分别存入内部数据存储器40 H和41 H单元中。试编写以子程序形式给出的转换程序,说明调用该子程序的入口条件和出口功能。加上必要的伪指令,并对源程序加以注释。

【答】子程序的入口条件、出口功能及源代码如下:

子程序人口条件:准备拆为2个ASCII码的数存入外部RAM的40 H单元中。

子程序出口功能:完成外部RAM单元一个字节拆成2个ASCII码,分别存入内部数据存储器40 H和41 H单元中。

ORG 1 000H

B_TO_A:MOV DPTR,#40H ;外部RAM40H单元

很难找到

MOV R0,#40H

MOVX A,@DPTR ;取数

PUSH A

ANL A,#0FH ;低4位转换为ASCII码

LCALL. CHANGE

MOV @RO,A

INC R0

POP A ’

SWAP A

ANL A,#0FH ;高4位转换为ASCII码

LCALL CHANGE

MOV @R0,A

RET

CHANGE:CJNE A,#0AH,NEXT ;转换子程序

NEXT: JNC NEXT2 ;≥0AH,转移

ADD A,#3 0H ;≤9,数字0-9转化为ASCII码

RET

NEXT2: ADD A,#37H ;字母A~F转化为ASCII码

RET

END

设外部(40 H)=12 H。

执行程序B_TO_A后:内部(40 H)=31 H,(41 H)=32 H。

设外部RAM(40 H)=ABH。

执行程序B_TO_A后,内部(40 H)=41 H,(41 H)=42 H。

【4-20】请编写中值数字滤波子程序FILLE,加上必要的伪指令,并对源程序加以注释。 入口条件:3次采集数据分别存储在内部存储器的20 H、21 H和22 H中。出口结果:中值在R0寄存器中。

【答】程序如下:

ORG 00H

0000 0130 AJMP LIZI

ORG 30H

0030 752056 LIZI:MOV 20H,#56H ;3次采集数据

0033 752184 MOV 21H,#84H

0036 752212 MOV 22H,#12H

0039 113D ACALL FILLE

003B 013B AJMP $ ;中值数字滤波子程序FILLV.

003D COD0 FILLE:PUSH PSW ;PSW及ACC保护入栈

003F COE0 PUSH ACC

.0041 E520 MOV A,20H ;取第一个数

0043 C3 CLR C

0044 9521 SUBB A,21H ;与第二个数比较

0046 5006 JNC LOB1 ;第一个数比第二个大,转LOBl

0048 E520 MOV A,20H ;第一个数比第二个小,交换位置

004A C521 XCH A,21H

很难找到

004C F520 MOV 20H,A

004E E522 LOB1l: MOV A,22H

0050 C3 CLR C

0051 9520 SUBB A,20H ;第三个数与前二个数中的较大数比较 0053 500F JNC LOB3 ;第三个数大于前二个中的较大数,转LOB3 0055 E522 MOV A,22H

0057 C3 CLR C

0058 9521 SUBB A,21H ;第三个数与前二个数中的较小数比较 005A 500D JNC IOB4

005C E521 MOV A,21H .

005E F8 MOV R0,A ;存入中值

005F D0E0 LOB2:POP ACC ;恢复ACC和PSW

0061 D0D0 POP PSW

0063 22 RET

0064 E520 LOB3: MOV A,20H

0066 F8 MOV R0,A

0067 015F AJMP LOB2

0069 E522 LOB4: MOV A,22H

006B F8 MOV R0,A ;存入中值

006C 015F AJMP LOB2

执行结果为(RO)=56 H。

【4-21】根据8100 H单元中的值X,决定P1口引脚输出为:

加上必要的伪指令,并对源程序加以注释。 .

【答】程序如下:

ORG 0000H

SJMP BEGIN

ORG 0030H

BEGIN: MOV DPTR,#8100H

MOVX A,@DPTR

MOV R2,A

JB ACC.7,SMALLER;有符号数<0

SJMP UNSIGNED ;无符号数≥0

SMALLER:DEC A ;X<0,输出-X(先减1,再取反)

CPL A

MOV P1,A

SJMP OK

UNSIGNED:CJNE A,#00H,BIGGER ;不等于0即大于0

MOV P1,#80H ;X等于0,输出80H

SJMP OK

BIGGER: CLR C ;X大于0,输出A×2

RLC A ;A×2

很难找到

MOV P1,A

OK: SJMP $

END

例如:输入55 H,P1口引脚输出AAH;输入00 H,P1口引脚输出80 H;输入F1(一1 5的补码),P1口引脚输出0FH。

【4-22】将4000 H~40FF H中256个ASCII码加上奇校验后从P1口依次输出。加上必要的伪指令,并对源程序加以注释。

【答】注意:ASCII码的有效位为7位,其最高位D7可与程序状态字PSW中的奇偶校验 位P配合进行校验。

ORG 0000H

SJMP BEGIN

ORG 0030H

BEGIN:

MOV DPTR,#4000H ;首地址

MOV R0,#00H ;发送计数器

LOOP:

MOVX A,@DPTR

MOV C,P

CPL C

MOV ACC.7,C , ;置奇校验

单片微型计算机原理与接口技术 髙锋版 课后答案第4章(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:解读Autorun.inf文件病毒

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: