把0、5、10、15、…、5*n、…155依次存放于首址为40H的32个内部存储器单元中
时间: 2023-10-20 14:15:09 浏览: 204
首先,我们需要确定每个数应该存放在哪个内部存储器单元中。由于每个数占用2个字节的存储空间,我们可以将奇数位置作为低字节,偶数位置作为高字节。因此,第一个数0应该存放在40H和41H两个单元中,第二个数5应该存放在42H和43H两个单元中,以此类推。
下表展示了每个数应该存放的内部存储器单元地址。
| 序号 | 数字 | 地址(低字节) | 地址(高字节) |
| --- | --- | --- | --- |
| 1 | 0 | 40H | 41H |
| 2 | 5 | 42H | 43H |
| 3 | 10 | 44H | 45H |
| 4 | 15 | 46H | 47H |
| 5 | 20 | 48H | 49H |
| 6 | 25 | 4AH | 4BH |
| 7 | 30 | 4CH | 4DH |
| 8 | 35 | 4EH | 4FH |
| 9 | 40 | 50H | 51H |
| 10 | 45 | 52H | 53H |
| 11 | 50 | 54H | 55H |
| 12 | 55 | 56H | 57H |
| 13 | 60 | 58H | 59H |
| 14 | 65 | 5AH | 5BH |
| 15 | 70 | 5CH | 5DH |
| 16 | 75 | 5EH | 5FH |
| 17 | 80 | 60H | 61H |
| 18 | 85 | 62H | 63H |
| 19 | 90 | 64H | 65H |
| 20 | 95 | 66H | 67H |
| 21 | 100 | 68H | 69H |
| 22 | 105 | 6AH | 6BH |
| 23 | 110 | 6CH | 6DH |
| 24 | 115 | 6EH | 6FH |
| 25 | 120 | 70H | 71H |
| 26 | 125 | 72H | 73H |
| 27 | 130 | 74H | 75H |
| 28 | 135 | 76H | 77H |
| 29 | 140 | 78H | 79H |
| 30 | 145 | 7AH | 7BH |
| 31 | 150 | 7CH | 7DH |
| 32 | 155 | 7EH | 7FH |
接下来,我们使用汇编语言编写程序,将这些数字存储到对应的内部存储器单元中。
```
ORG 0000H ; 程序起始地址为0000H
MOV DPTR, #0040H ; DPTR指向40H
MOV R0, #0 ; R0计数器清零
MOV R1, #0 ; R1存储器地址低字节
MOV R2, #1 ; R2存储器地址高字节
LOOP:
MOV A, R0 ; A寄存器存储计数器值
MUL AB, #5 ; A = R0 * 5
ADD A, #40H ; A = A + 40H
MOV R1, A ; 存储器地址低字节 = A
MOV A, B ; A寄存器存储乘积的高字节
MOV R2, A ; 存储器地址高字节 = A
; 存储数字到内部存储器单元中
MOV A, R0 ; A寄存器存储计数器值
MOV @R1, A ; 低字节存储计数器值
INC R1 ; 存储器地址低字节加1
MOV A, R0 ; A寄存器存储计数器值
ANL A, #0F0H ; 将计数器值的低4位清零
SWAP A ; 将计数器值的高4位与低4位交换
MOV @R1, A ; 高字节存储计数器值
INC R0 ; 计数器加1
DJNZ R0, LOOP ; 如果计数器不为0,则跳转到LOOP
END ; 程序结束
```
这段程序使用了循环和乘法运算,可以将0、5、10、15、…、155依次存放到首址为40H的32个内部存储器单元中。
阅读全文