📜  8086程序,确定两个数组的对应元素的减法

📅  最后修改于: 2021-06-28 14:32:17             🧑  作者: 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. 用偏移量DI处的值减去寄存器AL中的值。
  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 SUB 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 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. SUB AL,[DI]:用偏移量DI处的内容减去寄存器AL的值。
  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:停止