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 |
| . . . | . . . |
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP