问题–在8085微处理器中编写汇编语言程序, 以找到8位数字的平方。
示例–
假设–输入数据和输出数据的地址分别为2050和3050。
方法–合并寄存器H和L的内容, 结果内容可用于间接指向存储器位置, 并且该存储器位置由M指定。要查找任何数字的平方, 请继续在最初包含0的累加器A中添加该数字我们需要找到其平方的次数。
算法–
- 将20分配给寄存器H, 将50分配给寄存器L, 将00分配给累加器A
- 加载由寄存器B中的M指定的存储单元的内容
- 将累加器A中的M内容与B的减值相加01
- 检查B是否持有00, 如果为true, 则将A的值存储在内存位置3050中, 否则转到步骤3
程序–
内存地址 | 记忆 | 注释 |
---|---|---|
2000 | MVI H 20 | H <-20 |
2002 | MVI L 50 | L <-50 |
2004 | MVI A 00 | A <-00 |
2006 | MOV B, M | B <-M |
2007 | 添加M | A <-A + M |
2008 | DCR B | B <-B – 01 |
2009 | JNZ 2007 | 如果ZF = 0则跳转 |
200度 | STA 3050 | M [3050] <-A |
200楼 | HLT | 结束 |
说明–使用A, H, L, B和间接存储器M的寄存器:
- MVI H 20 –用20初始化寄存器H
- MVI L 50 –用50初始化寄存器L
- MVI A 00 –用00初始化累加器A
- MOV B, M –移动由寄存器B中的M间接指定的存储位置的内容
- 添加M –在累加器A中添加由M间接指定的存储位置的内容
- DCR B –将寄存器B的值减1
- JNZ 2007 –如果ZF = 0, 则跳转到存储器位置2007, 即寄存器B不包含0
- STA 3050 –在3050中存储A的值
- HLT –停止执行程序并停止任何进一步的执行