内容发布更新时间 : 2024/11/16 20:40:12星期一 下面是文章的全部内容请认真阅读。
DEC ADD INC
40H
A,@R0 R0
SUBB A,R0
MOV A,41H ;(A)=1FH ADDC A,#00H ;(A)=20H,(CY=0) INC DPTR ;(DPTR)=1FE0H MOVC A,@A+DPTR ;A<-ROM(1FE0H+20H),(A)=ABH DEC 40H ;(40H)=78H ADD A,@R0 ;(A)=23H,(CY)=1 INC R0 ;(R0)=41H SUBB A,R0 ;(A)=E1H,(CY)=1
程序运行结果:(A)=E1H,(CY)=1,(R0)=41H,(40H)=78H,(DPTR)=1FE0H,其余不变。
3-10:下列算术运算指令中哪些是合法指令,哪些是非法指令,并说明原因。 (1)ADD
Rn,#data;
(2)ADD
B,A;
(3)ADDC ACC,#30H; (5)SUBB B,A; (7)DEC (9)MUL
@R1; A,B;
(4)SUBB A,PSW; (6)INC (8)DEC
B; DPTR;
(10)DIV,AB;
合法指令有(4)、(6)、(7)、(10)。说明如下: 第4条中累加器A与寄存器PSW的带借位位的相减; 第6条中B位直接地址单元,可以执行加1操作;
第7条中间址寄存器所指向单元的内容可以进行减1操作;
第10条中除法指令只有这一种写法,即由A和B共同构成寄存器AB,作为操作数。 非法指令有(1)、(2)、(3)、(5)、(8)、(9)。说明如下:
第1条中加法指令只能以累加器A作为目的操作数,而不能使用工作寄存器; 第2条中加法指令只能以累加器A作为目的操作数,而不能使用直接地址B; 第3条,而不能使用累加器A的直接地址ACC;
第5条中减法指令只能以累加器A作为目的操作数,而不能使用直接地址B; 第8条中DPTR不能进行自减1操作;
第9条中乘法指令只能用A和B共同构成的寄存器AB作为操作数,AB中间没有“,”。
3-12:试求下列程序一次运行后有关单元中的内容。已知(R1)=73H,(CY)=0,(59H)=73H,(73H)=6BH。
CLR A
SUBB A,#59H CPL ORL RLC ANL RR XRL
A
A,R1 A
A,@R1 A A,59H
CLR A ;(A)=0
SUBB A,#59H ;A<-(A)-59H-CY,(A)=A7H这就是补码?(CY)=1 CPL A ;(A)=58H ORL A,R1 ;A<-(A)并(R1),(A)=7BH RLC A ;(A)=F7H,(CY)=0 ANL A,@R1 ;A<-(A)与(R1),(A)=63H RR A ;(A)=B1H XRL A,59H ;(A)=C2H 运行结果:(A)=C2H,(CY)=0,其余不变。 注意看有没有#
4-1:试编写位逻辑运算程序 (1) F=X(Y+Z);
; (2) F=??????
其中,F、X、Y、Z均为位变量。
4-4:试编写程序,统计片内RAM 30H~50H单元中FFH的个数,并将统计结果存入51H单元中。
4-6:根据下述功能提示,补充程序所缺指令。
(1) 求出片内RAM 20H单元中“1”的个数,并将结果存入21H单元。
MOV 21H, #0 ___________________ MOV A, 20H
LOP: ___________________ JNC LP1 ___________________ LP1: ___________________ RET
(2) 统计数据块成都的程序,设数据块的首地址为40H,该数据块以“FFH”结束,统计结果送入2FH单元中。
MOV 2FH, #0 _____________________
LOP: _____________________ CPL A _____________________
RET LP1: INC 2FH _____________________ SJMP LOP 4-1:
本题是位操作程序,由于题中指出4个位变量,所以在编程前先用伪指令为4个位变量设置存储单元,这里将F、X、Y、Z依次设置在以30H为首地址的位寻址区中,同时利用CY作为位运算的累加器,用于存储中间结果。 F EQU 30H X EQU 31H Y EQU 32H Z EQU 33H (1)编程如下: LOG1: MOV C,Y ORL C,Z ANL C,X MOV F,C RET (2)编程如下: LOG2: MOV C,Y ANL C,Z ANL C,/X CPL C MOV F,C RET 4-4
LOKF: MOV 51H,#00H MOV R0,#30H MOV R7,#33H LOP1: MOV A,@R0 CPL A JNZ LOP2 INC 51H LOP2: INC R0 DJNZ R7,LOP1 RET 4-6: (1)
MOV 21H, MOV R2, MOV A, LOP: RLC A JNC LP1 INC 21H LP1: DJNZ
R2,
RET
(2)
#0 #08H 20H
LOP
LOP: LP1: 2FH R0 LOP
5-3:根据下面给出的晶振频率和寄存器初值,确定定时/计数器的工作模式和定时时间。
(1) ????????=12MHz,TMOD=00H,TH0=63H,TL0=18H。 (2) ????????=6MHz,TMOD=03H,TH0=7EH,TL0=E7H。
(3) ????????=12MHz,TMOD=21H,TH0=C5H,TL0=68H,TH1=35H,TL1=35H。 (4) ????????=6MHz,TMOD=10H,TH0=15H,TL0=14H,TH1=48H,TL1=68H。 方式0为13位。方式1为16位。方式2和3为8位
5-4:按下列要求设置定时初值,并置相应的TH0/TL0和TH1/TL1值。
(1) ????????=12MHz,T0模式1,定时50ms。(周期为100ms,定时为周期的一半) (2) ????????=6MHz,T1模式2,定时300us。(周期为600)
(3) ????????=4MHz,T0模式3,TH0定时600us,TL0定时450us。(t3被分成两个计数器) 5-3:
(1) 定时/计数器T0工作在模式0,定时初值为X=0110001111000B=3192,定时时间为5ms。
(2) 定时/计数器T0工作在模式3,TH0的定时初值为X=7EH=126,TL0的定时初值为X=E7H=231,TH0定时时间
为130us,TL0定时时间为25us。
(3) 定时/计数器T0工作在模式1,定时初值为X=C568H=50486,定时/计数器T1工作在模式2,定时初值为
X=35H=53,T0定时时间为15ms,T1定时时间为203us。
(4) 定时/计数器T0工作在模式0,定时初值为X=0001010110100B=692,定时/计数器T1工作在模式1,定时初
值为X=4868H=18536,T0定时时间为15ms,T1定时时间为94ms。
5-4:
(1) ????????=12??????,则T=1us。T0模式1,则M=216。初值为15536=3CB0H,TH0=3CH,TL0=0B0H。 (2) ????????=6??????,则T=2us。T0模式2,则M=28。初值为106=6AH,TH0=6AH,TL0=6AH。 (3) ????????=4??????,则T=3us。T0模式3,则M=28。TH0初值为56=38H,TL0初值为106=6AH,TH0=38H,TL0=6AH。
MOV
MOV MOV CPL JNZ RET INC INC SJMP
2FH, R0, A, A LP1
#0 #40H @R0