习题(指令与编程及答案)

更新时间:2023-12-10 15:05:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

指令与编程及答案

一.单项选择题 1. ORG 0003H

LJMP 2000H ORG 000BH LJMP 3000H

2. 当CPU响应外部中断0后,PC的值是( A )。 A.0003H B. 2000H C. 000BH D. 3000H 3. MCS-51的相对转移指令的最大负跳距离为( B )。 A.2KB B. 128B C.127B D. 256B

4. 以下运算中对溢出标志0V没有影响或不受影响的运算是( )。 A.逻辑运算 B. 符号数加减运算 C. 比较数据大小运算 D. 除法运算 5. 产生PSEN信号的指令是 ( C )。

A . MOVX A ,@DPTR B. MOVX @DPTR, A C. MOVC A , @A+PC D. MOVX A, @A+DPTR 6. MOVX A , @DPTR指令中的源操作数的寻址方式是( B )。 A.寄存器寻址 B.寄存器间接寻址 C.直接寻址 D.立即寻址 7. 将MCS-51的工作寄存器置成3区的指令是( B )。 A. MOV PSW , #13H B.MOV PSW , #18H C. SETB PSW.4 ,CLR PSW.3 D.SETB PSW.3 ,CLR PSW.4 8. 指令AJMP的跳转范围是( )。

A .256B B.1KB C.2KB D.64KB 9. 6264芯片是( )。

A.E2PROM B.RAM C .Flash

ROM D .EPROM

10. 下面那条指令产生WR信号( D )。

A.MOVX A , @DPTR B.MOVC A , @A+DPTR C.MOVC A , @A+PC D.MOVX @DPTR , A

11. 执行LCALL 4000H指令时,MCS-51所完成的操作是( D )。 A.保护PC B.保护现场

C.4000H ?PC D.PC+3入栈,4000H ? PC

1

12. 下列指令中可能改变Cy的有( )。

A.INC A B.CPL A C. RLC A D.MOV A , #data

13. 假定设置堆栈指针SP的值为36H,在执行指令PUSH 20H后,SP的值为( B )。 A.36H B.37H C. 38H D.21H 14. PUSH ACC指令,MCS-51完成的操作是( A )。

A.(SP)+1?SP (ACC) ? (SP) B. (ACC) ? (SP) (SP)-1?SP C.(SP)-1?SP (ACC) ? (SP) D. (ACC) ? (SP) (SP)+1?SP 15. MOV C, 00H 指令的第二操作数寻址方式是( A )。 A.位寻址 B. 直接寻址 C. 立即寻址 D. 寄存器寻址 16. 在算术运算中,与辅助进位AC有关的是( C )。 A.二进制 B. 八进制 C. 十进制 D. 十六进制 17. 把P0口高四位变0,低四位不变,应使用指令( D )。 A. ORL P0,#0FH B. ORL P0,#0F0H C.ANL P0,#0F0H D. ANL P0, #0FH 18 ORG 0000H AJMP 0040H ORG 0040H MOV SP, #00H

当执行完上面的程序后,PC的值是( C )。 A.0040H B. 0041H C. 0042H D. 0043H 19. 在相对寻址方式中,“相对”两字是指跳转( )。 A.地址偏移量rel B. 当前指令的首地址 C.当前指令的末地址 D. DPTR值

20. 使用8051,且EA=1,则可以外扩ROM( B )。 A. 64KB B. 60KB C. 58KB D. 56KB

21. 已知(31H)=21H,(32H)=04H,执行下列指令后,31H的内容为(PUSH 31H PUSH 32H POP 31H

B )。

2

POP 32H

A.21H B. 04H C. 32H D. 31H

22. 已知(A)=00H,执行DEC A指令后,A 的内容为( B ) A.00H B. FFH C. 01H D. 0FH

23. 要用传送指令访问MCS-51片外RAM,它的指令操作码助记符应是 ( B )。

A. MOV B. MOVX C. MOVC D. 以上都行

24. LCALL存于2000H开始的地址单元中,执行完相应子程序中的返回指 ( D )。

A.2000H B. 2001H C. 2002H D. 2003H 25. 程序设计的方法一般有( D )

A.1种 B. 2种 C. 3种 D. 4种 26. 在寄存器间接寻址方式中,指定寄存器中存放的是( ) A. 操作数 B. 操作数地址 C. 转移指令 D. 地址偏移量 27. 当8031外扩程序存储器8KB时,常使用EPROM2716( ) A. 2片 B. 3片 C. 4片 D. 5片 28. 中断服务程序的最后一条指令必须是( C ) A. END B. RET C. RETI D. AJMP 29. ADC0809启动A/D转换的方式是( D )

