)MOVP1R3(√)MOVDPTR0FCH(×)CPL30H(√)PUSHR0(×)MOVC0FFH(×)MOVA0D0H(√)2利用位操作指令序列实现下列逻辑运算。(1)D10HP1011HCYMOVCP10312
f(2)EACC2P27ACC1P20MOVCACC2ANLCP27ORLCACC1ANLCP20MOVEC3编写程序将内部RAM20H23H单元的高4位写1,低4位写0。分析:就是把内部RAM20H23H这4个单元写入0F0H。用一个DJNZ的循环。ORG0000HMOVR020HR0指向20H单元MOVR104H4个单元LOOPMOVR00F0H写入INCR0DJNZR1LOOP循环4次END4在m和m1单元中存有两个BCD数,将他们合并到m单元中,编写程序完成。ORG0030HMOVR0mMOVAR0将m单元中的BCD数送入累加器AANLA0FH把m单元的高4位清0SWAPA将m单元中的BCD数移入高4位MOVR0Am单元高4位为BCD数,低4位为0INCR0指向m1单元MOVAR0将m1单元中的BCD数送入累加器AANLA0FH把m1单元的高4位清0DECR0指向m单元ORLAR0将和m1单元和m单元内容合并MOVR0A合并后结果送m单元END5将内部RAM中从data单元开始的10个无符号数相加,其和送sum单元。假定相加结果小于255。编写程序完成。ORG0030HMOVR010给R0置计数器初值MOVR1data数据块首址送R1CLRAA清零LOOPADDAR1加一个数INCR1修改地址,指向下一个数DJNZR0LOOPR0减1,不为零循环MOVsumA存10个数相加和END6假定8位二进制带符号数存于R0中,要求编写一个求补(取反)程序,所得补码放入R1中。分析:对存于R0中的二进制带符号数,如果是正数,则将其变成绝对值相等的负数(用补码表示);如果是负数(用补码表示),则将其变成绝对值相等的正数。ORG0030HMOVAR0将带符号数送入ACPLA412
ORLMOVORLANLMOV
C10HF0CC11HCF0DC
fADDMOVEND
A01HR1A
末位加1补码存入R1
第4章单片机汇编语言程序设计
(一)填空题1假定A40H,R123H,(40H)05H。执行以下两条指令后,A(25H),R1(40H),(40H)(03H)。XCHAR1A23H,R140HXCHDAR1A20H,(40H)03H2假定80C51的晶振频率为6MHz,执行下列程序后,在P11引脚产生的方波宽度为(5804ms)STARTSETBP11P11置1(1周期)DLMOV30H03H30H置初值(1周期)DL0MOV31H0F0H31H置初值(1周期)DL1DJNZ31HDL131H减1,不为0重复执行(2周期)DJNZ30HDL030H减1,不为0转DL0(2周期)CPLP11P11取反(1周期)SJMPDL转DL(2周期)方波宽度215162132151621312125804s3下列程序r