问题–编写8085程序将两个8位数字相除。
例子 –
算法 –
- 通过将存储位置的地址加载到HL对寄存器来启动程序。
- 将数据移至B寄存器。
- 将第二个数据加载到累加器中。
- 比较两个数字以检查进位。
- 减去两个数字。
- 增加进位值。
- 检查重复减法是否结束。
- 然后将结果(商和余数)存储在给定的内存位置。
- 终止程序。
程序 –
ADDRESS | MNEMONICS | COMMENT |
---|---|---|
2000 | LXI H, 2050 | |
2003 | MOV B, M | B<-M |
2004 | MVI C, 00 | C<-00H |
2006 | INX H | |
2007 | MOV A, M | A<-M |
2008 | CMP B | |
2009 | JC 2011 | check for carry |
200C | SUB B | A<-A-B |
200D | INR C | C<-C+1 |
200E | JMP 2008 | |
2011 | STA 3050 | 3050<-A |
2014 | MOV A, C | A<-C |
2015 | STA 3051 | 3051<-A |
2018 | HLT | terminate the program |
说明–寄存器A,H,L,C,B用于通用。
- LXI H 2050将用存储单元的地址2050加载HL对寄存器。
- MOV B,M将存储器的内容复制到寄存器B中。
- MVI C,00将C分配为00。
- INX H增量寄存器对HL。
- MOV A,M将存储器的内容复制到累加器中。
- CMP B比较累加器和寄存器B的内容。
- 如果设置了进位标志,则JC 2011跳转到地址2011。
- SUB B用寄存器B减去累加器的内容,并将结果存储在累加器中。
- INR C使寄存器C递增。
- JMP 2008控件将转移到内存地址2008。
- STA 3050将其余部分存储在内存位置3050中。
- MOV A,C将寄存器的内容复制到累加器中。
- STA 3051将其余部分存储在存储器位置3051中。
- HLT停止执行程序,并停止任何进一步的执行。