第三章 31选择题 1、MOVX A.@DPTR指令中源操作数的寻址方式是(B) (A)奇存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 2.ORG0003H LJMP2000H ORG 000BH LUMP3000H当CPU响应外部中断0后,PC的值是(B) (A)0003H(B)2000H(C)000BH(D)3000H 3.执行PUSH ACC指令,MCS-51完成的操作是(A) (A)SP+1SP(ACC)(SP)(B)(ACC)(SP)SP-1一SP (B)(C)SP-1-SP (ACC)(SP)(D)(ACC) (SP)SP+1-SP 4、LCALL指令操作码地址是200OH,执行完相子程序返回指令后,PC=(D) (C)2000H(B)2001H(C)2002H(D)2003H 5、51执行完MOVA,#O8H后,PSW的一位被置位(D) (A)(A)C (B)F0 (C)OV (D)P 6、下面条指令将MCS51的工作寄存器置成3区(B) (A)MOV PSW,#13H (B)MOV PSW,#18H (B)SETB PSW.4 CLR PSW.3 (d)SETB PSW.3 CLR PSW.4 7、执行MOVX A,@DPTR指令时,MCS-51产生的控制信号是(C) (D)/PSEN (B)ALE (C)/RD (D)/WR 8、MOVC,#OOH的寻址方式是(A) (A)位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址 9、ORG0000H AJMP 0040H ORG 0040H MOV SP,OOH当执行完左边的程序后,PC的值是(C) (A)0040H(B)0041H(C)0042H(D)0043H 10、对程序存储器的读操作,只能使用(D) (A)MOV指令(B)PUSH指令(C)MOVX指令(D)MOVC指令
第三章 3-1 选择题 1、MOVX A,@DPTR 指令中源操作数的寻址方式是(B) (A) 寄存器寻址 (B)寄存器间接寻址 (C)直接寻址 (D)立即寻址 2. ORG 0003H LJMP 2000H ORG 000BH LJMP 3000H 当 CPU 响应外部中断 0 后,PC 的值是(B) (A) 0003H (B)2000H (C)000BH (D)3000H 3. 执行 PUSH ACC 指令,MCS-51 完成的操作是(A) (A) SP+1 SP (ACC) (SP) (B)(ACC) (SP)SP-1 SP (B) (C)SP-1 SP (ACC) (SP) (D)(ACC) (SP)SP+1 SP 4、 LCALL 指令操作码地址是 2000H,执行完相子程序返回指令后,PC=(D) (C) 2000H (B)2001H (C)2002H (D)2003H 5、51 执行完 MOV A,#08H 后,PSW 的一位被置位(D) (A)(A)C (B)F0 (C)OV (D)P 6、下面条指令将 MCS-51 的工作寄存器置成 3 区(B) (A)MOV PSW,#13H (B)MOV PSW,#18H (B) SETB PSW.4 CLR PSW.3 (d) SETB PSW.3 CLR PSW.4 7、执行 MOVX A,@DPTR 指令时,MCS-51 产生的控制信号是(C) (D) /PSEN (B)ALE (C)/RD (D)/WR 8、MOV C,#00H 的寻址方式是(A) (A) 位寻址 (B)直接寻址 (C)立即寻址 (D)寄存器寻址 9、ORG 0000H AJMP 0040H ORG 0040H MOV SP,#00H 当执行完左边的程序后,PC 的值是(C) (A) 0040H (B)0041H (C)0042H (D)0043H 10、对程序存储器的读操作,只能使用(D) (A) MOV 指令 (B)PUSH 指令 (C)MOVX 指令(D)MOVC 指令
3-2判断题。 4.MCS-51的相对转移指令最大负跳距是127B。(错)128B 5.当MCS-51上电复位时,堆栈指针SP-O0H。(SP-07H)(错) 6.调用子程序指令(如:CALL)及返回指令(如:RET)与堆栈有关但与PC无关。 (错)子序的转返与PC也有关(PC入栈与出栈) 7.MOV@R1,#80H(对) 5、INC DPTR(对) 6、CLRR0(错)指令系统中没有。 7、MOV@R1,#80H(对) 8、ANLR1,#OFH(错 9、ADDC A.C (错) 10、XORP1,#31H(对) 33简答题 1简述MCS-51汇编语言指令格式。 答:MCS51汇编语言格式如下: [标号:]操作码助记符操作数】[操作数2】[操作数3注释]标号是用户定义的符号,其值 代表这条指令的地址。操作码助记符是指令系统规定的代表特定指令功能的英文缩写符。每 条指令都有操作码记符。指令的操作数最多有3个,也有无操作数的指令。注释字段是用户 对程序的说明,便于对程序的阅读和理解。 简答 2MCS-51指令系统主要有哪几种寻址方式?试举例说明。 答:MCS-51指令操作数主要有以下7种寻址方式: 寻址方式 举例 立即寻址 MOV A,#16 直接寻址 MOV 20H,P1 寄存器寻址 MOV A,RO 寄存器间接寻址 MOVX A,@DPTR 变址寻址 MOVC A,@A+DPRT 相对寻址 SJMP LOOP
3-2 判断题。 4. MCS-51 的相对转移指令最大负跳距是 127B。(错)128B 5. 当 MCS-51 上电复位时,堆栈指针 SP=00H。(SP=07H)( 错 ) 6. 调用子程序指令(如:CALL)及返回指令(如:RET)与堆栈有关但与 PC 无关。 (错)子序的转返与 PC 也有关(PC 入栈与出栈) 7. MOV @R1,#80H (对) 5、INC DPTR (对) 6、CLR R0 (错)指令系统中没有。 7、MOV @R1,#80H (对) 8、ANL R1,#0FH (错) 9、ADDC A,C (错) 10、XOR P1,#31H (对) 3-3 简答题 1 简述 MCS-51 汇编语言指令格式。 答:MCS-51 汇编语言格式如下: [标号:]操作码助记符[操作数 1] [操作数 2] [操作数 3][注释]标号是用户定义的符号,其值 代表这条指令的地址。操作码助记符是指令系统规定的代表特定指令功能的英文缩写符。每 条指令都有操作码记符。指令的操作数最多有 3 个,也有无操作数的指令。注释字段是用户 对程序的说明,便于对程序的阅读和理解。 简答 2 MCS-51 指令系统主要有哪几种寻址方式?试举例说明。 答:MCS-51 指令操作数主要有以下 7 种寻址方式: 寻址方式 举例 立即寻址 MOV A,#16 直接寻址 MOV 20H,P1 寄存器寻址 MOV A,R0 寄存器间接寻址 MOVX A, @DPTR 变址寻址 MOVC A, @A+DPRT 相对寻址 SJMP LOOP
位寻址 ANL C,70H 3对访问内部RAM和外部RAM,各应采用哪些寻址方式? 答:对内部RM的寻址方式有直接寻址、寄存器间接寻址和可对位寻址的位寻址。对外部 RAM的寻址方式只能用寄存器RO/RI(8位地址)或DPTR(I6位地址)间接寻址 4设内部RAM(30H)=5AH,(5AH)-40H,(40H)=00H,端口P1=7FH,问执行下列 指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40I及5AH单元)的内容如何? MOV R0,#30H :R0=30H MOV A.@R0 :A=5AH MOV RI,A ;R1=5AH MOV B,RI :B=5AH MOV @Rl.Pl :(5AH)=7FH MOV A,P1 :A=7FH MOV 40H,#20H ;(40H)=20H MOV 30H,40 (30H=20H 解:每一条指令执行后的结果如注释字段所标。最后结果为:R0=30H,R1=5AH,A=7FH B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。 5SJMP(短转移)指令和AMP(绝对转移)指令的主要区别。 前者提供了以SJMP的下一条指令的起始地址为中心的256字节范围的转移(-128~ +127),后者的转移目标地址必须在与AJMP的下一条指令的第一字节相同的2KB区的程序 储存器中。短转移方便了可重定位编码。SJMP方便了PC可重定位编码,但转移范围小。 而ASJMP转移范围大,但存在跳区的限制,AMP指令只能位于2KB区的最后2个字节处 时,才可跳到下一个区去。因此用AJMP指令来代替SMP指令是有条件的,也就是目标地 址必须与它下面的指令存放地址在同一个2KB区域内。 34编程题 1编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中 去 解:STRAT:MOV R0.#30H MOV R7.#0FH MOV DPTR.#3000H LOOP:MOV A.@R0
位寻址 ANL C,70H 3 对访问内部 RAM 和外部 RAM,各应采用哪些寻址方式? 答:对内部 RAM 的寻址方式有直接寻址、寄存器间接寻址和可对位寻址的位寻址。对外部 RAM 的寻址方式只能用寄存器 R0/R1(8 位地址)或 DPTR(16 位地址)间接寻址。 4 设内部 RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口 P1=7FH,问执行下列 指令后,各有关存储单元(即 R0,R1,A,B,P1,30H,40H 及 5AH 单元)的内容如何? MOV R0,#30H ;R0=30H MOV A,@R0 ;A=5AH MOV R1,A ;R1=5AH MOV B,R1 ;B=5AH MOV @R1,P1 ;(5AH)=7FH MOV A,P1 ;A=7FH MOV 40H,#20H ;(40H)=20H MOV 30H,40H ;(30H)=20H 解:每一条指令执行后的结果如注释字段所标。最后结果为:R0=30H,R1=5AH,A=7FH, B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。 5 SJMP(短转移)指令和 AJMP(绝对转移)指令的主要区别。 前者提供了以 SJMP 的下一条指令的起始地址为中心的 256 字节范围的转移(-128~ +127),后者的转移目标地址必须在与 AJMP 的下一条指令的第一字节相同的 2KB 区的程序 储存器中。短转移方便了可重定位编码。SJMP 方便了 PC 可重定位编码,但转移范围小。 而 ASJMP 转移范围大,但存在跳区的限制,AJMP 指令只能位于 2KB 区的最后 2 个字节处 时,才可跳到下一个区去。因此用 AJMP 指令来代替 SJMP 指令是有条件的,也就是目标地 址必须与它下面的指令存放地址在同一个 2KB 区域内。 3-4 编程题 1 编程将片内 RAM30H 单元开始的15B 的数据传送到片外 RAM3000H 开始的单元中 去。 解:STRAT:MOV R0,#30H MOV R7,#0FH MOV DPTR,#3000H LOOP: MOV A,@R0
MOVX @DPTR,A INC RO INC DPTR DJNZ R7,LOOP RET 2片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256). 解ADDIO:MOV R0,30H MOV R7#9 MOV A.@R0 LOOP:INC RO ADD A,@RO DINZ R7,LOOP MOV 30H,A RET 3编一个程序,将累加器中的一个字符从串行接口发送出去, 解SOUT:MOV SCON,#40H 设置串行接口为工作方式 MOV TMOD.#20H ;定时器T1工作于模式2 MOV TLI,#0E8H; ;设置波特率为1200b5 MOV TH1.#0E8H SETB TRI MOV SBUF,A JNB T1$ CLB RET 4用查表法编子程序,将R3中的BCD码转换成ASC川码 解MAIN:MOV A.R3 :待转换的数送A MOV DPTR,#TAR:表首地址送DPTR
MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,LOOP RET 2 片内 RAM30H 开始的单元中有 10B 的二进制数,请编程求它们之和(和<256 ). 解 ADDIO:MOV R0,30H MOV R7,#9 MOV A,@R0 LOOP: INC R0 ADD A,@R0 DJNZ R7,LOOP MOV 30H,A RET 3 编一个程序,将累加器中的一个字符从串行接口发送出去. 解 SOUT:MOV SCON,#40H ;设置串行接口为工作方式 MOV TMOD,#20H ;定时器 T1 工作于模式2 MOV TL1,#0E8H; ;设置波特率为 1200b/s MOV TH1,#0E8H SETB TR1 MOV SBUF,A JNB T1,$ CLB T1 RET 4 用查表法编一子程序,将 R3 中的 BCD 码转换成 ASCII 码. 解 MAIN: MOV A,R3 ;待转换的数送 A MOV DPTR,#TAR ;表首地址送 DPTR
MOVC A,@A+DPTR:查ASCI码表 MOV R3.A :查表结果送R3 RET TAR DB 30H,31H,32H33H34H DB 35H,36H.37H.38H39H 5片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单 元中 解START:MOV R0,#4OH ;数据块首地址送R0 MOV R7.09H ,比较次数送R7 MOV A.@R0 取数送A LOOP: INC RO MOV 30H,@R0 :取数送30H A,30 H.NEHT;(A)与(30H)相比 NEXT JNC BIEI (A)≥(30H转BIR MOV A.30H (A)<(30H,大数送A BIEI: DJNZ R7.LOOP :比较次数减1,不为0,继续比较 MOV 50H,A 比较结束,大数送50 RET 6编一子程序,从串行接口接受一个字符。 解:START:MOV TMOD,#20H :定时器T1工作于模式2 MOV TH1.#OE8H ;设置波特率为1200bs MOV TL1,#0E8H SETB TRI 启动T MOV SCON,#50H :串行接口工作于方式1,充许接收 L1: JNB RI,LI :等待接收数据,末接收到数据,继续等待 CLR RI :接收到数据,清RI MOV A,SBUF :接收到数据送A RET
MOVC A,@A+DPTR ;查 ASCII 码表 MOV R3,A ;查表结果送 R3 RET TAR DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H 5 片内 RAM40H 开始的单元内有 10B 二进制数,编程找出其中最大值并存于 50H 单 元中. 解 START: MOV R0,#40H ;数据块首地址送 R0 MOV R7,#09H ;比较次数送R7 MOV A,@R0 ;取数送A LOOP: INC R0 MOV 30H,@R0 ;取数送30H CJNE A,30H,NEHT ;(A)与(30H)相比 NEXT: JNC BIE1 (A)≥(30H)转 BIR1 MOV A,30H ;(A)<(30H),大数送 A BIE1: DJNZ R7,LOOP ;比较次数减 1,不为 0,继续比较 MOV 50H,A ;比较结束,大数送 50H RET 6 编一子程序,从串行接口接受一个字符. 解: START: MOV TMOD,#20H ;定时器 T1 工作于模式 2 MOV TH1,#0E8H ;设置波特率为 1 200b/s MOV TL1,#0E8H SETB TR1 ;启动 T1 MOV SCON,#50H ;串行接口工作于方式 1,充许接收 L1: JNB RI,L1 ;等待接收数据,末接收到数据,继续等待 CLR RI ;接收到数据,清 RI MOV A,SBUF ;接收到数据送 A RET