问题–编写一个程序来查找8位数字的1和2的补码,其中起始地址为2000,并且该数字存储在3000存储地址中,并将结果存储到3001和3002存储地址中。
例子 –
算法 –
- 将内存3000中的数据加载到A(累加器)中
- 累加器补足含量
- 将累加器的内容存储在存储器3001中(1的补码)
- 在累加器内容中添加01
- 将累加器的内容存储在存储器3002中(2的补码)
- 停止
程序 –
Memory | Mnemonics | Operands | Comment |
---|---|---|---|
2000 | LDA | [3000] | [A] <- [3000] |
2003 | CMA | [A] <- [A^] | |
2004 | STA | [3001] | 1’s complement |
2007 | ADI | 01 | [A] <- [A] + 01 |
2009 | STA | [3002] | 2’s complement |
200C | HLT | Stop |
解释 –
- A是一个8位累加器,用于直接加载和存储数据
- LDA用于通过16位地址(3字节指令)直接加载累加器
- CMA用于补充累加器的内容(1字节指令)
- STA用于通过16位地址(3字节指令)直接存储累加器
- ADI用于立即将数据添加到累加器中(2字节指令)
- HLT用于暂停程序