1、1. 指出下列指令中划线操作数的寻址方式和指令的操作功能MOV A, #78H;立即寻址,将立即数送入累加器 AMOV A, 78H;直接寻址,将内部 RAM 78H 单元内容送累加器 AMOV A, R6;寄存器寻址,将 R6 内容送累加器 AINC R0;寄存器间接寻址,将指针 R0 指向的内部 RAM 单元内容加 1PUSH ACC;寄存器寻址,将累加器 A 的内容入栈RL A;寄存器寻址,将累加器 A 的内容左移 1 位CPL 30H;位寻址,将位变量 30H 的内容取反SJMP $;相对寻址,死循环指令MOVC A, A+DPTR;基寄存器加变址寄存器间接寻址,从程序存储器中DPTR
2、+A 对应的地址单元取数到累加器 A2. 指出下列指令中哪些是非法的?DEC DPTRMOV A, R2MOV R1, R0MOV P1.1, 30HMOV #30H, AMOV OV, 30HMOV A, A+DPTRRRC 30HRL BXRL C, 30H3. 如何将 1 个立即数 30H 送入内部 RAM 90H 单元?如何将立即数送特殊功能寄存器P1?(1) MOV R0, #90HMOV R0, #30H(2) MOV P1, #30H4. 执行下列一段程序后,试分析有关单元内容。MOV PSW, #0;MOV R0, #30H;MOV 30H, #40HMOV 40H, #50M
3、OV A, R0ADDC A, #0CEHINC R0执行结果:(R0)=31H, (30H)=40H, (40H)=50, (A)=0EH, (PSW)=81H5. 试编写一段程序,内部 RAM 40H、41H 单元内容传送到外部 RAM 2000H、2001H 单元中。MOV DPTR, #2000HMOV R0, #40HMOV A, R0MOVX DPTR, AINC R0INC DPTRMOV A, R0MOVX DPTR, A6. 试编写一段程序,根据累加器 A 的内容,到程序存储器 1000H 起始的表格中取一双字节数,送内部 RAM 50H、51H 单元。MOV DPTR, #
4、1000HPUSH ACCMOVC A, A+DPTRMOV 50H, APOP ACCINC DPTRMOVC A, A+DPTRMOV 51H, A7. 试编写一段程序,进行两个 16 位数的相减运算:6483H-56E2H 。结果高 8 位存在内部RAM 40H,低 8 位存 41H。CLR CMOV A, #83HSUBB A, #0E2HMOV 41H, AMOV A, #64HSUBB A, #56HMOV 40H, A8. 试编写一段程序,将 30H、31H 单元中存放的 BCD 数,压缩成一个字节(原 30H 单元内容为高位) ,并放入 30H 单元。MOV A, 30HSWA
5、P AORL A, 31H9. 试编写一段程序,将 30H32H 单元中的压缩 BCD 拆成 6 个单字节 BCD 数,并放入33H38H 单元。MOV SP, #60HMOV A, 30HMOV R0, #33HACALL H2ASCMOV A, 31HACALL H2ASCMOV A, 32HACALL H2ASCSJMP $H2ASC: MOV B, AANL A, #0FHMOV R0, AINC R0MOV A, BSWAP AANL A, #0FHMOV R0, AINC R0RET10. 设晶振频率为 6MHz,试编写一个延时 1ms 的子程序,并利用该子程序,编写一段主程序,在 P1.0 引脚上输出高电平宽 2ms、低电平宽 1ms 的方波信号。MOV SP, #60HLOOP: SETB P1.0ACALL DELAYACALL DELAYCLR P1.0ACALL DELAYSJMP LOOPDELAY: MOV R0, #248; 1TDJNZ R0, $; 2TNOP; 1TRET; 2T延时计算:1T+248*2T+1T+2T=500T=1ms