📜  8086程序,用于查找给定序列中的偶数和

📅  最后修改于: 2021-06-28 09:35:59             🧑  作者: Mango

问题–在8086微处理器中编写程序,以找出偶数序列的总和,其中从起始偏移量500开始存储数字,并将结果存储在偏移量600中。

例子 –

算法 –

  1. 将500分配给SI
  2. 将数据从偏移量SI加载到寄存器CL(计数),并将00分配给寄存器CH inc。 SI乘1
  3. 从偏移量SI加载数据,并使用01进行测试,如果结果非零,则跳至步骤5
  4. 将偏移数据与寄存器AL相加
  5. 偏移增加1
  6. 跳至步骤3
  7. 将结果(寄存器AL的内容)存储到偏移量600
  8. 停止

程序 –

MEMORY ADDRESS MNEMONICS COMMENT
400 MOV SI, 500 SI<-500
403 MOV CL, [SI] CL<-[SI]
405 INC SI SI<-SI+1
406 MOV CH, 00 CH<-00
408 MOV AL, 00 AL<-00
40A MOV BL, [SI] BL<-[SI]
40C TEST BL, 01 BL AND 01
40F JNZ 413 JUMP IF NOT ZERO
411 ADD AL, BL AL<-AL+BL
413 INC SI SI<-SI+1
414 LOOP 40A JUMP TO 40A IF CX NOT ZERO
416 MOV [600], AL AL->[600]
41A HLT END

解释 –

  1. MOV SI,500:将500分配给SI
  2. MOV CL,[SI]:将数据从偏移量SI加载到寄存器CL
  3. INC SI:将SI的值增加1
  4. MOV CH,00:将00分配给寄存器CH
  5. MOV AL,00:将00分配给寄存器AL
  6. MOV BL,[SI]:将数据从偏移量SI加载到寄存器BL
  7. TEST BL,01: AND BL与01
  8. JNZ 413:如果不为零,则跳转到地址413
  9. 添加AL,BL:添加寄存器AL和BL的内容
  10. INC SI:将SI的值增加1
  11. 回路40A:如果CX不为零且CX = CX-1则跳至40A
  12. MOV [600],AL:将寄存器AL的值存储到偏移600
  13. HLT:结束。

参考– 8086程序以查找给定序列中的奇数和