8085程序:加N个8位数
在本程序中,我们将了解如何使用 8085 微处理器添加数据块。
问题陈述
编写 8085 汇编语言程序,以添加 N 个 1 字节数字。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 | 增加 E,当 C 标志被设置时 | ||
F00E | 0D | SKIP | DCR C | 将 C 寄存器减 1 | |
F00F | 23 | INX H | 指向下一个位置 | ||
F010 | C2, 09, F0 | JNZ LOOP | 当零为假时,转到 LOOP | ||
F013 | 21, 00, 90 | LXIH, 9000H | 加载地址以存储结果 | ||
F016 | 77 | MOV M, A | 保存累加器内容 | ||
F017 | 23 | INX H | 增加 HL 对 | ||
F018 | 73 | MOV M, E | 存储进位 | ||
F019 | 76 | HLT | 终止程序 |
输出
地址 | 数据 |
---|---|
. . . | . . . |
9000 | DC |
9001 | 03 |
. . . | . . . |
广告