天津大学出版社的单片机课后习题答案文档格式.docx

上传人:b****6 文档编号:22218401 上传时间:2023-02-03 格式:DOCX 页数:28 大小:25.65KB
下载 相关 举报
天津大学出版社的单片机课后习题答案文档格式.docx_第1页
第1页 / 共28页
天津大学出版社的单片机课后习题答案文档格式.docx_第2页
第2页 / 共28页
天津大学出版社的单片机课后习题答案文档格式.docx_第3页
第3页 / 共28页
天津大学出版社的单片机课后习题答案文档格式.docx_第4页
第4页 / 共28页
天津大学出版社的单片机课后习题答案文档格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

天津大学出版社的单片机课后习题答案文档格式.docx

《天津大学出版社的单片机课后习题答案文档格式.docx》由会员分享,可在线阅读,更多相关《天津大学出版社的单片机课后习题答案文档格式.docx(28页珍藏版)》请在冰豆网上搜索。

天津大学出版社的单片机课后习题答案文档格式.docx

P81

3.逻辑运算指令:

主要用来作“与”、“或”、“异或”、“清除”“求反”及“左右移位”等逻辑运算。

P88

4.位操作指令:

主要用来作“与”、“或”、“清除”、“置位”“求反”等布尔操作及“位传送”操作。

P90

5.控制转移指令:

主要用于改变程序计数器PC的值,以控制程序执行的走向,有转移、调用及返回操作.P91

3-3变址寻址和相对寻址中偏移量的异同点

变址寻址:

@A+DPTR;

基址:

DPTR,变址:

A

@A+PC;

PC当前值,变址:

变址:

A中为8位二进制无符号数偏移量(A)∈[0,255]即[00H,0FFH]

相对寻址:

相对偏移量为8位二进制带符号数的补码

rel∈[-128,+127]

[rel]补码∈[00H,0FFH]

相同点:

偏移量∈[00H,0FFH]

不同点:

变址寻址中偏移量为8位二进制无符号数;

相对寻址中偏移量为8位二进制带符号数的补码

3-4指出下面每条指令的寻址方式:

MOVA,#30H–寄存器、立即–30H立即数

MOVC,30H–寄存器、位–30H位地址

MOVXA,@DPTR–寄存器、间接

jCLAB1–相对

MOV30H,@R1–直接、间接–30H字节地址

MOV30H,R5–直接、寄存器–30H字节地址

MOVCA,@A+PC–寄存器、变址

sjmpLAB2–相对

3-5运行下列程序后各单元及A、PSW的内容

(1)

1.

MOVA,#2;

(A)=02H00000001(psw)

MOVR1,#30H;

(R1)=30H00000001

MOV@R1,A;

((R1))=(30H)=02H00000001

MOV35H,R1;

(35H)=30H00000001

XCHA,R1;

(A)=30H,(R1)=02H00000000

 

2.

MOVA,#0F5H;

(A)=0F5H00000000

MOV30H,#9BH;

(30H)=9BH

MOVR0,#30H;

(R0)=30H

ADDA,#28H;

(A)=1DH

ADDCA,@R0;

(A)=0B9H01000001

3.

CLRC;

(CY)=0

MOV40H,#7AH;

(40H)=7AH

MOVA,#92H;

(A)=92H00000001

MOVR0,#40H;

(R0)=40H

SUBBA,@R0;

(A)=92H-7AH-0=18H,(PSW)=44H

4.

MOVA,#79H;

(A)=79H00000001

MOV30H,#89H;

(30H)=89H

ADDA,30H;

(A)=02H

DAA;

(A)=68H

SWAPA;

(A)=86H

3-6写出能完成下列数据传送的指令

⑴ R1内容传送到R0

MOVA,R1;

MOVR0,A

(2)内部RAM25H单元内容送到35H单元

MOV35H,25H或MOVA,25H;

MOV35H,A;

MOV35H,25H

(3)内部RAM25H单元内容送到P1口

① MOVA,25H;

MOVP1,A;

② MOVP1,25H;

③ MOV90H,25H

(4)内部RAM40H单元内容送外部RAM2005H单元

MOVA,40H;

MOVDPTR,#2005H;

MOVX@DPTR,A

(5)外部RAM3000H单元内容送内部RAM25H单元

MOVDPTR,#3000H;

MOVXA,@DPTR;

MOV25H,A

(6)外部ROM1000H单元内容送内部RAM35H单元

MOVDPTR,#1000H;

CLRA;

MOVCA,@A+DPTR;

MOV35H,A

(7)外部ROM4000H单元内容送外部RAM4000H单元

MOVDPTR,#4000H;

CLRA;

(8)外部RAM1000H单元内容送SP堆栈指针

MOVXA,@DPTR;

MOVSP,A

3-7BCD码减法,求7954H-4157H=3797H。

算法1:

999AH-4157H=5843H

5843H+7954H并调整

ORG0000H

BCDS:

 MOVA,#9AH

CLRC

SUBBA,#57H

MOV30H,A

MOVA,#99H

SUBBA,#41H

MOV31H,A

MOVA,#54H

ADDA,30H

DAA

MOV20H,A

MOVA,#79H

ADDCA,31H

MOV21H,A

CPLC

MOV2FH,C

SJMP$

END

循环程序

ORG0000H

BCDS1:

MOV20H,#54H

MOV21H,#79H

MOV30H,#57H

MOV31H,#41H

MOVR0,#30H

MOVA,#9AH

SUBBA,@R0

MOV40H,A

INCR0

MOV41H,A

MOVR0,#40H

MOVR1,#20H

MOVR2,#2

LOOP:

MOVA,@R0

ADDCA,@R1

MOV@R0,A

INCR1

DJNZR2,LOOP

MOV7FH,C

3-7顺序程序算法2

ADDA,20H;

DAA;

CY)=0

CPLC;

(CY)=1

ADDA,21H

SJMP$

3-8写出下段程序中每一步A、B中的结果

MOVA,#22H;

(A)=22H

MOVB,#05H;

(B)=05H

MOVR0,#08H

MULAB;

(A)=0AAH,(B)=0 00000000

MOVB,R0

DIVAB;

(A)=15H,(B)=02H00000001

3-9试写出完成如下操作的程序

(1)ORG0000H

 MOVDPTR,#1000H

 MOVXA,@DPTR

 ANLA,#B

 MOVX@DPTR,A

 SJMP$

(2)ORL50H,#00001111B

(3)XRL50H,#B

(4)MOV50H,#B

(5)XRL50H,#0FFH

3-1030H开始的20个单元数据传送到外部3000H

MOVDPTR,#3000H

MOVR7,#20

Loop1:

MOVA,@R0

INCDPTR

DJNZR7,Loop1

3-11根据R3条件转移1

CjneR3,#15,NEQ

sjmpL1;

=15

NEQ:

jnCL1;

>

15

sjmp$;

<

L1:

nop;

≥15

.

sjmpHalt

jCL1;

Halt:

≥15

sjmpL1

jCL1

sjmp$

≤15

jnCL1

3-11根据R3条件转移2

MOVA,R3

SUBBA,#15

JNCGE15;

….

(R3)-15

ORG0100H

JCGE15;

MOVA,#15

SUBBA,R3

15-(R3)

>15

3-12已知(SP)=53H,(PC)=37FEH执行:

ACALL3A00H后:

(SP)=(SP)+2=55H

(PC)=3A00H

((SP-1))=(54H)=00H;

PCL

((SP))=(55H)=38H;

PCH

37FEH:

ACALL3A00H

3800H:

第四章汇编语言程序设计思考题与习题4及答案

4-13试编程实现将20H单元的两位BCD数相乘,结果以BCD码的形式存于21H单元当中。

4-13-1ORG0000H

MOV20H,#56H

MOVA,20H

ANLA,#0FH

MOVB,A

ANLA,#0F0H

SWAPA

MOVR2,A

DECB

ADDA,R2

DAA

DJNZB,LOOP

4-13-2

MOVR0,#21H

MOV21H,#0

XCHDA,@R0

MOVB,@R0

4-7设一个加数在50H~52H单元中,另一个加数在53H~55H中,进位存放在位地址00中,试编程实现两数求和。

ORG000H

ONEDATA50H

TWODATA53H

WEIBIT00H

MOVR0,#ONE

MOVR1,#TWO

;

MOVC,WEI

MOVR2,#3

MOVWEI,C

4-7-2

SETBRS0

MOVR0,#58H

CLRRS0

4-11试用除法指令将20H单元的两位BCD码变成ASCII码后存入21H和22H单元。

MOV20H,#67H

MOVB,#10H

DIVAB

ADDA,#30H

ORLB,#30H

MOV22H,B

4-1从20H单元开始存放一组带符号数,其数目已存在1FH单元。

要求统计出大于0、小于0和等于0的个数并存于ONE、TWO、THREE三个单元。

ONEEQU30H

TWOEQU31H

THREEEQU32H

NUMEQU1FH

MOVNUM,#0FH

MOVR0,#20H;

-1,2,34,0A0H,0....

MOVR1,#ONE

MOV@R1,#0

CJNER1,#34H,LOOP

LOOP1:

JZMTHREE

JB,MTWO

INCONE

SJMPDJNZZ

MTHREE:

INCTHREE

MTWO:

INCTWO

DJNZZ:

INCR0

DJNZNUM,LOOP1;

NUM=0FH

4-5在用JMP指令实现128分支的程序中,试用LJMP代替AJMP指令。

修改后的程序有何特点最多能实现多少分支

4-5

AJMP指令表128分支占128*2=256字节MEMORY

LJMP指令表可以实现256/3=85个分支

特点:

各分支可在64KB存储器中转移。

4-2设自变量X为一无符号数,存放在内部RAM的VAX单元,函数Y存放在FUNC单元,请编出满足如下关系的程序:

XX≥50

Y=5X50>X≥20

2XX<20

VAXEQU30H

FUNCEQU31H

MOVVAX,#55;

15;

20;

25;

50;

55

MOVA,VAX

CJNEA,#20,DO1

DO1:

JNCDO2

MOVB,#2

MULAB

SJMPMEM

DO2:

CJNEA,#50,DO3

DO3:

JNCMEM

MOVB,#5

MEM:

MOVFUNC,A

X

Y

2X=30=14H

50

X=50=32H

20

5X=100=64H

X=55=37H

25

5X=125=7DH

4-3外部RAM从2000H到2100H有一数据块,请编出将它们传送到外部RAM3000H到3100H区域的程序。

4-7ORG0000H

MOVDPTR,#2000H

MOVP2,#30H

MOVR0,#00H

MOVR2,#0

MOVXA,@DPTR

MOVX@R0,A

DJNZR2,LOOP;

0—FF--0

(DPTR)=2100H

INCP2;

31H

4-4在内部RAM中,有一个以BLOCK为始址的数据块,块长在LEN单元。

请用查表指令编一程序,先检查它们若是16进制中的A~F,则把它们变为ASCⅡ码;

若不是,则把它们变为00H。

4-4

BLOCKEQU31H

LENEQU30H

N?

?

EQU30

MOVR0,#BLOCK

MOVLEN,#N

MOVR2,LEN

CJNEA,#0AH,DO1

JNCDO2

SJMPDO5

CJNEA,#0FH,DO3

SJMPDO4

JCDO4

DO5:

MOVA,#0

SJMPNEXT

DO4:

MOVDPTR,#TAB

SUBBA,#0AH

MOVCA,@A+DPTR

NEXT:

TAB:

DB'

A'

'

B'

C'

D'

E'

F'

4-6试编写一个子程序将字符串:

“MCS-51Microcntrol”装入外部RAM8000H开始的显示缓冲区。

4-9ORG0000H

MOVDPTR,#TAB

MOVP2,#80H

MOVR2,#19

tab:

MCS-51Microcontrol'

4-10将内部RAM的AAA单元中8位无符号二进制数转换成用BCD码表示的十进制数。

(要求用连续除10的方法实现)

4-10

ORG0000HORG1000H

AAADATA0FFHAAAEQU0FFH

MOVA,#AAAMOVA,#AAA

MOVB,#0AHMOVR0,#30H

DIVABMOVB,#0AH

MOV30H,BDIVAB

MOVB,#0AHMOV@R0,B

DIVABINCR0

MOV31H,BJNZLOOP

MOV32H,ASJMP$

SJMP$END

4-9求8个数的算数平均值Y=(∑Xi)/8(i=0,…7)

MOVSP,#6FH

CALLZHISHU

MOVR2,#0;

QIUHEA

MOVR3,#0;

QIUHEB

MOVR4,#08

JZNEXT

MOVB,#08H

ADDA,R2

MOVA,B

ADDA,R3

MOVR3,A

DJNZR4,LOOP

MOVR3,B

ZHISHU:

MOV30H,#0FFH

MOV31H,#0FFH

MOV32H,#0FFH

MOV33H,#0FFH

MOV34H,#0FFH

MOV35H,#0FFH

MOV36H,#0FFH

MOV37H,#0FFH

MOV38H,#0FEH;

FH

MOV39H,#0FFH

RET

4-16设逻辑运算表达式为

其中变量A、B、C分别为P1.0、P1.4、定时器溢出标志TF1,D、E、F分别为22H.2、22H.3的位地址、外部中断标志IF1,输出变量Y为P1.5,请编写程序用软件方法实现上述逻辑功能。

4-16-1

A1BIT

B1BIT

C1BITTF1

DBIT

EBIT

FBITIE1

YBIT

MOVC,B1

ORLC,/C1

ANLC,A1

MOVF0,C

MOVC,E

ORLC,/F

ANLC,D

ORLC,F0

MOVY,C

4-17A-T20个合法字符,散转程序设计。

解:

方法1:

键盘键入A-T按ASCII码考虑,则有:

字母

ASCII码

地址表中的偏移量

41H

(41H-41H)*2=0

K

4BH

(4BH-41H)*2=14H

B

42H

(42H-41H)*2=02H

L

4CH

(4CH-41H)*2=16H

C

43H

(43H-41H)*2=04H

M

4DH

(4DH-41H)*2=18H

D

44H

(44H-41H)*2=06H

N

4EH

(4EH-41H)*2=1AH

E

45H

(45H-41H)*2=08H

O

4FH

(4FH-41H)*2=1CH

F

46H

(46H-41H)*2=0AH

P

50H

(50H-41H)*2=1EH

G

47H

(47H-41H)*2=0CH

Q

51H

(51H-41H)*2=20H

H

48H

(48H-41H)*2=0EH

R

52H

(52H-41H)*2=22H

I

49H

(49H-41H)*2=10H

S

53H

(53H-41H)*2=24H

J

4AH

(4AH-41H)*2=12H

T

54H

(54H-41H)*2=26H

方法2:

自定义

1H

(1H-1H)*2=0

0BH

(0BH-01H)*2=14H

2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1