8085程序用于加两个连续的数组字节
在这里,我们将了解如何使用8085添加数组中的两个连续元素。
问题陈述
编写8085程序,将数组的两个连续元素相加并将结果存储在同一位置。进位将放在另一个字节的底部。数字从8001位置开始存储。数组的大小存储在8000位置。
讨论
我们将使用一个子程序来解决此问题。该子程序将添加两个连续的数字并将它们存储到正确的位置。该子程序将被多次调用以添加所有连续的配对。该任务将遵循元素数量的一半。因此,我们获取计数,然后将其向右旋转以使其减半。我们通过进位进行旋转。如果进位已经很高,它可能会存储不同的结果,因此我们使用STC和CMC指令清除进位。
输入
地址 | 数据 |
---|---|
… | … |
8000 | 0A |
8001 | E9 |
8002 | D3 |
8003 | 61 |
8004 | AD |
8005 | 2A |
8006 | 1F |
8007 | 5D |
8008 | A6 |
8009 | A9 |
800A | 35 |
… | … |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 21, 00, 80 | | LXI H,8000 | 指向获取数组大小 |
F003 | 7E | | MOV A,M | 将数组大小加载到内存中 |
F004 | 37 | | STC | 设置进位标志 |
F005 | 3F | | CMC | 取反进位标志 |
F006 | 0F | | RRC | 通过进位右移 |
F007 | 47 | | MOV B,A | 将A存储到B中 |
F008 | 23 | LOOP | INX H | 指向下一个位置 |
F009 | CD, 11, F0 | | CALL PADD | 调用配对加法子程序 |
F00C | 05 | | DCR B | 将B减1 |
F00D | C2, 08, F0 | | JNZ LOOP | 跳转到循环 |
F010 | 76 | | HLT | 终止程序 |
F011 | 0E, 00 | PADD | MVI C,00H | 清除C标志 |
F013 | 7E | | MOV A,M | 将第一个数字从内存加载到A |
F014 | 23 | | INX H | 指向下一个位置 |
F015 | 86 | | ADD M | 将A和内存元素相加 |
F016 | D2, 1A, F0 | | JNC STORE | 如果进位未设置,则跳转到STORE |
F019 | 0C | | INR C | 否则将C加1 |
F01A | 71 | STORE | MOV M,C | 将C存储到内存中 |
F01B | 2B | | DCX H | 指向前一个位置 |
F01C | 77 | | MOV M,A | 将A存储到内存中 |
F01D | 23 | | INX H | 指向下一个位置 |
F01E | C9 | | RET | 从子程序返回 |
输出
地址 | 数据 |
---|---|
… | … |
8001 | BC |
8002 | 01 |
8003 | 0E |
8004 | 01 |
8005 | 49 |
8006 | 00 |
8007 | 03 |
8008 | 01 |
8009 | DE |
800A | 00 |
… | … |
广告