单片机课后习题解答
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;执行左移一位,移入为0
;保存移出的最高位 ;比较部分余数与除数
单片机原理与应用习题解答
MOV R1, A MOV A, R2 SUBB A, R6 JB JC NDVM1: MOV R2, A 果) MOV A, R1 MOV R3, A INC R5 NDVD1:DJNZ CLR RET NDVE1:SETB RET
单片机原理与应用习题解答
MOV 21H,R4;转存21H RET 商数 除数 被除数 -除数 作减法,够减商上1 余数 -除数 再作减法,不够减商为0,并恢复减法前的余数 余数 -除数 再作减法,直至最后
单片机原理与应用习题解答
4. 定点数除法 1) 无符号二进制数除法 • 正如乘法能由一系列加法和移位操作实 现一样,除法也可由一系列减法和移位 操作实现。为了设计出除法的算法,先 分析二进制数的手算除法。下式说明两 个二进制数A=100100和B=101的手算除 法步骤:
单片机原理与应用习题解答
双字节除以20的子程序 子程序名:D-DIV 子程序功能:除以20的子程序 子程序入口:(R3)(R4)=被除数 子程序出口:(R3)(R4)=商 D-DIV: MOV R7,#08H;置计数初值 DV1: CLR C MOV A,R4;将(R3)(R4)左移1位 RLC A MOV R4,A MOV A,R3 RLC A MOV 00H,C;将移出的标志位送00H
单片机原理与应用习题解答
第三章
3-1 已知A=7AH,R0=30H(30H=A5H),PSW=80H,SP=65H, 试分析下面每条指令的执行结果及对标志位的影响。 (1) ADD A,@R0; 01111010+10100101=1,00011111 , (A)=1FH,Cy=1 ,AC=0,OV=0,P=1 (2)ADD A,#30H;01111010+00110000=10101010, (A)=AAH,Cy=0,AC=0,OV=1,P=0 (3) ADDC A,30H;01111010+10100101+1=1,00100000 (A)=20H,Cy=1,AC=1,OV=0,P=1 (4) SUBB A,@R0;01111010-10100101-1=1,11010100, (A)=D4H,Cy=1,AC=0,OV=1,P=0
ຫໍສະໝຸດ Baidu
单片机原理与应用习题解答
3-4 试分析在执行完下面的程序段后,A,R0,R1,R7,SP 以及片内RAM的一些单元中内容各是什么? MOV SP,#65H MOV R7,#5 MOV R0,#30H MOV R1,#40H LOOP:MOV A,@R1 PUSH ACC MOV A,@R0 MOV @R1,A INC INC R0 R1
DJNZ R2,LOOP
单片机原理与应用习题解答
3-10 编写能延时1s的子程序,设晶振频率为12MHz。 DELAY1S:MOV R6,#4 ;1T ;1T ;1T ;1T ;1T ;2T ;2T ;2T DL1: MOV R5,#251 DL2: MOV R4,#248 DL3: NOP NOP DJNZ R4,DL3 DJNZ R5,DL2 DJNZ R6,DL1
单片机原理与应用习题解答
• 从前面所示的手算除法中,可以看出被除数的 字长比除数和商的字长要长,一般在计算机中, 被除数均为双倍字长,即如果除数和商为双字 节,则被除数为四字节。由于商为单字长,故 如果在除法中发生商大于单字长,称为溢出。 在进行除法前,应该检查是否会发生溢出。一 般可在进行除法前,先比较被除数的高位与除 数,如被除数高位大于等于除数,则溢出,应 该置溢出标志,不执行除法。另外,从手算除 法中还可看出,如果除数和商为3位,被除数 为6位,则执行比较或减法操作时,部分余数 必须取4位,除数为3位,否则有可能产生错误。 例如第3步的比较和减法运算时,部分余数为 1000,如果只取3则为000,所以在实际编程时, 必须注意到这一点。
单片机原理与应用习题解答
【例4.15】 采用比较法的无符号双字节除 法。 功能:(R2R3R4R5)/(R6R7)→(R4R5),余数 为(R2R3)。 程序框图如图4.14所示。
单片机原理与应用习题解答
图4.13 比较除法程序框图
单片机原理与应用习题解答
图4.14 无符号双字节除法程序框图
单片机原理与应用习题解答
单片机原理与应用习题解答
(5) DA A;01111010+00000110=10000000, (A)=80H,Cy=0,其它无影响 (6) RLC A;(A)=11110101B=F5H,Cy=0, AC=0,OV=0,P=0 (7)RR A;(A)=00111101B=3DH,Cy=1, AC=0,OV=0,P=1 (8)PUSH 30H;SP=66H,(66H)=A5H (9)POP B;SP=64H,(B)=(65H) (10) XCH A,@R0;(A)=A5H,(30H)=7AH, Cy=1,OV=0,AC=0,P=0
单片机原理与应用习题解答
100100÷101=1 101 0100 000 1000 101 011 余数 部分余数 部分余数
0
1(商)
单片机原理与应用习题解答
• 可以看出,商位是以串行方式获得的,下次得 一位。首先把被除数的高位与除数相比较,如 被除数高位大于除数,则商位为1,并从被除 数中减去除数,形成一个部分余数;否则商位 为0,不执行减法。然后把新的部分余数左移 一位,并与除数再次进行比较。循环此步骤, 直到被除数的所有位都处理完为止,一般商的 字长为n,则需循环n次。这种除法上商前,先 比较被除数与除数,根据比较结果,决定商1 或0,并且只有在商为1时,才执行减法,因此 称之为比较法。根据这个算法,可画出适于计 算机编程的框图,如图4.13所示。
单片机原理与应用习题解答
CLR JB JNC
C 00H,GOU;标志位为1够减 GOU;无借位,也说明够减
SUBB A,R2;余数高位减除数
ADD A,R2,不够减,恢复余数 AJMP DV2 GOU:INC R4;够减,商上1 DV2:MOV R3,A DJNZ R7,DV1;减完?没完继续 MOV 20H,R3;转存20H MOV 21H,R4;转存21H RET
单片机原理与应用习题解答
子程序功能:多字节累加和子程序 子程序入口:(DPTR)=数据区首地址指针 子程序出口:(R3)(R4)=累加和,R3中内容为 和高字节,R4中内容为和低字节 D-ADD:CLR C LOOP:MOVX A,@DPTR ADD A,R4 MOV R4,A CLR A ADDC A,R3 MOV R3,A INC DPTR DJNZ R2,LOOP RET
RET ;2T 延时时间:((248 × 4+1+2)× 251+1+2) ×4+1+2=998995㎲
单片机原理与应用习题解答
3-12 编程实现:将30H,31H中的双字节二进制数转换为 3B压缩BCD码,并存放到40H开始的空间中。 因 为 ( a15a14…a1a0 ) =(…(0×2+a15) ×2+a14) ×2+…+a0),所以将二进制从最高位逐次左移入BCD码寄存 器的最低位,并且每次都实现(…)×2+ai的运算。 双字节16位二进制数存于(R2R3)中,(R4R5R6)为转 换完毕的压缩BCD码。 MOV MOV MOV MOV A,30H R2,A A,31H R3,A
• 说明:在这个框图中,(R2R3R4R5)为被除数, 同时(R4R5)又是商。运算前,先比较(R2R3)和 (R6R7),如(R2R3)≥(R6R7)则为溢出,置位F0, 然后直接返回。否则执行除法,这时出口F0=0。 上商时,商1采用加1的方法,商0不加1(无操 作)。比较操作采用减法来实现,只是先不回送 减法结果,而是保存在累加器A和寄存器R1中, 在需要执行减法时,才回送结果。B为循环次 数控制计数器,初值为16(除数和商为16位)。 运算结束后,(R4R5)为商,(R2R3)为余数, (R6R7)不变。在左移时,把移出的最高位存放 到MCS-51的用户标志F0中,如F0=1则被除数 (部分余数,有17位)总是大于除数,因为除数 最多只有16位,这时必然执行减法并商1。
F0, NDVM1 NDVD1 ;执行减法(回送减法结
B, NDVL1 F0 F0
;上商1 ;循环16次 ;正常出口 ;溢出
单片机原理与应用习题解答
3-9 在外部数据存储区首地址为TABLE的数据表中存有 10B的数据,编程将每个字节的最高位置1,并送回原来 的单元。 ORG 0030H MOV DPTR,#TABLE MOV R2,#10 LOOP:MOVX SETB ACC.7 MOVX INC END @DPTR,A DPTR A,@DPTR
DJNZ R7,LOOP
单片机原理与应用习题解答
结果:(A)=(34H), (R0)=34H,(R1)=44H,(R7) =0, SP=70H ,(70H)=(44H),(30H)=(40H),… (34H)=(44H)。 3-5 已知SP=62H,(62H)=50H,(61H)=30H,问执行指 令RET后,PC=?,SP=?并解释。 答:执行指令RET,从堆栈中弹出地址值给PC,栈指针减2, (62H),(61H)中的内容分别弹出PC=5030H,SP=60H 3-7 试编程求出片外RAM从2000H开始的连续20个单元的平均 值,并将结果存入内部RAM20H单元。 MOV DPTR,#2000H ACALL AVG
单片机原理与应用习题解答
NDVL1:CLR C MOV A, R5 RLC A MOV R5, A MOV A, R4 RLC A MOV R4, A MOV A, R3 RLC A MOV R3, A XCH A, R2 RLC A XCH A, R2 MOV F0, C CLR C SUBB A, R7
单片机原理与应用习题解答
子程序名:AVG 子程序功能:求20个无符号数平均值子程序 子程序入口:(DPTR)=数据区首地址指针 子程序出口:(R3)(R4)=均值 AVG: MOV MOV MOV R2,#20 R3,#00H;部分和高位字节单元清零 R4,#00H;部分和低位字节单元清零
ACALL D-ADD;调用累加和子程序 ACALL D-DIV;调用除以20的子程序 求多字节累加和子程序 子程序名:D-ADD
单片机原理与应用习题解答
3-3 已知片内 RAM 中( 30H)=64H,( 50H) =04H, 片外 RAM 中 ( 1000H ) =0FFH , ( 2004H ) =00H , 并 且 TAB=2000H,试分析顺序执行每条指令的结果。 (1) MOV R0,#30H;(R0)=30H (2) MOV A,@R0;(A)=64H (3) MOV DPTR,#1000H;(DPTR)=1000H (4) MOVX @DPTR,A;(1000H)=64H (5) MOV A,50H;(A)=04H (6) MOV DPTR,#TAB;(DPTR)=2000H (7) MOVC A,@A+DPTR;(A)=00H (8) MOV P1,A;(P1)=00H
单片机原理与应用习题解答
入口:R2R3R4R5中存放被除数,R6R7中存放除 数。 出口:商存放在R4R5中,余数存放在R2R3中。 • 程序: NDIV1:MOV A, R3 ;先比较是否发生溢 出 CLR C SUBB A, R7 MOV A, R2 SUBB A, R6 JNC NDVE1 MOV B, #16 ;无溢出,进行除法
单片机原理与应用习题解答
2. 二进制码到BCD码的转换 • 在微型计算机中,十进制数常采用BCD码表示;而 BCD码在微型计算机中又有两种形式:一种是一个字 节放一位BCD码,它适用于显示或输出,另一种是运 算及存储器中常用的压缩BCD码,一个字节放两位 BCD码。 【例4.27】 8位二进制数转换成BCD码。 功能:0~FFH范围内的二进制数转换为BCD码(0~255)。 0 FFH BCD (0 255) 入口:(A)为二进制数。 出口:(R0)为十位数和个位数地址指针(压缩的BCD码)。 • 说明:二进制数转换为BCD码的一般方法是把二进制 数除以1000、100、10等10的各次幂,所得的商即为千、 百、十位数,余数为个位数。这种方法在被转换数较 大时,需进行多字节除法运算,运算速度较慢,程序 的通用性欠佳。本程序的算法如图4.17所示。