问题–在8085微处理器中编写汇编语言程序以查找数字的平方根。
示例–
假设–
我们需要查找其平方根的Number存储在存储位置2050中, 并将最终结果存储在存储位置3050中。
算法–
- 分配01到寄存器D和E
- 加载存储在累加器A中存储位置2050的值
- 从寄存器D中减去存储在累加器A中的值
- 检查累加器是否保持为0, 如果为true, 则跳至步骤8
- 寄存器D的值增加2
- 寄存器E的值增加1
- 跳至步骤3
- 移动存储在寄存器E中的值
- 将A的值存储在内存位置3050
程序–
内存地址 | 记忆 | 注释 |
---|---|---|
2000 | MVI D, 01 | D <-01 |
2002 | MVI E, 01 | E <-01 |
2004 | LDA 2050 | A <-M [2050] |
2007 | SUB D | A <-A – D |
2008 | JZ 2011 | 如果ZF = 0则跳转到内存位置2011 |
200B | 印度卢比 | D <-D + 1 |
200度 | 印度卢比 | D <-D + 1 |
200D | 印度卢比 | E <-E + 1 |
200E | JMP 2007 | 跳转到内存位置2007 |
2011 | MOV A, E | A <-E |
2012 | STA 3050 | A-> M [3050] |
2015 | HLT | 结束 |
说明–使用的寄存器A, D, E:
- MVI D, 01 –用01初始化寄存器D
- MVI E, 01 –用01初始化寄存器E
- LDA 2050 –将存储单元2050中的内容加载到累加器A中
- SUB D –从A减去D的值
- 2011年JZ –如果设置了零标志, 则跳转到内存位置2011
- INR D –将寄存器D的值加1。由于已使用两次, 因此D的值将加2。
- 印度卢比–将寄存器E的值加1
- JMP 2007 –跳转到内存位置2007
- MOV A, E –移动累加器A中寄存器E的值
- STA 3050 –在3050中存储A的值
- HLT –停止执行程序并停止任何进一步的执行