1.MCS-51指令系统按功能分为几类?具有几种寻址方式?他们的寻址范围如何? 答:
① 按功能分为5类,分别是: 数据传送类、算术操作类、逻辑操作类、控制转移类和位操作类;② 具有7种寻址方式;
③ 立即寻址,寻址范围是程序存储器;
直接寻址,寻址范围是内部RAM低128字节和高128字节; 寄存器寻址,寻址范围是四组工作寄存器R0~R7;
寄存器间接寻址,寻址范围是内部RAM的低128和外部RAM低64K可寻址空间;
基址寄存器加变址寄存器间接寻址,寻址范围是程序存储器; 相对寻址,寻址范围是以下一条指令为相对地址的-128~+127字节范围内;
位寻址,寻址范围是可位寻址空间,包括内部RAM的可寻址位,特殊功能寄存器中的可寻址位。
2.设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A,R0,和内部RAM中50H、51H单元的内容为和值?答:
MOV A,59H ; (A)=(59H)=50HMOV R0,A ; (R0)=50HMOV A,#00 ; (A)=00
MOV @R0,A ; ((R0))=(50H)=00MOV A,#25H ; (A)=25HMOV 51H,A ; (51H)=25HMOV 52H,#70H ; (52H)=70H
执行下列程序段后:(A)=25H,(R0)=50H, (50H)=00、(51H)=25H
3.PSW中Cy与OV有何不同?下列程序段执行后(Cy)=?(OV)=?。
MOV A,#56H ADD A,#74H 答:
Cy—进位、借位标志位;OV—溢出标志位。
MOV A,#56H ;(A)=56H=0101 0110 B
ADD A,#74H ;(A)=56H+74H=0CAH=1100 1010B ,程序执行后:(Cy)=0(OV)=1
4.MOVC A,@A+DPTR与MOVX A,@DPTR指令有何不同?答:
① MOVC A,@A+DPTR ;寻找的操作数在程序存储器中,地址是:(A)+(DPTR);
② MOVX A,@DPTR ;寻找的操作数在外部数据存储器中,地址是:(DPTR)。
5. AJMP、LJMP、SJMP指令功能上有何不同?答:
相同之处,都是无条件转移指令。
① AJMP addr11 ;下调指令为基准的2KB范围内的跳转指令。
② LJMP addr16 ;转移的目标地址可以在64KB程序存储器的任何地方。
③ SJMP rel ;下调指令为基准的-128B~+127B范围内的短跳转指令。
6.设堆栈指针SP中的内容为60H,内部RAM中30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?PUSH 30HPUSH 31HPOP DPLPOP DPH
MOV 30H,#00HMOV 31H,#0FFH答:
PUSH 30H ;(61H)= (30H) = 24HPUSH 31H ; (62H) = (31H) = 10HPOP DPL ; (DPL) = (62H) = 10HPOP DPH ; (DPH) =(61H)= 24HMOV 30H,#00H ; (30H) = 00H
MOV 31H,#0FFH ; (31H) = 0FFH
程序执行后:(61H)= 24H, (62H) = 10H, (30H) = 00H, (31H) =0FFH,(DPTR) = 2410H
7.试分析下列程序段,当程序执行后,位地址00H和01H中的内容将为何值?P1口的8条I/O线为何状态?
CLR C
MOV A,#66HJC LOOP1CPL CSETB 01H
LOOP1: ORL C,ACC.0
JB ACC.2,LOOP2LOOP2: MOV P1,A. . .
答: CLR C ; (Cy)=0
MOV A,#66H ; (A) = 66H = 0110 0110 B
JC LOOP1 ; 因 此时(Cy)=0 ,所以不跳转CPL C ; (Cy) = 1SETB 01H ; (01H)= 1
LOOP1: ORL C,ACC.0 ; (Cy) =(Cy)∨(ACC.0) = 1
JB ACC.2,LOOP2 ; 因(ACC.2) = 1
LOOP2: MOV P1,A ; (P1)= 0110 0110 B8.要完成以下的数据传送,应如何用MCS-51指令实现?⑴ R1的内容传送到R0;
⑵ 片外RAM 20H单元的内容送R0;
⑶ 片外RAM 20H单元的内容送片内RAM 20H单元;⑷ 片外RAM 1000H单元的内容送片内RAM 20H单元;⑸ ROM 2000H 单元的内容送R0;
⑹ ROM 2000H 单元的内容送片内RAM 20H单元;⑺ ROM 2000H 单元的内容送片外RAM 20H单元。答:
⑴ R1的内容传送到R0; MOV A,R1 MOV R0,A
⑵ 片外RAM 20H单元的内容送R0;
MOV R1,#20H MOVX A,@R1 MOV R0,A
⑶ 片外RAM 20H单元的内容送片内RAM 20H单元; MOV R1,#20H MOVX A,@R1 MOV 20H,A
⑷ 片外RAM 1000H单元的内容送片内RAM 20H单元; MOV DPTR,#20H MOVX A,@DPTR MOV 20H,A
⑸ ROM 2000H 单元的内容送R0;
MOV DPTR,#2000HCLR A
MOVC A,@A+DPTR MOV R0,A
⑹ ROM 2000H 单元的内容送片内RAM 20H单元;
MOV DPTR,#2000HCLR A
MOVC A,@A+DPTR MOV 20H,A
⑺ ROM 2000H 单元的内容送片外RAM 20H单元。
MOV DPTR,#2000HCLR A
MOVC A,@A+DPTR MOV R0,#20H MOVX @R0,A
9.分析以下程序每条指令执行的结果: MOV A, #25H ; (A) = 25HMOV R1,#33H ; (R1) = 33HMOV 40H,#1AH ; (40H) = 1AHMOV R0,40H ; (R0) = 1AH
ADD A,R1 ; (A) = 25H + 33H = 58H
ADDC A,@R0 ; (A) = 58H + (1AH) + (Cy) = 58H ADDC A,40H ; (A) = 58H + 1AH + (Cy) = 72H10.设A=83H,R0=17H,(17H)=34H,执行下列程序后,(A) = ?
ANL A,#17H ; (A) = 1000 0011B∧0001 0111B =0000 0011B
ORL 17H,A ; (17H) = 0011 0100B∨0000 0011B =0011 0111B
XRL A,@R0 ; (A) = 0000 0011B⊕0011 0111 = 00110100B
CPL A ; (A) = 1100 1011B
11.两个4位BCD码数相加,被加数和加数分别存于30H、31H和40H、41H单元中(次序为千位、百位在低地址中,十位、个位在高地址中),和数放在50H、51H、52H中(52H用于存放最高位的进位),试编写加法程序。
解: ORG 00H
MOV 30H, #12H ; MOV 31H, #34H ; MOV 40H, #56H ; MOV 41H, #78H ;
MOV A, 31H ; 取被加数十个位
ADD A, 41H ; 相加,(A) = (31H) + (41H)DA A ; 十进制调整
MOV 51H,A ; 存十位个位运算结果MOV A, 30H ; 取被加数千百位
ADDC A, 40H ; 相加,(A) = (30H) + (40H)DA A ; 十进制调整MOV 50H,A ; 存千位百位运算结果CLR A ; 清A
ADDC A,#0 ; 将进位加到A中MOV 52H, A ; 存进位SJMP $
12.试编写一程序,查找内部RAM单元的20H~50H中是否有0AAH这一数据,若有,则将51H单元置为01H,若没有,则使51H单元置0。解: ORG 00H
MOV 30H, #0AAH ; MOV R1, #31H ; MOV R0, #20H ; BIJIAO: MOV A, @R0
CJNE A, #0AAH , LOOP; MOV 51H,#01H
SJMP JIESHU LOOP: INC R0
DJNZ R1,BIJIAO MOV 51H,#00HJIESHU :SJMP $
因篇幅问题不能全部显示,请点此查看更多更全内容