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