问题–在8086微处理器中编写程序, 以找出两个8位n个数字数组的总和, 其中大小" n"存储在偏移量500中, 第一个数组的数目从偏移量501开始存储, 第二个数组的数目被存储从偏移量601开始并将结果编号存储到第一数组, 即偏移量501。
示例–
文章图片
【8086程序,用于确定两个数组的对应元素的总和】算法–
- 将500存储到SI中, 将601存储到DI中, 并将来自偏移500的数据加载到寄存器CL中, 并将寄存器CH设置为00(用于计数)。
- 将SI的值增加1。
- 从下一个偏移量(即501)加载第一个数字(值)到寄存器AL。
- 将寄存器AL中的值与偏移量DI处的值相加。
- 将结果(寄存器AL的值)存储到存储器偏移SI中。
- 将SI的值增加1。
- 将DI的值增加1。
- 在5以上循环直到寄存器CX变为0。
内存地址 | 记忆 | 注释 |
---|---|---|
400 | MOV SI, 500 | SI < -500 |
403 | MOV CL, [SI] | CL < -[SI] |
405 | MOV CH, 00 | CH < -00 |
407 | INC SI | SI < -SI + 1 |
408 | MOV DI, 601 | DI < -601 |
40B | MOV AL, [SI] | AL < -[SI] |
40D | ADD AL, [DI] | AL = AL + [DI] |
40F | MOV [SI], AL | AL-> [SI] |
411 | INC SI | SI < -SI + 1 |
412 | INC DI | DI < -DI + 1 |
413 | LOOP 40B | 如果CX!= 0和CX = CX-1则跳至40B |
415 | HLT | 结束 |
- MOV SI, 500:将SI的值设置为500
- MOV CL, [SI]:将数据从偏移量SI加载到寄存器CL
- MOV CH, 00:将寄存器CH的值设置为00
- INC SI:将SI的值增加1。
- MOV DI, 600:将DI的值设置为600。
- MOV AL, [SI]:从偏移量SI到寄存器AL的加载值
- 添加AL, [DI]:将寄存器AL的值与偏移量DI处的内容相加。
- MOV [SI], AL:将寄存器AL的值存储在偏移SI处。
- INC SI:将SI的值增加1。
- INC DI:将DI的值增加1。
- 环408:如果CX不为0并且CX = CX-1, 则跳转到地址408。
- HLT:停
推荐阅读
- 8086程序查找8位数字的总和
- 8086程序,以确定与另一个数组元素相对应的第一数组元素的模数
- 8086程序将8位BCD码转换为ASCII码
- 8085程序将两个8位数字相加而不带进位
- 8085程序将一个字节分离(或拆分)为两个半字节
- 在软件开发中学习的20条黄金法则
- 用Java创建流的10种方法
- 2020年10种流行的物联网家庭设备
- 人们在面试中容易犯的10个错误