单片机原理与应用技术13章习题与思考题Word格式.docx

上传人:b****4 文档编号:7169622 上传时间:2023-05-08 格式:DOCX 页数:22 大小:21.37KB
下载 相关 举报
单片机原理与应用技术13章习题与思考题Word格式.docx_第1页
第1页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第2页
第2页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第3页
第3页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第4页
第4页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第5页
第5页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第6页
第6页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第7页
第7页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第8页
第8页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第9页
第9页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第10页
第10页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第11页
第11页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第12页
第12页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第13页
第13页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第14页
第14页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第15页
第15页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第16页
第16页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第17页
第17页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第18页
第18页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第19页
第19页 / 共22页
单片机原理与应用技术13章习题与思考题Word格式.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机原理与应用技术13章习题与思考题Word格式.docx

《单片机原理与应用技术13章习题与思考题Word格式.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用技术13章习题与思考题Word格式.docx(22页珍藏版)》请在冰点文库上搜索。

单片机原理与应用技术13章习题与思考题Word格式.docx

F43H=15*16^2+4*16^1+3*16^0=3907D

F43H=111101000011B

(3)1001H

1001H=1*16^3+1*16^0=4097D

1001H=1000000000001B

(4)64H

64H=6*16^1+4*16^0=100D

64H=1100100B

1.3完成以下运算

(1)1DH+1D

1DH+1D=1DH+1H=11101B+1B

11101B

+00001B

11110B

∴1DH+1D=11110B=1EH

(2)1BH+1H

1BH+1H=11011B+1B

11011B

11100B

∴1BH+1H=11100B=1CH

(3)1B+1BH

1H+1BH=11011B+1B

∴1H+1BH=11100B=1CH

(4)3A6H+BFH

3A6H+BFH=1110100110B+10111111B

1110100110B

+0010111111B

10001100101B

∴3A6H+BFH=10001100101B=465H=1125D

(5)404H-2FBH

404H–2FBH=10000000100B–1011111011B

10000000100B

-01011111011B

100001001B

∴404H–2FBH=100001001B=109H

(6)3H*4H

3H*4H=11B*100B

100B

*11B

100

1100B

∴3H*4H=1100B=CH

(7)A0H∧B0H

A0H∧B0H=10100000B–10110000B

10100000B

∧10110000B

10100000B

∴A0H∧B0H=10100000B=A0H

(8)C0H∨D0H

C0H∨D0H=11000000B–11010000B

11000000B

∨11010000B

11010000B

(9)∴C0H∨D0H=11010000B=D0H

(10)E0H⊕F0H

E0H⊕F0H=11100000B–11110000B

11100000B

⊕11110000B

00010000B

∴E0H⊕F0H==10000B=10H

1.4用十进制数写出下列补码所表示的机器数真值

48H

[X]补=48H=01001000H

∵符号位为0

∴[X]原=[X]反=[X]补=48H

∴X=72D

7FH

[X]补=7FH=01111111H

∴[X]原=[X]反=[X]补=7FH

∴X=127D

80H

根据补码的定义80H定义为-128的补码,所以80H的真值是-128。

8AH

[X]补=8AH=10001010H

∵符号位为1

∴[X]反=[X]补–1=10001001H

∴[X]原=11110110H

∴X=-118D

9FH

[X]补=9FH=10011111H

∴[X]反=[X]补–1=10011110H

∴[X]原=11100001H

∴X=-97D

A0H

[X]补=A0H=10100000H

∴[X]反=[X]补–1=10011111H

∴[X]原=11100000H

∴X=-96D

FFH

[X]补=FFH=11111111H

∴[X]反=[X]补–1=11111110H

∴[X]原=10000001H

∴X=-1D

1.5选取字长为8位,求下列十进制的原码、反码和补码

X=-45

∵X=-101101B

∴[X]原=10101101B=ADH

∴[X]反=11010010B=D2H

∴[X]补=11010011B=D3H

X=68

∵X=1000100B

∴[X]原=[X]反=[X]补=1000100B=44H

X=-3

∵X=-0011B

∴[X]原=10000011B=83H

∴[X]反=11111100B=FCH

∴[X]补=11111101B=FDH

1.6已知[X]原、[Y]原,,求[X]补+[Y]补,判断结果是否产生溢出

(1)[X]原=18H,[Y]原=2BH

∵[X]原=18H<

80H,[Y]原=2BH<

80H

∴[X]补=[X]反=[X]原=18H=00011000B

[Y]补=[Y]反=[Y]原=2BH=00101011B

00011000B

+00101011B

01000011B

01000011B=43H<

两个正数相加得正数,没有溢出

(2)[X]原=83H,[Y]原=2BH

∵[X]原=83H>

80H,[Y]原=2BH<

∴[X]原=10000011B

[X]反=11111100B

[X]补=11111101B

11111101B

100101000B

00101000B=28H<

一个正数加一个负数得正数,没有溢出

(3)[X]原=18H,[Y]原=BBH

80H,[Y]原=BBH>

[Y]原=10111011B

[Y]反=11000100B

[Y]补=11000101B

+11000101B

11011101B

11011101B=DDH>

一个正数加一个负数得负数没有溢出

 

(4)[X]原=83H,[Y]原=BBH

80H,[Y]原=BBH>

111000010B

11000010B=C2H>

两个负数相加得负数没有溢出

1.7P18

1.8P20表1-8

1.9P22-26

1.10P25表1-9

1.11P24

1.12P23

1.13P25

1.14P262)20H~2FH的16个单元

1.15P263)30H~7FH的80个单元

1.16P26表1-10

1.17P27~P28

1.18P28

1.19P28

1.20

1.21P25

1.22P23

1.23P30

1.24P32~P33

1.25P33

1.26P32~P35

1.27P34~P35

1.28T=1/fosc=1/8M=0.125*10-6s=125ns

S=2T=250ns

1个机器周期=6S=1.5us

1个指令周期=1~4个机器周期=1.5us~6us

1.29P37~P38

2.9

ORG0000H

LJMPSTART

ORG0100H

START:

LCALLINITIAL;

调用初始化子程序

MOVA,20H;

把字节地址20H单元的内容传给A,A=(20H),(20H)原来的内容保持不变。

执行结果:

A=58H;

(20H)=58H

MOVC,20H;

把位地址为20H的内容传给C,C=(20H),位地址20H单元的内容保持不变。

执行结果:

C=0;

(20H)=1

MOV21H,C;

把C的内容传给位地址21H,(21H)=C,C的内容保持不变。

执行结果:

(21H)=0

把字节地址20H单元的内容传给A,A=(20H),(20H)原来的内容保持不变。

(20)=58H

MOVA,21H;

把字节地址21H单元的内容传给A,A=(21H),(21H)原来的内容保持不变。

A=0AAH;

(21H)=0AAH

LCALLINITIAL

MOVDPL,R0;

对数据指针寄存器DPTR低8位DPL赋值,即将工作寄存器R0的的内容传给DPL,DPL=R0,RO的的内容保持不变,执行结果:

DPL=39HR0=39H

LOOP:

MOVDPH,A;

对数据指针寄存器DPTR高8位DPH赋值,即将寄存器A的的内容传给DPH,DPH=A,A的的内容保持不变,执行结果:

DPH=06HA=06H

DJNZR0,LOOP;

当R0不为0时跳转到LOOP标号所示的地方,直到R0=0时程序往下执行,此语句每执行一次R0=R0-1

INCDPTR;

DPTR加1执行结果:

dptr=063ah

LCALLINITIAL

MOV20H,B;

把寄存器B的的内容赋给字节地址20单元,(20H)=B,寄存器B的的内容保持不变执行结果:

B=0BBH;

(20H)=0BBH

MOVR0,#20H;

把立即数20H赋给工作寄存器R0,R0=20H,执行结果:

R0=20H

XCHDA,@R0;

累加器A的低四位与字节地址20H单元的内容的低四位互换执行结果:

A=0BH;

(20H)=0B6H

RRA;

累加器A右移一位00001011→10000101执行结果:

A=85H

A=0B6H;

MULAB;

执行A*B结果的低8位在A中,高8位在B中执行结果:

A=62H;

B=04H

ANLA,B;

AANLB01100010ANL00000100按位与执行结果:

A=00H;

B=04H

CLRC;

对位寄存器C清0,C=0执行结果:

C=0

ADDA,B;

执行A+B,A=A+B执行结果:

A=04H;

XCHA,21H;

累加器A中的内容与字节地址21H单元中的内容互换执行结果:

