8085程序:数组中数字求和
在这个程序中,我们将学习如何使用8085微处理器添加数据块。
问题陈述
编写8085汇编语言程序,对数组中的数字进行求和,其中数组大小为N,N的值已给出。
讨论
在这个问题中,我们使用地址8000H保存块的长度。主块从地址8010H开始存储。我们将结果存储在地址9000H和9001H。9000H保存低字节,9001H保存高字节。
我们重复地从内存中读取数字,然后将其与累加器相加,当进位标志被设置时增加寄存器E的内容。初始时E被清零。
输入
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8000 | 08 |
| . . . | . . . |
| 8010 | AF |
| 8011 | 2E |
| 8012 | 7C |
| 8013 | 81 |
| 8014 | 2C |
| 8015 | BF |
| 8016 | FB |
| 8017 | 1C |
| . . . | . . . |
流程图

程序
| 地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
|---|---|---|---|---|
| F000 | 21, 00, 80 | LXI H, 8000H | 加载地址以获取数字个数 | |
| F003 | 4E | MOV C,M | 将计数值加载到C中 | |
| F004 | 21, 10, 80 | LXI H, 8010H | 将起始地址加载到HL中 | |
| F007 | AF | XRA A | 清零累加器 | |
| F008 | 5F | MOV E, A | 也清零E寄存器 | |
| F009 | 86 | LOOP | ADD M | 将内存内容与累加器相加 |
| F00A | D2, 0E, F0 | JNC SKIP | 当进位为假时,跳过下一任务 | |
| F00D | 1C | INR E | 当C标志被设置时,增加E | |
| F00E | 0D | SKIP | DCR C | 将C寄存器减1 |
| F00F | 23 | INX H | 指向下一个位置 | |
| F010 | C2, 09, F0 | JNZ LOOP | 当零标志为假时,跳转到LOOP | |
| F013 | 21, 00, 90 | LXI H,9000H | 加载地址以存储结果 | |
| F016 | 77 | MOV M,A | 保存累加器内容 | |
| F017 | 23 | INX H | 增加HL对 | |
| F018 | 73 | MOV M,E | 存储进位 | |
| F019 | 76 | HLT | 结束程序 |
输出
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 9000 | DC |
| 9001 | 03 |
| . . . | . . . |
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP