习题四
1. 一台计算机的指令系统就是它所能执行的 指令 集合。
2. 以助记符形式表示的计算机指令的程序设计语言就是 汇编 语言。
3. 按长度分,MCS-51指令有 单 字节的, 双 字节的和 三 字节的。 4.MCS-51汇编语言指令格式中,唯一不可缺少的部分是( B )。
A.标号 B.操作码 C.操作数 D.注释 5.MCS-51的立即寻址方式中,立即数前面( D )。
A.应加前缀“/”号 B.不加前缀号
C.应加前缀“@”号 D.应加前缀“#”号 6. 简述8051的寻址方式和每种寻址方式所涉及的寻址空间。 答:
寻址方式 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址 寻址空间(操作数的存放空间) 程序存储器 片内RAM低128字节、特殊功能寄存器 工作寄存器R0~R7、A、B、DPTR 片内RAM:@R0、@R1、SP 片外RAM:@R0、@R1、@DPTR 程序存储器:@A+PC、@A+DPTR 程序存储器256字节范围内:PC+偏移量 片内RAM的位寻址区(字节地址20H~2FH)、 地址能被8整除的特殊功能寄存器
7.MCS-51寻址方式中,操作数Ri加前缀“@”号的寻址方式是( A )。
A.寄存器间接寻址 B.寄存器寻址 C.基址加变址寻址 D.立即寻址
8.MCS-51寻址方式中,位寻址的寻址空间是( D )。
A.工作寄存器R0~R7 B.专用寄存器SFR C.程序存贮器ROM
D. 片内RAM的20H~2FH字节中的所有位和地址可被8整除的SFR的有效位 9.MCS-51寻址方式中,直接寻址的寻址空间是( D )。
A.工作寄存器R0~R7 B.专用寄存器SFR
C.程序存贮器ROM D.片内RAM 00H~7FH的128字节和80H~FFH中的SFR 10. 分析下面各指令源操作数的寻址方式。 MOV A,32H ;直接寻址 MOV R7,A ;寄存器寻址 MOV @R0,#0FEH ;立即寻址
MOV A,@R1 ;寄存器间接寻址 MOV DPTR,#1E00H ;立即寻址 MOVC A,@A+DPTR ;变址寻址 MOV C,20H ;位寻址 JC 10H ;相对寻址
11. 访问特殊功能寄存器和外部数据存储器,分别可以采用那些寻址方式?
11
答:访问特殊功能寄存器只能用直接寻址;访问外部数据存储器只能用寄存器间接寻址。 12. 在寄存器寻址方式中,指令中指定寄存器的内容就是 操作数 。 13. 在寻址方式中,只能使用 8 位二进制数作为直接地址。
14. 在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而操作
数的 地址 。 15. 在变址寻址方式中,以 累加器A 作变址寄存器,以 PC 或 DPTR 作基址寄存器。 16. 三种传送指令MOV、MOVC和MOVX,使用时有什么区别?
答:MOV指令用来实现单片机内部寄存器、存储单元、特殊功能寄存器之间的数据传送。 MOVC指令用来读程序存储器中的数据表。
MOVX 指令用来实现累加器A和外部数据存储器之间的数据传送。
17.执行指令MOVX A,@DPTR时,错误!未找到引用源。、错误!未找到引用源。引脚的
电平为( C )。
A.高电平,高电平 B.低电平,高电平 C.高电平,低电平 D.低电平,低电平 18. 假定累加器(A)=30H ,执行指令:“1000H:MOVC A,@A+PC”后,
把程序存储器 1031H 单元的内容送累加器 A中。
19. 假定DPTR的内容为8100H,累加器的内容为 40H,执行下列指令“MOVC A,@A+DPTR”
后,程序存储器 8140H 单元的内容送累加器 A中。 20. 单片机中PUSH和POP指令常用来( D )。
A.保护断点 B.保护现场
C.保护现场,恢复现场 D.保护断点,恢复断点 21. 假定(SP)=60H,(ACC)=30H,(B)=70H,执行下列指令:
PUSH ACC POP B
后, (SP)= 60H ,(61H)= 30H , (B)= 30H 。 22. 假定(SP)=62H ,(61H)=30H,(62H) =70H。执行指令:
POP DPH POP DPL
后, (DPTR)= 7030H ,(SP)= 60H 。 23. 假定(A) =85H,(R0) =20H,(20H) =AFH。执行指令:ADD A,@R0后,累加器 A
的内容为 34H ,CY 的内容为 1 ,AC的内容为 1 ,OV的内容为 1 。 24. 按指令的执行时间分,MCS-51指令有 1 、 2 和 4 机器周期的指令。 25. 假定(A)=0FFH,(30H)=0F0H,(R0)=4FH,(50H)=00H。执行指令序列:
INC A ;(A)=00H INC R0 ;(R0)=50H INC 30H ;(30H)=F1H INC @R0 ;(50H)=01H 后,累加器(A)= 00H ,(R0)= 50H ,(30H)= F1H ,(50H)= 01H 。 26. 假定(A)=56H,(R5) =67H。执行指令:
ADD A,R6 DA A
后,累加器 A的内容为 23H , CY 的内容为 1 。 27. 假定(A)=0FH,(R4)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH。执行指令:
DEC A ;(A)=0EH
12
DEC R4 ;(R4)=18H DEC 30H ;(30H)=FFH DEC @R1 ;(40H)=FEH 后,(A)= 0EH ,(R4)= 18H , (30H)= FFH , (40H)= FEH 。 28. 假定(A)=50H,(B)=0A0H,执行指令:“MUL AB” 后,寄存器 B的内容为 32H ,
累加器 A的内容为 00H 。 29. 假定(A) =0FBH,(B)=12H 执行指令“DIV AB” 后,累加器 A的内容为 0DH ,
寄存器 B的内容为 11H 。
30. 下列指令可将累加器A最高位置1的是( B,C,D,E )。
A.ORL A,#7FH B.ORL A,#80H C.SETB 0E7H D.ORL E0H,#80H E.SETB ACC.7
31. 假定标号L2的地址为0100H,标号L3值为0123H,即跳转的目标地址为 0123H。当执
行指令“L2:SJMP L3”时,该指令的相对偏移量(即指令的第二字节)为 21H 。 32. 在位操作中,能起到与字节操作中累加器作用的是 进位标志位C 。
33.下列指令判断若P1口最低位为高电平就转到LP,否则就执行下一句的是( B )。
A.JNB P1.0,LP B.JB P1.0,LP C.JC P1.0,LP D.JNZ P1.0,LP 34. 累加器 A中存放着一个其值小于等于 127的 8为无符号数,(CY)=0,执行 RLC A指
令后,则A中的数变为原来的 2倍 。
35. 设内部RAM中50H单元的内容为34H,请分析下列程序段,说明各指令源操作数、目的
操作数的寻址方式以及按顺序执行指令后,A、R0以及内部RAM 30H、31H、50H单元的内容各为何值?
MOV R0,#50H ;(R0)=50H MOV A,@R0 ;(A)=34H SWAP A ;(A)=43H MOV 30H,A ;(30H)=43H MOV 31H,#30H ;(31H)=30H MOV 50H,30H ;(50H)=43H
36. 试根据以下要求写出相应的汇编语言指令。
(1)将R6的高四位和R7的高四位交换,R6、R7的低四位内容保持不变。 答:MOV A, R6
MOV 30H, R7 MOV R0, #40H MOV @R0, 30H XCHD A, @R0 MOV R7, A MOV 30H, @R0 MOV R7, 30H
(2)两个无符号数分别存放在30H、31H,试求出他们的和并将结果存放在32H。 答:MOV A, 30H
ADD A, 31H MOV 32H, A
(3)将30H单元的内容左环移两位,并送外部RAM 3000H单元。 答: MOV A, 30H
13
RL A RL A
MOV DPTR, #3000H MOVX @DPTR, A
(4)将程序存储器中1000H单元的内容取出送外部RAM 3000H单元。 答:MOV A, #0
MOV DPTR, #1000H MOVC A, @A+DPTR MOV DPTR, #3000H MOVX @DPTR, A
(5)使累加器A的最高位置1。 答:SETB ACC.7
(6)使进位标志位清0 答: CLR C
(7)使ACC.4、ACC.5和ACC.6置1。 答:ORL A, #01110000B
37. 设堆栈指针SP的内容为20H,累加器A的内容为67H,内部RAM中1FH、20H单元的内容分别为25H和34H,执行下列程序段后,1FH、20H、21H、22H、23H、DPTR、SP及累加器A的内容分别是多少?
PUSH ACC ;SP=21H, (21H)=67H PUSH 1FH ;SP=22H, (22H)=25H PUSH 20H ;SP=23H, (23H)=34H SWAP A ;A=76H
MOV 1FH,A ;(1FH)=76H RL A ;A=ECH MOV 20H,A ;(20H)=ECH
POP DPL ;(DPL)=34H, SP=22H
POP DPH ;(DPH)=25H, SP=21H, (DPTR)=2534H CLR 01H ;(20H.1)=0, (20H)=ECH
习题五
1. 用于程序设计的语言分为哪几种?它们各有什么特点?
答:MCS-51单片机的编程语言可以是汇编语言也可以是高级语言(如C语言),
名称 汇编语言 特点 用符号书写指令(用助记符表示操作码,特殊符号表示操作数) 高级语言 用以英语为基础的语句编程 缺点 机器不能直接识别;程序员必须了解机器的结构和指令系统,不易推广和普及;不能移植,不具备通用性 机器不能直接识别;执行时间长 易于推广和交流;不依赖于机器,具有通用性 科学运算和数据处理 优点 较易为人们识适用场合 实时控制系别、记忆和读写 统 2. 说明伪指令的作用。
答:伪指令是指示性语句,没有对应的机器码,用来告诉汇编程序如何汇编源程序。 3. 说明常用伪指令ORG、EQU、DB、DW、END的作用。
14
答:ORG --指出后面程序块或数据块在程序存储器中存放的起始地址。
EQU --赋值命令 DB --定义字节数据 DW --定义字数据
BIT --定义位地址符号命令 END --汇编结束命令
4. 设常量和数据标号的定义为: ORG 2000H
DAT1: DB 1, 2, 3, 4, 5 DAT2: DB ‘ABCD’ N EQU $-DAT2 DAT3: DW 1200H,-2 TAB: DW DAT1, DAT3
(1)画出上述数据或地址的存储形式。 (2)写出各标号的地址。 答:
地址 2000H 2005H 2009H 200DH 内容(H) 01 02 03 04 05 41 42 43 44 12 00 FF FE 20 00 20 09 DAT1=2000H; DAT2=2005H; DAT3=2009H; TAB =200DH 5. 双字节加法。被加数放在内部RAM的30H(高字节)、31H(低字节)单元中,加数存放在内部RAM的32H(高字节)和33H(低字节)中,运算结果放存放在30H,31H中,进位存放在位寻址区的00H位。 答: ORG 0000H MOV A, 31H ADD A, 33H MOV 31H, A MOV A, 30H ADDC A, 32H MOV 30H, A MOV 00H, C
15