(21H)=06H

SUBBA,21H;

累加器A中的内容减去字节地址21H单元中的内容,再减去CY所得的结果送回A执行结果:

A=0A3H;

(21H)=06H

SWAPA;

累加器A的低四位和高四位的内容交换执行结果:

A=3AH;

ORL21H,A;

字节地址21H中的内容和A按位或,结果送回21H单元执行结果:

(21H)=3EH

MOVA,20H

MOVA,21H

;

为了能够看到寄存器里的具体值,现在按照题目要求初始化部分寄存器

INITIAL:

MOVA,#06H;

给寄存器A赋值A=06H

MOVB,#0BBH;

给寄存器B赋值B=0BBH

SETBC;

对位寄存器C进行置位操作,C=1

MOV20H,#58H;

给片内RAM区20H单元赋值(20H)=58H

MOV21H,#0AAH;

MOVR0,#39H;

给工作寄存器R0赋值R0=39H

MOVR1,#8CH;

RET

END

2.10

LCALLSETVALUE;

调用置数子程序

MOVR1,#20H;

取第一个数的地址,存放在R1中

MOVR2,#14H;

设置存储区中的数的个数,存放在R2中

MOVA,@R1;

从20H中读取数据,且传给A

JNBACC.7,POSITIVE;

在补码中最高位为符号位,可以通过此位来判断数的正负,正数此位为0,负数为1.如果为正数跳转到POSTITIVE进行正数处理

DECA;

如果为负数,根据补码计算法则,先减1后取反即可得原码

XRLA,#0FFH;

由于是要求绝对值,所以要对所有位取反

POSITIVE:

MOV@R1,A;

保存计算结果

INCR1;

地址加1,以便取下一个数

DJNZR2,LOOP

SETVALUE:

PUSHPSW;

对程序状态寄存器压栈

PUSH01H;

R0压栈

PUSH02H;

R1压栈

MOVR1,#20H

MOVR2,#14H

MOVA,#79H;

可以修改这个值来验证程序的正确性

LOOPSET:

MOV@R1,A

INCR1

INCA

DJNZR2,LOOPSET

POP02H;

R0出栈

POP01H;

R1出栈

POPPSW;

程序状态寄存器出栈

END

2.11

MOVR0,#20H

MOVR1,#21H

MOVR2,#02H

把21H单元中的内容传给A

RLCA;

A中的内容带C左移1位,即21H单元的中最高位移入C

MOVA,@R0;

把20H单元中的内容传给A

A中的内容带C左移1位,即21H单元的中最高位移入A,20H单元的中最高位移入C

MOV@R0,A;

把A的内容传给20H单元

MOVA,@R1;

A中的内容带C左移1位,即20H单元的中最高位移入A,21H单元的中最高位移入C

MOV@R1,A;

2.12

ORG0000H

LJMPSTART

ORG0100H

MOVA,30H;

从30H中读取要判断的数,把30H单元中的内容传给A

JZZERO;

判断A是否为0,如果为0跳到0程序

JBACC.7,MINUS;

从符号位中判断是否为负数,如果为负数跳转到负数处理程序

DECA;

正数处理程序

LJMPSAVE;

保存结果

ZERO:

MOVA,#01H

LJMPSAVE

MINUS:

INCA

SAVE:

MOV30H,A

SJMP$

END

2.13

ORG0000H

JMPSTART

ORG0100H

MOVR1,#20H;

设置单元首地址

MOVR2,#1EH;

设置循环次数,按题意设置为30

MOV@R1,#00H;

循环清0

SJMP$

2.14

LCALLSETVALUE

设置数据块中的数据首地址

MOVR2,#14H;

设置数据块中的数据个数

MOVR7,#00H;

R7为大于10的个数计数器

MOVA,@R1;

从数据块中取出数据

CLRC;

清进位位

SUBBA,#0AH;

对所取得的数据-10处理

JBACC.7,SMALL;

判断是否为负数,如果为负数就直接认为是小于10

BIG:

INCR7;

如果是大于10则,计数器加1

SMALL:

INCR1;

地址加1以便从数据块中取下下一个数据

DJNZR2,LOOP;

;

ORG0300H

PUSHPSW

PUSH01H

PUSH02H

POP02H

POP01H

POPPSW

2

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2