问题–将两个8位数字乘以地址2050和2051。结果存储在地址3050和3051。程序的起始地址取为2000。
例子 –
算法 –
- 在此示例中,我们将数字43加了七(7)次。
- 由于两个8位数字的乘积最多可以是16位,因此我们需要寄存器对来存储结果。
程序 –
Memory Address | Mnemonics | Comment |
---|---|---|
2000 | LHLD 2050 | H←2051, L←2050 |
2003 | XCHG | H↔D, L↔E |
2004 | MOV C, D | C←D |
2005 | MVI D 00 | D←00 |
2007 | LXI H 0000 | H←00, L←00 |
200A | DAD D | HL←HL+DE |
200B | DCR C | C←C-1 |
200C | JNZ 200A | If Zero Flag=0, goto 200A |
200F | SHLD 3050 | H→3051, L→3050 |
2012 | HLT |
说明–使用的寄存器: A,H,L,C,D,E
- LHLD 2050的H含量为2051,L的含量为2050
- XCHG将H的内容与D交换并将L的内容与E交换
- MOV C,D复制C中D的内容
- MVI D 00为D分配00
- LXI H 0000将00分配给H,将00分配给L
- DAD D将HL和DE相加并将结果分配给HL
- DCR C脱脂剂C减1
- 如果零标志= 0,则JNZ 200A将程序计数器跳转到200A
- SHLD将H的值存储在内存位置3051中,将L的值存储在3050中
- HLT停止执行程序,并停止任何进一步的执行
接下来阅读:汇编语言程序(8085微处理器)添加两个8位数字