LACLL 3000H ORG 3000H RET
上边程序执行完RET指令后,PC= 2003H 10. 阅读下列程序段,在横线上填写相应的内容:
已知(R0)=20H, (20H ) =10H, (P0) =30H, (R2) =20H, 执行下面程序段后( 40H ) =45H MOV @R0 , #11H MOV A , R2 ADD A , 20H MOV PSW , #80H SUBB A , P0 XRL A , #45H MOV 40H , A
11. 阅读下列程序段,在横线上填写相应的内容:
执行下列程序段后,(P1)=___ 9BH __。 MOV P1,#5DH
CPL P1.1
CPL P1.2
CLR P1.6
SETB P1.7
12. 阅读下列程序段,在横线上填写相应的内容: ORG 0003H LJMP 2000H
ORG 000BH
LJMP 3000H
当CPU响应外部中断0后,PC的值是 2000H 13. 阅读下列程序段,在横线上填写相应的内容:
已知 ( R0 )=20H, (20H )=36H, (21H) =17H, (36H) =34H, 执行下面程序段后(R0)= 36H (R2)= D6H:
MOV A , @R0
MOV R0 , A MOV A , @R0 ADD A , 21H ORL A , #21H RL A MOV R2 , A RET
14. 阅读下列程序段,在横线上填写相应的内容:
执行下面程序段后,(R0)=__ 7FH __,(7EH)=_ 00H _,(7FH)=__ 41H _。 MOV R0,#7EH MOV 7EH,#0FFH MOV 7FH,#40H 1NC @R0 1NC R0 1NC @R0
15. 阅读下列程序段,在横线上填写相应的内容:
设(A)=38H,R0=28H,(28H)=18H,执行下面程序段后,(A)= 0E7H ORL A,#27H ANL A,28H XCHD A,@R0 CPL A
16. 阅读下列程序段,在横线上填写相应的内容: MOV R0,#data MOV A,@R0 RL A MOV R1,A RL A RL A ADD A,R1 MOV @R0,A
RET
该程序的功能是(data)×10操作
17. RAM中40H单元内存有一个十六进制数,下列程序段把这个数转换为BCD码的十进制数,BCD码的十位和个位放在累加器A中,百位放在R2中,请在横线上填写相应的内容。
ORG 2200H MOV A,_____ MOV B,#64H DIV AB MOV R2,A MOV A,_____ XCH A,B DIV AB SWAP _____ ORL A,B SJMP $ END
答案:__40H___ _#0AH____ __A___
五. 编程题
1.请使用位操作指令,实现下列逻辑操作: P1.5=ACC.2∧P2.7∨ACC.1∧P2.0
答题要点:先进行与操作,再进行或操作程序如下: MOV C,ACC.1 ANL C,P2,0 MOV 12H,C MOV,C,A CC.2 ANL C,P2.7 ORL C,12H MOV P1.5,C RET
2.在外部RAM首地址为TABLE的数据表中有10个字节数据,请编程将每个字节的最高位无条件地置1。
答题要点: MOV R2,#10 MOV DPRT,#TABLE
LOOP: MOV X A,@DPRT;取一数 ORL A,#80H;最高位置1 MOV X @DPTR,A;写回原地址 1NC DPTR;处理下一单元 DJNZ R2,LOOP RET
3.已知内部RAM 30H单元开始存放20H个数据,将其传送到外部RAM的0000H单元开始的存储区,请编程实现。 答题要点: MOV R0,#30H MOV R1,#00H MOV R2,#20H
LOOP: MOV A,@R0;取数 MOV X @R1,A;存数 1NC R0 1NC R1 DJNZ R2,LOOP RET
4.已知8个无符号数之和存于R3R4,求其平均值,结果仍存于R3R4中,请编程实现(R3为高字节)。
答题要点:利用移位指令作除8操作,程序如下: MOV R2,#3 LOOP:CLR C MOV A,R3
RRC A ;高字节除以2,末位移入C,高位补0
MOV R3,A ;暂存高字节 MOV A,R4
RRC A ;低字节除以2,高字节末位移入低字节高位 MOV R3,A DJNZ R2,LOOP RET
5. 两个字符串分别存放在首地址为42H和52H的内部RAM中,字符串长度放在41H单元,请编程比较两个字符串。若相等,则把数字00H送40H单元,否则把0FFH送40H单元。 答题要点:有一个字节不等,整个字符串不相等,所有字节相等,两字串才相等 MOV R0,#42H MOV R1,#52H LOOP:MOV A,@R0
CLR C ;不相等,FFH→40H SUBB A,@R1
JNZ LOOP1 ;相等时,比较下一字节 INC R0 INC R1
DJNZ 41H,LOOP
MOV 40H,#0 ;所有字符均相等,则两字串相等。 RET
LOOP1:MOV 40H,#0FFH RET 6. 按要求写出程序 将20H单元清零
[解] MOV 20H,#00H 或 CLR A MOV 20H, A
7. 已知在累加器A中存放一个BCD数(0~9),请编程实现一个查平方表的子程序。 [解] SQR:1NC A MOVC A,@A+PC
RET
TAB:DB 0,1,4,9,16 DB 25,36,49,64,81
8.已知变量X存于VAR单元,函数值Y存于FUNC单元,按下式编程求Y值。 ?1x?0?0x?0???1x?0 Y=? [解] MOV A,VAR CJNE A,#0,COMP
SJMP RES ;x=0,Y=0 COMP:JNC POSI ;x>0,Y=1 MOV A,#0FFH ;x<0,Y=-1 SJMP RES
POSI:MOV A,#01H RES:MOV FUNC,A RET
9. 将存于外部RAM 8000H开始的50H数据传送0010H的区域,请编程实现。 [解] MOV DPTR,#8000H MOV R0,#10H MOV R2,#50H
LOOP:MOVX A,@DPTR ;取数 MOVX @R0,A ;存数 INC DPTR INC R0
DJNZ R2,LOOP RET