MOV R0,#30H ;R0=30H MOV A,@R0 ;A=5AH MOV R1,A ;R1=5AH MOV B,R1 ;B=5AH MOV @R1,P1 ;(5AH)=7FH MOV A,P1 ;A=7FH MOV 40H,#20H ;(40H)=20H MOV 30H,40H ;(30H)=20H 解:每一条指令执行后的结果如注释字段所标。最后结果为:R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。
3-4编程题
2 片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256 ). 解 ADDIO:MOV R0,30H MOV R7,#9 MOV A,@R0 LOOP: INC R0 ADD A,@R0 DJNZ R7,LOOP MOV 30H,A RET
4 用查表法编一子程序,将R3中的BCD码转换成ASCII码.
解 MAIN: MOV A,R3 ;待转换的数送A MOV DPTR,#TAR ;表首地址送DPTR MOVC A,@A+DPTR ;查ASCII码表 MOV R3,A ;查表结果送R3 RET
TAR DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H
5 片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中. 解 START: MOV R0,#40H ;数据块首地址送R0 MOV R7,#09H ;比较次数送R7 MOV A,@R0 ;取数送A LOOP: INC R0
MOV 30H,@R0 ;取数送30H
CJNE A,30H,NEHT ;(A)与(30H)相比 NEXT: JNC BIE1 (A)≥(30H)转BIR1 MOV A,30H ;(A)<(30H),大数送A
BIE1: DJNZ R7,LOOP ;比较次数减1,不为0,继续比较 MOV 50H,A ;比较结束,大数送50H RET
第四章 4-1填空
3.设计8031系统时, P0、P2 口不能用作一般I/O口.
4.MCS-51串行接口有4种工作方式,这可在初始化程序中用软件填写特殊功能寄存器__SCON _加以选择.
5.当使用慢速外设时