您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页微机原理第五版第三章习题答案.doc

微机原理第五版第三章习题答案.doc

来源:化拓教育网
]、2题略,看书!

3. 51系列单片机有哪儿种寻址方式?对内部RAM的。〜7FH操作有那些寻址方式?对SFR 有哪些寻址方式?

答:51单片机共有:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,基址寄存器加 变址寄存器间接寻址和相对寻址等6中寻址方式。

对内部RAM的0〜7FH操作可通过直接寻址,寄存器间接寻址 对SFR只能通过直接寻址访问

对内部RAM的80H〜OFFH的操作只能通过寄存器间接寻址。(因为SFR的地址也在80H〜 OFFH的范围内,故通过采用互不相同的寻址方式,来区分该段地址是指向内部RAM还是 指向SFR)

4. 请写出下列功能对应的数据传送指令

⑴ MOV A,R0; MOV A,40H; MOVA,@RO; MOV A,#80H

(2MOV R0,78H; MOV R6,A; MOV R7,#88H; ) ⑶MOV 50H,A; MOVP1,70H; MOVP1,R3; MOVP1,#80H

(4MOV @R0,A; MOV @R0,30H; MOV @R0, #30H ) MOV DPTR,#8000H (5)

(6) PUSH ACC (不能写成PUSH A,必须用累加器的符号ACC,因为此处是直接寻址);

PUSH DPH; POPDPH; POP ACC

(7) XCH A,@R0; XCHD A,@R0

5.写出指令功能

(1) (2) (3) (4) (5) (6) ((R1))—A; (50H)—A; (Rl)—A (30H)->R7; (A)->R4; 3-R7 (A)->50H; (4OH)->P1; (R3)-P1 (A)->(Rl); (30H)->(Rl); 5OH->(R1) 9000H-DPTR

(ACC)-堆栈;(B)—堆栈; 堆栈一DPL

⑺ A - — ((R1)), (A)o~3 - - ((R1 ))o~3 (8) ((P2)(R0))—A; ((A)+(PC)) — A; ((A)+(DPTR))—A; ((DPTR))->A;

注意:MOVX指令访问的是外部RAM数据存储器单元;MOVC指令访问 的是程序存储

6.指出下列指令的寻址方式和操作功能 指令 INC @R1 INC 30H INCB RLA CPL 40H SETB 50H CLR 70H 寻址方式 寄存器间接寻址 直接寻址 直接寻址 寄存器寻址 直接寻址(位地址) 直接寻址(位地址) 直接寻址(位地址) 功能 ((R1))+1-(R1) (30H)+l-30H (B)+l—B A中的内容左环移 (28H).O-(28H).O 1-*(2AH).O O-(2EH).O 7. 指出下面的程序段功能 (1) MOV DPTR,#8000H

MOV A,#5

MOVCA,@A+DPTR

功能:(8000H+5)f A,即(8005H) —A (2) ORG 2000H

MOV A,#80H

;2字节指令

MOVCA,@A+PC ;1 字节指令

功能:因为(PC)=2003H,故程序段功能为(2083H)-A 8. 指出下列指令(指令省略)的功能 (1) (A)+(R0)-A

(A)+((R0))f A (A)+(30H)-* A (A)+80H-A 9. 指出下列程序段功能 MOV A,R3 MOV B,R4 MULAB MOV R3,B MOV R4,A

功能:(R3)*(R4)f R3R4,即将R3, R4中的两个单字节数据相乘,结果的低字节送R4,结果 的高字节送R3o 10. 指出指令功能: ANLP1,#OF7H

;清零P1.3锁存器,P1 口的其它位保持不变

ORLP1,#8 ;将?1.3锁存器置1, P1 口的其它位保持不变 XRLP1,#8 ;将?1.3锁存器取反,P1 口的其它位保持不变

(2) (A)+(R0)+(CY)-A (A)+((R0))+(CY)f A (A)+(30H)+(CY)f A

(A)+90H+(CY)-A

〃.指出下列程序段功能

MOV R(),#50H MOVA,@RO ANLA,#0F0H SWAP A MOV 60H,A MOV A,@R0 ANLA,#0FH MOV61H,A

功能:将内部RAM中的50H单元的高半字节及低半字节内容拆成两个单字节 内容分别放入60H,61H单元中;其中50H的高半字节放入60H的低半字节,50H 的低半字节放入61H的低半字节中,60H及61H单元的高半字节均为0。 也可用符号描述如下:

0000 (50H).7 〜4—60H ,0000 (50H).3 〜o—61H

或举例说明如下:

若程序执行前(50H)=7CH,则执行该程序段后,(60H)=07H,(61H)=0CH

12.指出执行下面的程序段后,累加器A的内容: MOV A,#3

MOV DPTR,#0A000H MOVCA,@A+DPTR ORG 0A000H

DB '1234567ABCDEF'

结果:(ACC) = 34H,即'4'的 ACSII 码

13.设(SP)=74H,指出执行卜画程序段后,(SP)值以及堆栈中的75H, 76H, 77H单元的内容。 MOV DPTR,#0BF00H ;0BF00H-*DPTR,即 OBFH-DPH, OOH-DPL MOV A,#50H PUSH ACC PUSH DPL PUSH DPH 结果:(SP)=77H, 14.指出程序段功能

;50Hf ACC

;(SP)+l-> SP, (ACC)-* (SP) ;(SP)+ —SP,(DPL)-(SP) ;(SP)+ —SP,(DPH)-(SP)

(75H)=50H, (76H)=00H, (77H)=0BFH

MOV C,0 ANL C,20H ORL C,30H

;(20H).0-CY,注意该指令中的0即指位地址00H ;(CY)A(24H).0->CY ;(CY)V(26H).0->CY

CPLC ;(CY)->CY MOV P 1.0 ,C ;(CY)一P1.0

功能:实现逻辑函数:P1.0 = (2OH).OA(24H).OV(26H).O

15. 画出下而子程序框图,指出子程序功能 SSS:

MOV R7,#10H MOV R0,#30H MOV DPTR,#8000H

SSL: MOVA,@RO MOVX @DPTR,A INC DPTR INC RO DJNZ R7,SSL RET

16— R7 30H — RO 8000H-DPTR ((R0))-A (A)-> (DPTR) (DPTR)+1 一 DPTR (R0)+l-R0

Ji [ 返回?

(简单点也可描述为:将内部RAM中30H开始的16个单元中的内容复制到外部RAM区

功能:将内部RAM数据存储器中30H单元开始的连续16个单元中的数据危制到外部数据 存储器中8000H单元开始的连续16个存储单元中去。

8000H开始的16个单元中)。 下划线标出的内容为关键词,即考试时候的得分点,七人 16. 已知内部RAM 中的30H~32H 内容为 12H,45H,67H (即00010010,01000101,01100111) 请写出下面的子程序执行后30H-32H的内容,并画出框图。

RRS:

MOV R7,#3 MOV R0,#30H CLRC

RRLP: MOV A,@RO

RRC A MOV @R0,A INC RO DJNZ R7,RRLP

RET

解:该子程序的功能为:将RAM中的30H~32H内容右移一位,其中30H的最高位移入0, 32H

的最低位移出并送入CY中。

所以子程序执行后 30H〜32H 的内容为 09H,22H,0B3H (即 00001001,00100010,10110011) 框图:

3-R7 30H-R0 0-CY

((R0)) 一 A A带进位右环移 (A)f(R0) (R0)+l-R0 (R7)-l=0?

厂返回二

17. 指出下而程序段功能 MOV C,P3.() ORL C,P3.4 CPL C MOV F0,C MOV C,20H ORL C,50H CPL C ORL C,F0 MOV P1.0,C

解:实现逻辑等式 P1.0=(P3.0V P3.4) A ((24H).OV(2AH).O )

18. 指出下列指令中哪些是非法的 解:非法指令有以下儿条 (2) DEC @DPTR (3 ) MOV A, @R2 (5) MOV Pl.0,0 (8) RR 20H

(9) RLC 30H (10) RLB

19. 指出下而子程序功能: SSS: SSL:

MOV R0,#40H CLRA XCHDA,@R0 XCHA,@R0 SWAP A XCHA,@R0 INC RO

CJNE RO, #43H, SSL MOV R2,A RET

功能:将内部RAM中40H〜42H单元的内容右移四位(即右移半字节),40H的高四位移 入4个0, 42H的低四位移入R2的低四位。

假定初始条件(40H)=12H,(41H)=34H,(42H)=56H;则执行该子程序后,结果为 (40H)=01H, (41H)=23H, (42H)=45H, (R2)=06H

20. 指出下而子程序中何条指令的功能,画出程序框图,指出子程序的功能 SSS:

MOV R7,#4 MOV R2,#0

SSLO: MOV R0,#30H

MOV R6,#3 CLRC

SSL1: MOVA,@RO ;内层循环,借助带进位右移完成30H〜32H右移一位 RRC A ; 30H最高位

移入0, 32H最低位移入CY位 MOV @R0,A INC RO DJNZ R6,SSL1

MOV A,R2 ;内层循环结束后,将CY位中的32H最低位移入R2最高位 RRC A MOV R2,A

DJNZ R7,SSL0;外层循环4次,完成30H~32H位元右移四位,移出内容送入R2 RET

功能:将内部RAM中30H〜32H单元的内容右移四位,30H的高四位移入4个0, 32H的 低四位移入R2的高四位。

假定初始条件(30H)=12H,(31H)=34H,(32H)=56H;则执行该子程序后,结果为 (30H)=01H, (31H)=23H, (32H)=45H, (R2)=60H

注意:该题与19题基本一样,19题在MOV R2,A前增加一条SWAP A指令后,则两题的 功能完全一样。这种对应关系可参见书本例3.48与例3.50(两个例子均是三字节内容左移4 位)。很显然,20题与例3.50提供的算法更灵活,可适用与n字节内容右移(左移)m位 的情况。 21. (1)编写程序段,功能为30H (高)~32H (低)和33H (高)〜35H (低)两个三字节 无符号数相加,

结果写入30H (高)~32H (低),设三字节数相加时无进位。

法1: TADD: MOV R0,#32H MOVR1,#35H MOV R7,#3 CLRC TADD1: MOVA,@R0 ADDC A,@R1 MOV @R0,A DEC RO DEC R1 DJNZ R7,TADD1 法2: TADD: MOV R0,#32H MOVR1,#35H CLRC TADD1: MOVA,@RO ADDC A,@R1 MOV @ RO,A DEC RO DECR1 CJNE RO,#2FH,TADD1 21. (2)试编写一子程序,将内部RAM中30H~32H的内容左移1位,即:

30H

| CY | 参见例3.50

RLC13: MOV R0,#32H MOV R6, #3 CLRC LOOP: MOVA,@RO RLCA

MOV @ RO,A DEC RO DJNZ R6,LOOP RET

;别忘了,子程序需加条RET指令 J —

31H

32H —

0

22. 子程序,实现(A)—(30H)f(31H)—(32H) —……一(3EH)—(3FH)—丢失 BMOV: MOV R0,#30H

MOV R7,#16

MOV3FH,A ;将0)保存在3FH中,最后一次交换时换回,即(A)可保持不变

LOOP: XCH A,@R0 INC RO DJNZ R7,LOOP RET

23.30H(高)〜32H(低)中的压缩BCD码转换成6位单.字节BCD码存放到33H(高)~38H(低)。 即若(30H)=45H, (31H)=67H, (32H)=H,则转换成(33H)=04H, (34H)=05H, (35H)=06H, (36H)=07H, (37H)=08H, (38H)=09H 法一:

CHG12: MOV R0,#30H M()VR1,#33H MOV R7,#3 LOOP: M()VA,@R0

MOV B,#10H ;45H/10H=04H+05H,商 04H 在 ACC 中,余数 05H 在 B 中 DIV AB MOV@R1,A INC R1 MOV@R1,B INC R1 INC RO DJNZ R7,LOOP RET

法二:

CHG12: MOV R0,#30H

MOVR1,#33H MOV R7,#3

LOOP: MOVA,@RO

ANL A,#0F0H SWAP A MOV@R1,A INC R1 M()VA,@R0 ANLA,#0FH MOV@R1,A INC R1 INC RO DJNZ R7,LOOP RET

24. 33H (高)〜38H(低)中的6位单字节BCD码转换成压缩BCD码存放到40H(高)~42H (低)

单元中。

即若(33H)=04H, (34H)=05H, (35H)=06H, (36H)=07H, (37H)=08H, (38H)=09H,则转换成 (40H)=45H, (41H)=67H, (42H)=H CHG21: MOV R0,#33H

MOVR1,#40H MOV R7,#3

LOOP: MOVA,@RO

SWAP A INC RO

ORLA,@RO;该处也可用ADD A,@R0 gJc XCHD A,@R0,都能达到同样效果 MOV@R1,A INC RO INC R1 DJNZ R7,LO()P RET

25. 子程序,内部RAM中的30H~4FH单元的内容传送到外部RAM中7EOOH~7E1FH单元 法一:

XMV: MOV R0,#30H

MOV DPTR,#7E00H

LOOP: MOVA,@R0

MOVX @DPTR,A INC RO INC DPTR

CJNE RO,#50H,LOOP

RET

法二:

XMV: MOV RO , #30H

MOVP2,#7EH; P2输出外部RAM的高8位地址

MOVR1,#OOH; R1作为地址指针,指向外部RAM的低8位地址 MOV R7 , #32;

LOOP: MOVA,@RO

MOVX @R1,A INC RO INC R1

DJNZ R7 , LOOP RET

26. 子程序实现:(R2R3) * (R4) -R5 R6 R7

算法:同一般的乘法规则,先将被乘数低字节(R3)乘以乘数(R4),得部分积X,部分积X 的低字节XL放入R7,部分积X的高字节XH放入R6;被乘数高字节(R2)乘以乘数(R4), 得部分积Y;部分积Y的低字节YL与R6中的XH相加后放入R6,部分积Y的高字节 YH加上进位后放入R5o

(R2) (R3) X (R4)

XHXL

+) YH YL

R5 R6 R7

30H〜4FH单元,总计32个(或写成16进制形式:20H)

NMUL: MOV A,R3

MOV B,R4

MUL

MOV MOV MOV MOV

R7,A R6,B A, R2

R4

MUL

A,R6

MOV R6,A MOV A, B ADDC A, #0 MOV R5,A

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务