A. 高电平 B. 低电平 C. 正脉冲 D. 负脉冲 30. MOV C, 30H源操作数寻址方式为( D )

A. 立即寻址 B. 寄存器寻址 C. 寄存器间接寻址 D. 位寻址

31. POP A 指令,MCS-51完成的操作是( A ) A. A←((SP)) SP←(SP)-1 B. SP←(SP)-1 A←((SP)) C. A←((SP)) SP←(SP)+1 D. SP←(SP)+1 A←((SP))

32. 当(RS1,RS0)=(1,1)时,工作寄存器R0对应内部RAM的( D 字节单元。

A. 00H B. 08H C. 10H D. 18H

33. 在R3初值为00H的情况下,DJNZ R3, rel指令将循环执行( ) A. 0次 B. 256次 C. 128次 D. 10次

令,PC=

) 3

34. 执行AJMP addr11指令时,MCS-51完成的操作是( ) A. 保护PC B. PC←addr11

C. 保护现场 D. PC+2入栈 PC0~10 ←addr11 35. ORG 2000H

LCALL 3000H ORG 3000H RET

上面程序执行完RET指令后,(PC)=( C )。 A. 2000H B. 3000H C. 2003H D. 3003H

36. MCS-51执行完MOV A, #08H后,PSW的( )位被置位。 A. C B.F0 C. 0V D. P

