📜  8086程序来查找8位数字的总和

📅  最后修改于: 2021-06-28 14:51:25             🧑  作者: Mango

问题–在8086微处理器中编写汇编语言程序,以使用8位运算找到8位数字的位数之和。

示例–假设8位数字存储在内存位置2050中。

假设–输入数据和输出数据的地址分别为2050和2051。

算法 –

  1. 将存储器单元2050中的内容加载到寄存器AL中
  2. 将寄存器AL的内容复制到寄存器AH
  3. 将0004分配给CX寄存器对
  4. 对具有0F的AL的内容执行AND操作并将结果存储在AL中
  5. 通过使用CX执行ROL指令来旋转AH的内容
  6. 用0F对AH的内容执行AND运算并将结果存储在AH中
  7. 添加AL和AH内容并将结果存储在AL中
  8. 将AL的内容存储在内存位置2051中

程序 –

Memory Address Mnemonics Comments
400 MOV AL, [2050] AL<-[2050]
404 MOV AH, AL AH<-AL
406 MOV CX, 0004 CX <- 0004
409 AND AL, 0F AL <- AL & 0F
40B ROL AH, CX Rotate AH content left by 4 bits(value of CX)
40D AND AH, 0F AH <- AH & 0F
40F ADD AL, AH AL<-AL+AH
411 MOV [2051], AL [2051]<-AL
415 HLT Stop Execution

解释 –

  1. MOV AL,[2050]:在AL中加载存储位置2050的内容
  2. MOV AH,AL:将寄存器AL的内容复制到寄存器AH
  3. MOV CX,0004:将0004分配给CX寄存器对
  4. AND AL,0F:对具有0F的AL内容执行AND运算并将结果存储在AL中
  5. ROL AH,CX:将AH寄存器的内容向左旋转4位,即CX寄存器对的值
  6. AND AH,0F:用0F对AH的内容执行AND运算并将结果存储在AH中
  7. 添加AL,AH:添加AL和AH内容并将结果存储在AL中
  8. MOV [2051],AL:将AL的内容存储在2051的存储器地址中
  9. HLT:停止执行程序