问题–在8085微处理器中编写汇编语言程序,以找到8位数字的平方。
例子 –
假设–输入数据和输出数据的地址分别为2050和3050。
方法–合并寄存器H和L的内容,结果内容可用于间接指向存储器位置,并且该存储器位置由M指定。要查找任何数字的平方,请继续在最初包含以下内容的累加器A中添加该数字0乘以我们需要查找其平方的次数。
算法 –
- 将20分配给寄存器H,将50分配给寄存器L,将00分配给累加器A
- 加载由寄存器B中的M指定的存储单元的内容
- 将累加器A中的M内容与B的减值相加01
- 检查B是否持有00,如果为true,则将A的值存储在内存位置3050中,否则转到步骤3
程序 –
MEMORY ADDRESS | MNEMONICS | COMMENT |
---|---|---|
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 | ADD M | A <- A + M |
2008 | DCR B | B <- B – 01 |
2009 | JNZ 2007 | Jump if ZF = 0 |
200C | STA 3050 | M[3050] <- A |
200F | HLT | END |
说明–使用的寄存器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间接指定的存储位置的内容
- ADD M –添加累加器A中由M间接指定的存储位置的内容
- DCR B –寄存器B的值减1
- JNZ 2007 –如果ZF = 0,则跳至内存位置2007,即寄存器B不包含0
- STA 3050 –在3050中存储A的值
- HLT –停止执行程序,并停止任何进一步的执行