37. MCS-51的并行I/O口信息有两种读取方法,一种是读引脚,还有一种是( A A. 读锁存器 B. 读数据 C. 读A累加器 D. 读CPU 38. 对程序存储器的读操作,只能使用( D )。

A. MOV指令 B. PUSH指令 C. MOVX指令 D. MOVC指令 39.ORG 8000H

DS 08H DB 30H, 8AH

则8008H单元内容为( B )。

A. 08H B. 30H C. 8AH D. 不确定 40. MOV @R0, A指令目标操作数的寻址方式是( A )。

A. 寄存器间接寻址 B. 寄存器寻址 C. 直接寻址 D. 相对寻址 41. 已知(60H)=23H, (61H)=61H,运行下列程序62H内容为( A )。 CLR C MOV A, #9AH SUBB A,60H ADD A, 61H DA A

MOV 62H, A

A. 38H B. D8H C. DBH D. 3EH

。4

42. 设系统的晶振频率为6MHZ,下列子程序DELAY的延时时间约为( )。 DELAY: MOV R2, #0FAH L2: DJNZ R2, L2 RET

A. 900μS B. 1006μS C. 500us D. 5.501us 43. MCS-51的LJMP指令跳转空间为( )。

A. 2K B. –128~127 C. 64K D. 32K 44. 关于MCS-51的堆栈操作,正确的说法是( )。 A. 先入栈,再修改栈指针 B. 先修改栈指针,再出栈 C. 先修改栈指针,再入栈 D. 以上都不对 45. JNZ rel指令的寻址方式是( )。

A. 立即寻址 B. 寄存器寻址 C. 相对寻址 D. 位寻址

46 . 8051执行ADD A, 20H指令时,首先在P0口上出现的信息是( )。 A. 操作码地址 B. 操作码 C. 操作数 D. 操作数地址 47. 必须进行十进制调整的十进制运算( )。

A. 有加法和减法 B. 有乘法和除法 C. 只有加法 D. 只有减法 48. 执行MOVX @DPTR, A指令时,MCS-51产生( )控制信号。 A.

PSEN B.

WR C. ALE D.

RD

49. 已知单片机系统的fosc=6MHZ,执行下列延时程序的时间为( )。

DY2: MOV R6, #2 DLP1: MOV R7, #250 DLP2: DJNZ R7, DLP2 DJNZ R6, DLP1

RET

A.1ms B. 1.5ms C. 2ms D. 4ms

二.填空题(每小题1 分,共 15分

1. 执行ANL A, #0FH指令后,累加器A的高四位= 。

2. 设DPTR=(2000)H,(A)=08H,则MOVC A, @A+DPTR的操作数的实际地址为 。

5

SETB 00H ; 此句完成______功能 ANL C,00H ; (C)=______

ADD A, R0 ; 寻址方式=__________, (A)=__________

答案:FEH,00H,位地址为00H的单元置1。

0, 寄存器寻址,FEH

7. START: MOV A, 40H

MOV DPTR, #TAB MOVC A, @A+DPTR MOV 40H, A RET

TAB DB 30H, 31H, 32H, 33H, 34H DB 35H, 36H, 37H, 38H, 39H 假设40H单元中的数的范围从0—9,问: (1)这段程序完成什么功能?

(2)当执行程序前40H中的内容为6,问执行完这段程序后40H中的内容为_________。 (3) MOVC A,@A+DPTR中的寻址方式是 。(10分) 答案 :(1)这段程序完成了通过查表得到40H单元的数的ASCII码,并将结果返回40H单元。

(2)36H

(3)基址+变址的寻址方式

8. ADD3: MOV A, R5

ADD A, R2 MOV @R0 , A INC R0 MOV A, R6 ADDC A, R3 MOV @R0, A INC R0 MOV A, R7 ADDC A, R4

11

MOV @R0, A RET (1)程序完成什么功能?

(2)假设执行程序前R0=30H,程序执行结束后30H, 31H, 32H中的内容为___________,

其中_________H中存放高字节

(3)执行结束后,CY的内容为 。(10分) 答案 :①程序完成了两个3字节数的求和。

加数(1)在R7 R6 R5中, 加数(2)在R4 R3 R2 ②三个字节中和, 32H。 ③三字节和最高位的进位位。

9. 设(A)=5AH,(R1)=30H, (30H)=E0H,(CY)=1,根据程序填空。(6分)SWAP A ; (A)=_______ ADD A, #30H ; 寻址方式________ ADDC A, 30H ; (A)=______,寻址方式____ RLC A ; (A)=______ ANL A, 30H ; (A)=______

答案:A5H 立即数寻址 B5H,直接寻址 6BH

60H

10. ADDIO: MOV R0, 30H MOV R7, #9 MOV A, @R0 LOOP: INC R0 ADD A, @R0 DJNZ R7, LOOP MOV 30H, A RET

(1) 程序完成的是什么功能?

(2) 若把MOV R7,#9改成MOV R7, #4,程序功能有何变化?(10分)

12

答案 :(1)将片内RAM从30H—39H十个单元中的内容相加,和 存在30H中。 (2)不是10个数相加,是30—34H五个数相加。

11. LOOK:MOV 51H,#0 MOV R0,#30H MOV R1, #20H

LOP: MOV A,@R0 CPL A

JNZ LP1 INC 51H LP1: INC R0

DJNZ R1, LOP

RET

(1)R0的作用是什么?

(2)程序结束后51H单元中存放的内容是什么?

(3)若将 JNZ LP1这句变成JZ LP1,程序完成什么功能?(10分) 答案 :(1)数据单元指针。

(2)片内RAM30H—50H单元中内容为FFH单元的个数。

(3)将片内RAM30H—50H单元中内容为非FFH单元的总个数送给51H。

12. 设内RAM (20H)=11001011B, (24H)=01010111B,求依次执行下列 指令后的结果。(6分) LOOP: JB 00H, LP1 ;

JB 26H, LP2 ; 程序跳转到LP1还是LP2?答________ Lp1: MOV A, 20H ; (A)=_____ , 寻址方式是______ CPL A (A)= ______ ADD A, 24H (A)= ______

JZ LP3 ; 执行完此句后,程序跳到LP3还是LP2处? LP2: INC 20H LP3: ┋ 答案: Lp1

11001011B, 直接寻址

13

00110100B 10001011B

Lp2

13. ORG 2000H TAB: DB 01, 02 DW 03, 04 DS 03H ORG 2200H

MOV DPTR, #TAB MOV A, #02H MOVC A, @A+DPTR

问: (1)请填入存储器2000H~2008H单元的内容。 (2)执行完程序后A中的内容为________。 (3)DPTR是一个______字节的寄存器。(10分)答案 :

2000H 01H 02H 00H 03H 00H 04H 00H 00H 00H

(2)(A)=00H (3)2

14. START: MOV DPTR, #2010 H

MOV R7, #10H

14

MOV R0, #30H

LOOP: MOVX A, @DPTR MOV @R0, A DEC DPTR INC R0 DJNZ R7, LOOP RET

(1) 程序完成什么功能?

(2) MOVX A, @DPTR这句指令是什么寻址方式? (3) DJNZ R7, LOOP 这句指令的含义?(10分) 答案 :

(1)程序完成将片外RAM2010H单元—2001H单元的内容,依次传送到片内RAM30H—3FH单元中去。

(2)寄存器间接寻址。

(3)判断(R7)-1 是否为0,若为0,结束循环,不为0继续到LOOP那儿循环。

15. 若(A)=78H,(R0)=34H,(34H)=DCH,(56H)=ABH,(cy)=1, 求分别执行下列指令后填空。(6分)

ADDC A,@R0 ; (A)=_______________, 寻址方式是________________ ORL A, #23H ; (A)=_______________,

; 寻址方式是_______________

MOV A, 34H ; (A)=_______________ SWAP A ; (A)=_______________ 答案: 55H, 寄存器间接寻址 77H, 立即寻址 DCH, CDH.

16. MOV A, R0

CPL A JZ LABEL1 INC A JZ LABEL2

15

LABEL1: INC A

SJMP LOOP LABEL2: DEC A

LOOP: RET

问:(1)分析上面一段程序,何时转向LABEL1?何时转向LABEL2? (2)若(R0)=FFH,执行完程序后(A)=_______________H。(10分) 答案 :(1) 当R0 的值为FFH,转向LABEL1,当R0 为00时,转向LABLE2 (2)01H

17. START: MOV R0, #40H MOV R7, #09H MOV A, @R0 LOOP: INC R0

MOV 30H, @R0 CJNE A, 30H, NEXT NEXT: JNC BIEI MOV A, 30H BIEI: DJNZ R7, LOOP MOV 50H, A RET

问:(1)A中暂放_________________。

(2)R7寄存器中保存的数是_________________。

(3)最后50H中存放的是___________________。(10分) (1)最大

(2)比较的次数,共有9个数与A中的数做比较 (3) 片内RAM 40H~49H中最大的值

18. 已知外RAM(2040H)=50H,ROM(2090H)=96H,内RAM(20H)=85H,试求下列程序依次运行后有关单元的内容。(6分)

MOV DPTR , #2040H ; (DPTR)=_______________

MOVX A, @DPTR ; 寻址方式是_____________,(A)=_____________ MOV A, 20H ; (A)=______________

16

ANL A, #38H ; (A)=_______________,寻址方式是____________ 答案: 2040H

寄存器间址, 50H 85H

00H 立即寻址

19. CLR C

LOOP1: MOV A, @R0

ADDC A, @R1 DA A

MOV @R0, A INC R0 INC R1 DJNZ R7, LOOP1 CLR A MOV ACC.0, C MOV @R0, A RET

问:(1)DAA指令有何用途?

(2)若执行程序前(R0)=20H,(R1)=30H,(R7)=03H,则程序完成什么功能?程序最后

的结果放在哪些单元?(10分)

答案 :(1) DAA是对A中的数进行十进制数的调整。

(2) 将存放在 (22H) (21H) (20H)中的 BCD码与 (32) (31H)(30H) 单元中的BCD码相加,结果调整为BCD码后放回(23H)

(22H)(21H)(20H)单元中,其中高地址存放高位字节。

20. MOV R0, #20H SLOP: MOV A, @R0

JZ LP1

JB ACC.7, LP2 INC 30H LP0: INC R0

17

DJNZ 1FH, SLOP END LP1: INC 31H SJMP LP0 LP2: INC 32H SJMP LP0

问:(1)若执行前(20H)单元中的内容为F1H,则程序能不能走到LP1处? (2)执行前1FH单元中存放的是什么?

(3)执行后30H,31H,32H单元中各存放的什么数据?(10分) (1) 不能

(2)参加统计的数的个数 (3) 30H中放正数的个数 31H中放“0”的个数 32H中放负数的个数

21. 已知(30H)=58H,读程序填空。(6分) CLR C

MOV A, 30H; 寻址方式是______, (A)=______ RLC A

RLC A ; (C)=_______

ADD A, #36H ; 寻址方式是_______,(A)=_______ JZ LOOP2 ; 程序转至LOOP1还是LOOP2?答_______ Loop1: MOV A, 00H

直接寻址, 58H

1

立即寻址, 96H LOOP1

22. (30H)=15H,问执行完程序后,A,B,SP,32H,33H ,34H的内容是多少?( MOV SP, #30H XCH A, 30H MOV B, A

10分)18

ANL A, #0FH MOV 33H, A MOV A, B PUSH A SWAP A ANL A, #15H MOV 34H, A PUSH A

答案 : (A)=11H (B)=15H (SP)=32H (32H)=11H (33H)=05H (34H)=11H

23. 内部RAM30H,31H单元中存放两个无符号数,读程序回答问题。(10分) ORG 1000H START: CLR C MOV A, 30H SUBB A, 31H JC NEXT MOV A, 30H XCH A, 31H MOV 30H, A NEXT: NOP SJMP $ END

(1) 程序完成什么功能?

(2) 若(30H)=89H,(31H)=F5H,执行程序后(30H)=____________, (31H)=_ __________,(Cy)=___________。

19

答案 :(1) 比较30H与31H中无符号数的大小,小数存于30H,大数存于31H (2) (30H)=89H, (31H)=F5H, (Cy)=1

四、编程题

1.编写程序,将外部RAM2000H-201FH数据块数据,传送到片内RAM40H-5FH的对应单元中,并统计其中数据‘0’的个数,将结果放入片内60H单元中。 答案 :START: MOV DPTR,#2000H

MOV R0,#40H MOV R1, #1FH

MOV R2,#00H

LOOP: MOVX A,@DPTR

MOV @R0, A INC DPTR INC R0

CJNE A, #00H, LOOP1 INC R2

LOOP1: DJNZ R1, LOOP

MOV 60H, R2 RET

2. 已知8位要显示数字已存放在首地址为30H的片内RAM中,试将其转换为共阴显示字段码,存入首址为40H的内RAM中,已知TABD为0-9共阴字段码表首址。 ORG 1000H

TABD:DB 3FH,06H,5BH,4FH,66H

DB 6DH,7DH,07H,7FH,6FH

答案 :MOV DPTR,#TABD MOV R2,#8

MOV R0,#30H

MOV R1,#40H LOOP:MOV A,@R0

MOVC A,@A+DPTR MOV @R1,A INC DPTR INC R0 INC R1 DJNZ R7,LOOP

END

20

3. 试完成程序,求Y值,设m, n存在30H和31H中,Y存在32H中,且m?n积小于256,m/n的商为整数。

m?n (mn)

答案 : MOV A,30H

4. 求出片外RAM3000H——300FH,这16个单元数据的平均数,并将平均值放入片外

RAM3010H单元中,余数放入3011H单元中(设16个数的和小于256)。 答案 :

MOV DPTR,#3000H MOV R0,10H

MOV B,31H

CJNE A,B,LOOP1 MOV 32H,#00H LJMP BB

LOOP1: JC LOOP2 DIV AB MOV 32H,A LJMP BB LOOP2: MUL AB

MOV 32H,A

BB: END

MOV B,#00H

LOOP: MOVX A,@DPTR ADD A,B

MOV B, A INC DPTR DJNZ R0,LOOP MOV A,B MOV B,#16 DIV AB

MOV DPTR,#3010H MOVX @DPTR,A

INC DPTR MOV A, B

MOVX @DPTR,A

21

END

5. 设X由 P1口输入,Y存在外部RAM2000H单元,试按下列要求编制程序(设X?256)

X2 ; 当X ? 10时

2

Y= 2X ; 当10 ? X ? 100时

X/2 ; 当X ? 100时 答案 :MOV A, P1

CJNE A, #10, LOOP1

LOOP1: JNC LOOP2 MOV B, A MUL AB

LJMP LOOP5 LOOP2: CJNE A, #101, LOOP3 LOOP3: JNC LOOP4 MOV B, A ADD A, B LJMP LOOP5 LOOP4: MOV B, #2 DIV A, B

LOOP5: MOV DPTR, #2000H MOV @DPTR, A END

6. 片内RAM区中,有 20个补码表示的数存放在首地址为30H的单元中,请编程把其中的正数送到20H为首址的片外RAM中,负数不传送(0不是正数)。 答案 : MOV R0,#30H

MOV R1, #20H

MOV R7,#20

LOOP: MOV A,@R0

JZ NEXT

JB ACC.7,NEXT MOVX @R1,A

INC R1

NEXT: INC R0

DJNZ R7, LOOP END

7. 将61H和60H两个单元中的ASCII码转换为16进制数,并合并为一个字节存在70H单元中(60H中放的是低位)。 答案 : MOV A, 60H

ANL A, #0FH

22

MOV B, A MOV A, 61H ANL A, #0FH SWAP A

ADD A, B MOV 70H,A

END

8. 设在内部数据存储器中存放有20个字节数据,其起始地址为30H,其中可能有一个字节的内容为0AH,编写程序找出数0AH的存放地址,并送入2FH单元,若0AH不存在,则将29H单元置0。

MOV R0, #30

MOV R1, #20 LOOP: MOV A, @R0

CJNZ A, #0AH, LOOP1 AJMP JIESHU LOOP1: INC R0 DJNZ R1, LOOP MOV 29H, #00H AJMP LOOP4 JIESHU: MOV 2FH, R0 LOOP4: END

23

本文来源:https://www.bwwdw.com/article/fdz5.html

Top