📌  相关文章
📜  8086程序,用于确定两个数组元素的对应元素的乘积

📅  最后修改于: 2021-06-28 15:46:28             🧑  作者: Mango

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

例子 –

算法 –

  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。

程序 –

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 MUL [DI] AX=AL*[DI]
40F MOV [SI], AL AL->[SI]
411 INC SI SI<-SI+1
412 INC DI DI<-DI+1
413 LOOP 40B JUMP TO 40B IF CX!=0 and CX=CX-1
415 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. MUL 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:停止