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

2021年3月22日15:12:28 发表评论 757 次浏览

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

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

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

假设–输入数据和输出数据的地址分别为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中

程序–

内存地址 助记符 注释
400 MOV AL, [2050] AL <-[2050]
404 MO AH, AL AH <-AL
406 MOV CX, 0004 CX <-0004
409 AND AL, 0F AL <-AL&0F
40B ROL AH, CX 将AH内容向左旋转4位(CX值)
40D AND AH, 0F AH <-AH&0F
40F AH, AD AL AL <-AL + AH
411 MOV [2051], AL [2051] <-AL
415 HLT 停止执行

说明–

  1. MOV AL, [2050]:在AL中加载内存位置2050的内容
  2. MOH 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. 和AH, 0F:用0F对AH的内容执行AND操作并将结果存储在AH中
  7. 添加AL, AH:添加AL和AH内容并将结果存储在AL中
  8. MOV [2051], AL:将AL的内容存储在2051的存储地址中
  9. HLT:停止执行程序

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: