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

📅  最后修改于: 2021-06-28 08:55:20             🧑  作者: Mango

问题–在8086微处理器中编写一个程序,以确定具有8位n个第二数组的第一数组的对应8位n个元素的模数,其中大小“ n”存储在偏移500中,而第一数组的个数从偏移存储501和第二数组的编号从偏移量601开始存储,并将结果编号存储到第一数组(即偏移量501)中。

例子 –

算法 –

  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。

程序 –

MEMORY ADDRESS MNEMONICS COMMENT
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 JUMP TO 40B IF CX!=0 and CX=CX-1
417 HLT end

解释 –

  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:在偏移量SI处存储寄存器AH的值。
  10. INC SI:将SI的值增加1。
  11. INC DI:将DI的值增加1。
  12. 回路408:如果CX不为0并且CX = CX-1,则跳转到地址408。
  13. HLT:停止