8086程序,用于确定两个数组的对应元素的总和

2021年3月22日15:10:16 发表评论 945 次浏览

问题–在8086微处理器中编写程序, 以找出两个8位n个数字数组的总和, 其中大小" n"存储在偏移量500中, 第一个数组的数目从偏移量501开始存储, 第二个数组的数目被存储从偏移量601开始并将结果编号存储到第一数组, 即偏移量501。

示例–

8086程序,用于确定两个数组的对应元素的总和1

算法

  1. 将500存储到SI中, 将601存储到DI中, 并将来自偏移500的数据加载到寄存器CL中, 并将寄存器CH设置为00(用于计数)。
  2. 将SI的值增加1。
  3. 从下一个偏移量(即501)加载第一个数字(值)到寄存器AL。
  4. 将寄存器AL中的值与偏移量DI处的值相加。
  5. 将结果(寄存器AL的值)存储到存储器偏移SI中。
  6. 将SI的值增加1。
  7. 将DI的值增加1。
  8. 在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 结束

说明–

  1. MOV SI, 500:将SI的值设置为500
  2. MOV CL, [SI]:将数据从偏移量SI加载到寄存器CL
  3. MOV CH, 00:将寄存器CH的值设置为00
  4. INC SI:将SI的值增加1。
  5. MOV DI, 600:将DI的值设置为600。
  6. MOV AL, [SI]:从偏移量SI到寄存器AL的加载值
  7. 添加AL, [DI]:将寄存器AL的值与偏移量DI处的内容相加。
  8. MOV [SI], AL:将寄存器AL的值存储在偏移SI处。
  9. INC SI:将SI的值增加1。
  10. INC DI:将DI的值增加1。
  11. 环408:如果CX不为0并且CX = CX-1, 则跳转到地址408。
  12. HLT:停

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: