1.指出下列指令中划线操作数的寻址方式和指令的操作功能
MOV A,#78H;立即寻址,将立即数送入累加器A
MOV A,78H;直接寻址,将内部RAM 78H单元内容送累加器A
MOV A,R6;寄存器寻址,将R6内容送累加器A
INC@R0;寄存器间接寻址,将指针R0指向的内部RAM单元内容加1
PUSHACC;寄存器寻址,将累加器A的内容入栈
RLA;寄存器寻址,将累加器A的内容左移1位
CPL30H;位寻址,将位变量30H的内容取反
SJMP$;相对寻址,死循环指令
MOVCA,@A+DPTR;基寄存器加变址寄存器间接寻址,从程序存储器中DPTR+A对应的地址单元取数到累加器A
2.指出下列指令中哪些是非法的?
DECDPTR
MOV A,@R2
MOVR1,@R0
MOVP1.1,30H
MOV#30H,A
MOVOV,30H
MOV A,@A+DPTR
RRC30H
RLB
XRLC,30H
3.如何将1个立即数30H送入内部RAM 90H单元?如何将立即数送特殊功能寄存器P1?
(1)MOVR0,#90H
MOV@R0,#30H
(2)MOVP1,#30H
4.执行下列一段程序后,试分析有关单元内容。
MOVPSW,#0;
MOVR0,#30H;
MOV30H,#40H
MOV40H,#50
MOV A,@R0
ADDCA,#0CEH
INCR0
执行结果:(R0)=31H, (30H)=40H, (40H)=50, (A)=0EH, (PSW)=81H
5.试编写一段程序,内部RAM 40H、41H单元内容传送到外部RAM 2000H、2001H单
元中。
MOVDPTR,#2000H
MOVR0,#40H
MOV A,@R0
MOVX@DPTR,A
INCR0
INCDPTR
MOV A,@R0
MOVX@DPTR,A
6.试编写一段程序,根据累加器A的内容,到程序存储器1000H起始的表格中取一双字
节数,送内部RAM 50H、51H单元。
MOVDPTR,#1000H
PUSHACC
MOVCA,@A+DPTR
MOV50H,A
POPACC
INCDPTR
MOVCA,@A+DPTR
MOV51H,A
7.试编写一段程序,进行两个16位数的相减运算:6483H-56E2H。结果高8位存在内部
RAM 40H,低8位存41H。
CLRC
MOV A,#83H
SUBBA,#0E2H
MOV41H,A
MOV A,#64H
SUBBA,#56H
MOV40H,A
8.试编写一段程序,将30H、31H单元中存放的BCD数,压缩成一个字节(原30H单元
内容为高位),并放入30H单元。
MOV A,30H
SWAPA
ORLA,31H
9.试编写一段程序,将30H~32H单元中的压缩BCD拆成6个单字节BCD数,并放入
33H~38H单元。
MOVSP,#60H
MOV A,30H
MOVR0,#33H
ACALLH2ASC
MOV A,31H
ACALLH2ASC
MOV A,32H
ACALLH2ASC
SJMP$
H2ASC:MOVB,A
ANLA,#0FH
MOV@R0,A
INCR0
MOV A,B
SWAPA
ANLA,#0FH
MOV@R0,A
INCR0
RET
10.设晶振频率为6MHz,试编写一个延时1ms的子程序,并利用该子程序,编写一段主程
序,在P1.0引脚上输出高电平宽2ms、低电平宽1ms的方波信号。
MOVSP,#60H
LOOP:SETBP1.0
ACALLDELAY
ACALLDELAY
CLRP1.0
ACALLDELAY
SJMPLOOP
DELAY:MOVR0,#248;1T
DJNZR0,$;2T
NOP;1T
RET;2T
延时计算:1T+248*2T+1T+2T=500T=1ms