8086程序,以确定与另一个数组元素相对应的第一数组元素的模数

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

问题–在8086微处理器中编写程序, 以确定具有8位n个第二数组的第一数组的相应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. 将00存储在寄存器AH中。
  5. 将寄存器AX中的值除以偏移量DI处的值。
  6. 将结果(寄存器AH的值)存储到存储器偏移SI中。
  7. 将SI的值增加1。
  8. 将DI的值增加1。
  9. 在6之上循环直到寄存器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 MOV AH, 00 AH <-00
40F DIV [DI] AX = AX / [DI]
411 MOV [SI], AH AH-> [SI]
413 INC SI SI <-SI + 1
414 INC DI DI <-DI + 1
415 LOOP 40B 如果CX!= 0和CX = CX-1则跳至40B
417 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. MOV AH, 00:将寄存器AH的值设置为00。
  8. DIV [DI]:将寄存器AX的值除以偏移量DI处的内容。
  9. MOV [SI], AH:将寄存器AH的值存储在偏移量SI处。
  10. INC SI:将SI的值增加1。
  11. INC DI:将DI的值增加1。
  12. LOOP 408:如果CX不为0并且CX = CX-1, 则跳转到地址408。
  13. HLT:停

木子山

发表评论

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