📜  8085程序查找16位数字的1和2的补码

📅  最后修改于: 2021-06-28 17:13:54             🧑  作者: Mango

先决条件– 8085程序查找8位数字的1和2的补码
问题– –编写程序以查找16位数字的1和2的补码,其中起始地址为2000,并且该数字存储在3000存储地址中,并将结果存储到30023004存储地址中。

例子 –

算法 –

  1. 将存储器3000中的16位数字加载到寄存器对(HL)中
  2. 将寄存器L的内容移至累加器
  3. 累加器补足含量
  4. 将累加器的内容移至寄存器L
  5. 将寄存器H的内容移至累加器
  6. 累加器补足含量
  7. 将累加器的内容移至寄存器H
  8. 将寄存器对的内容存储在存储器3002中( 1的补码)
  9. 寄存器对的内容加1
  10. 将寄存器对的内容存储在存储器3004中( 2的补码)
  11. 停止

程序 –

Memory Mnemonics Operands Comment
2000 LHLD [3000] [H-L] <- [3000]
2003 MOV A, L [A] <- [L]
2004 CMA [A] <- [A^]
2005 MOV L, A [L] <- [A]
2006 MOV A, H [A] <- [H]
2007 CMA [A] <- [A^]
2008 MOV H, A [H] <- [A]
2009 SHLD [3002] 1’s complement
200C INX H [H-L] <- [H-L] + 1
200D SHLD [3004] 2’s complement
2010 HLT Stop

解释 –

  1. A是一个8位累加器,用于加载和存储数据
  2. LHLD用于通过16位地址(3字节指令)直接加载寄存器对HL
  3. MOV用于将数据从累加器传输到寄存器(任意)或将寄存器(任何)传输到累加器(1字节)
  4. CMA用于补充累加器的内容(1字节指令)
  5. SHLD用于使用16位地址(3字节指令)将寄存器对HL中的数据直接存储到存储器中
  6. INX用于将HL寄存器对增加1(1字节指令)
  7. HLT用于暂停程序