您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页简单程序设计

简单程序设计

来源:尚车旅游网


简单程序设计

简单程序又称顺序程序。计算机是按指令在存储器中存放的先后次序来顺序执行程序的。

例1 求多项式y=a-b。

2

解: 设a存放在R2中,b在R3中,结果存入R6和R7中。流程图如图1所示。 程序为: MOV MOV MUL CLR SUBB MOV MOV SUBB MOV

END

A, R2 ;A←a B, A AB C A, R3 R7, A ;R7←结果的低8位

A, B

A, #00H ;高八位减进位位 R6, A

开始

B←100

A/B

R7←(A)

A←(B) B←10

A/B

结束

A7~4←(A)3~0 A3~0←(B)

图2 例2流程图

例2 单字节十六进制数转换为BCD码。

解: 单字节十六进制数在0~255之间,将其除100后,商即百位数,

余数除以10,商为十位数,余数即个位数。

设单字节数在累加器A中,转换结果的百位数放在R3中,十位、个位则放在A中。流程图如图2所示。该程序写成子程序形式,程序为:

HBCD:

MOV DIV MOV MOV XCH DIV SWAP A ADD RET

例3 无符号双字节乘法。

解: 设乘数和被乘数分别放在R2、R3和R6、R7中,计算结果放入R4、R5、R6、R7中。双字节无符号数的乘法可以采用重复加法的方法进行。MCS-51单片机有乘法指令,采用乘法指令的程序流程图如图3所示。

(R2

× (R6

R3)

R7)

A, B B,#100 AB R3,A A,#10 A,B A,B

;R3←立即数 ;分离十位和各位数 ;分离出百位数

(R3*R7)H (R3*R7)L

(R2*R7) H (R2*R7)L (R3*R6) H (R3*R6)L + (R2*R6) H (R2*R6)L

R4 R5 R6 R7 程序为:

MUL:

MOV MOV

MUL XCH MOV MOV MUL

ADD

MOV

A, R3 B, R7 AB A, R7 R5, B B, R2 AB A, R5 R4, A

CLR ADDC MOV MOV MOV

A A, B R5, A A, R6 B, R3 AB A, R4 A, R6 A, B A, R5 R5, A F0, C A, R2 AB A, R5 R5, A A ACC.0, C, F0 A, B R4, A

C

MUL ADD XCH XCH ADDC MOV MOV MOV MUL ADD MOV CLR MOV MOV ADDC MOV RET

此程序的特点是除使用用户标志外,相关单元只使用了标志位。在程序中多次使用字节交换指令,中间运算结果只使用R2~R7寄存器,使改变内容的单元尽量少。

该方法很容易推广到多字节无符号数的乘法运算中。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务