问题–在8086微处理器中编写汇编语言程序, 以使用8位运算找到8位数字的位数之和。
示例–假设8位数字存储在内存位置2050中。
文章图片
假设–输入数据和输出数据的地址分别为2050和2051。
算法–
- 将存储器单元2050中的内容加载到寄存器AL中
- 将寄存器AL的内容复制到寄存器AH
- 将0004分配给CX寄存器对
- 对具有0F的AL的内容执行AND运算并将结果存储在AL中
- 通过使用CX执行ROL指令来旋转AH的内容
- 用0F对AH的内容执行AND运算并将结果存储在AH中
- 添加AL和AH内容并将结果存储在AL中
- 将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 | 停止执行 |
- MOV AL, [2050]:在AL中加载内存位置2050的内容
- MOH AH, AL:将寄存器AL的内容复制到寄存器AH
- MOV CX, 0004:将0004分配给CX寄存器对
- AND AL, 0F:对具有0F的AL的内容执行AND操作并将结果存储在AL中
- ROL AH, CX:将AH寄存器的内容向左旋转4位, 即CX寄存器对的值
- 和AH, 0F:用0F对AH的内容执行AND操作并将结果存储在AH中
- 添加AL, AH:添加AL和AH内容并将结果存储在AL中
- MOV [2051], AL:将AL的内容存储在2051的存储地址中
- HLT:停止执行程序
推荐阅读
- 8086程序,用于确定两个数组的对应元素的总和
- 8086程序,以确定与另一个数组元素相对应的第一数组元素的模数
- 8086程序将8位BCD码转换为ASCII码
- 8085程序将两个8位数字相加而不带进位
- 8085程序将一个字节分离(或拆分)为两个半字节
- 在软件开发中学习的20条黄金法则
- 用Java创建流的10种方法
- 2020年10种流行的物联网家庭设备
- 人们在面试中容易犯的10个错误