1. 指出下列指令中划线操作数的寻址方式和指令的操作功能
MOV A, #78H;立即寻址,将立即数送入累加器A MOV A, 78H;直接寻址,将内部RAM 78H单元内容送累加器A MOV A, R6;寄存器寻址,将R6内容送累加器A INC @R0;寄存器间接寻址,将指针R0指向的内部RAM单元内容加1 PUSH ACC;寄存器寻址,将累加器A的内容入栈 RL A;寄存器寻址,将累加器A的内容左移1位 CPL 30H;位寻址,将位变量30H的内容取反 SJMP $;相对寻址,死循环指令
MOVC A, @A+DPTR;基寄存器加变址寄存器间接寻址,从程序存储器中DPTR+A对应的地址单元取数到累加器A
2. 指出下列指令中哪些是非法的?
DEC DPTR MOV A, @R2 MOV R1, @R0 MOV P1.1, 30H MOV #30H, A MOV OV, 30H MOV A, @A+DPTR RRC 30H RL B XRL C, 30H
3. 如何将1个立即数30H送入内部RAM 90H单元?如何将立即数送特殊功能寄存器P1?
(1) MOV R0, #90H
MOV @R0, #30H (2) MOV P1, #30H
4. 执行下列一段程序后,试分析有关单元内容。
MOV PSW, #0; MOV R0, #30H; MOV 30H, #40H MOV 40H, #50 MOV A, @R0 ADDC A, #0CEH INC R0
执行结果:(R0)=31H, (30H)=40H, (40H)=50, (A)=0EH, (PSW)=81H
5. 试编写一段程序,内部RAM 40H、41H单元内容传送到外部RAM 2000H、2001H单
元中。
MOV DPTR, #2000H MOV R0, #40H MOV A, @R0
MOVX INC INC MOV MOVX @DPTR, A R0 DPTR A, @R0 @DPTR, A
6. 试编写一段程序,根据累加器A的内容,到程序存储器1000H起始的表格中取一双字
节数,送内部RAM 50H、51H单元。
MOV DPTR, #1000H PUSH ACC MOVC A, @A+DPTR MOV 50H, A POP ACC INC DPTR MOVC A, @A+DPTR MOV 51H, A
7. 试编写一段程序,进行两个16位数的相减运算:6483H-56E2H。结果高8位存在内部
RAM 40H,低8位存41H。
CLR C MOV A, #83H SUBB A, #0E2H MOV 41H, A MOV A, #64H SUBB A, #56H MOV 40H, A
8. 试编写一段程序,将30H、31H单元中存放的BCD数,压缩成一个字节(原30H单元
内容为高位),并放入30H单元。
MOV A, 30H SWAP A ORL A, 31H
9. 试编写一段程序,将30H~32H单元中的压缩BCD拆成6个单字节BCD数,并放入
33H~38H单元。
MOV SP, #60H MOV A, 30H MOV R0, #33H ACALL H2ASC MOV A, 31H ACALL H2ASC MOV A, 32H ACALL H2ASC SJMP $
H2ASC: MOV ANL MOV
INC
MOV SWAP ANL MOV
INC
RET
B, A A, #0FH @R0, A R0 A, B A
A, #0FH @R0, A R0
10.
11. 设晶振频率为6MHz,试编写一个延时1ms的子程序,并利用该子程序,编写一段主程
序,在P1.0引脚上输出高电平宽2ms、低电平宽1ms的方波信号。
MOV SP, #60H
LOOP: SETB P1.0 ACALL DELAY ACALL DELAY CLR P1.0 ACALL DELAY SJMP LOOP
DELAY: MOV R0, #248; 1T DJNZ R0, $; 2T NOP; 1T RET ; 2T 延时计算:1T+248*2T+1T+2T=500T=1ms
相关推荐: