8085程序求前n个自然数之和
在这个程序中,我们将学习如何计算前n个自然数之和。
问题陈述
编写一个8085汇编语言程序来计算前N个自然数之和。N的值已给出。
讨论
我们从内存地址8000H获取N的值。我们将数字N用作计数变量,在每一步中,我们计算(A + 计数)的值,并将它们存储到A中。加完之后,计数器值递减,因此完成了整个序列的计算。
如果数字是23H(35D),则总和将是(35*36)/2 = 630 (276H)
输入
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 23 |
. . . | . . . |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 21, 00, 80 | LXI H,8000H | 指向获取上限的地址 | |
F003 | 4E | MOV C, M | 将上限加载到C寄存器 | |
F004 | AF | XRA A | 清零A寄存器 | |
F005 | 47 | MOV B, A | 也清零B寄存器 | |
F006 | 81 | LOOP: | ADD C | 将C加到A |
F007 | D2, 0B, F0 | JNC SKIP | 如果CY = 0,跳过下一步 | |
F00A | 04 | INR B | 如果CY = 1,则增加B | |
F00B | 0D | SKIP: | DCR C | C减1 |
F00C | C2, 06, F0 | JNZ LOOP | 直到Z = 1,跳转到LOOP | |
F00F | 21, 50, 80 | LXI H, 8050H | 指向目标地址 | |
F012 | 77 | MOV M, A | 存储累加器内容 | |
F013 | 23 | INX H | 指向下一个位置 | |
F014 | 70 | MOV M, B | 存储高位字节 | |
F015 | 76 | HLT | 结束程序 |
输出
地址 | 数据 |
---|---|
. . . | . . . |
8050 | 76 |
8051 | 02 |
. . . | . . . |
广告