问题1:在地址2050中找到2的8位数字的补码。结果存储在地址3050和3051中。程序的起始地址取为2000。
例子 –
算法 –
- 我们正在使用CMA指令对号码进行补充。
- 然后将01添加到结果中。
- 在添加01时生成的进位被存储在3051。
程序 –
Memory Address | Mnemonics | Comment |
---|---|---|
2000 | LDA 2050 | A←2050 |
2003 | CMA | A←compliment of A |
2004 | INR A | A←A+01 |
2005 | MOV L, A | L←A |
2006 | MVI A 00 | A←00 |
2008 | ADC A | A←A+A+Carry |
2009 | MOV H, A | H←A |
200A | SHLD 3050 | L→3050, H→3051 |
200D | HLT |
说明–使用的寄存器: A,H,L
- LDA 2050在A中加载2050的内容
- CMA称赞A的内容
- INR A使A增加01
- MOV L,A复制L中A的内容
- MVI A 00将A中的00移动
- ADC A将A,A进行进位并将其分配给A
- MOV H,A复制H中A的内容
- SHLD 3050将H的值存储在存储器单元3051中,将L的值存储在3050中
- HLT停止执行程序,并停止任何进一步的执行
问题2:在地址2050和2051中找到2的16位数字的补码。结果存储在地址3050、3051和3052中。程序的起始地址取为2000。
例子 –
算法 –
- 我们正在使用CMA指令来补充数字。
- 然后使用INX指令将0001加到结果中。
- 在加0001时生成的进位被存储在3052。
程序 –
Memory Address | Mnemonics | Comment |
---|---|---|
2000 | LHLD 2050 | L←2050, H←2051 |
2003 | MOV A, L | A←L |
2004 | CMA | A←compliment of A |
2005 | MOV L, A | L←A |
2006 | MOV A, H | A←H |
2007 | CMA | A←Compliment of A |
2008 | MOV H, A | H←A |
2009 | INX H | HL←HL+0001 |
200A | MVI A 00 | A←00 |
200C | ADC A | A←A+A+Carry |
200D | SHLD 3050 | L→3050, H→3051 |
2010 | STA 3052 | A→3052 |
2013 | HLT |
说明–使用的寄存器: A,H,L
- LHLD 2050的H含量为2051,L的含量为2050
- MOV A,L复制A中L的内容
- CMA称赞A的内容
- MOV L,A复制L中A的内容
- MOV A,H复制A中H的内容
- CMA称赞A的内容
- MOV H,A复制H中A的内容
- INX H在HL中加0001
- MVI A 00将A中的00移动
- ADC A加A,A,进位并将结果存储在A中
- SHLD 3050将H的值存储在内存位置3051中,将L的值存储在3050中
- STA 3052在存储位置3052中存储A的值
- HLT停止执行程序,并停止任何进一步的执行
参考– 8085程序以找到8位数字的1和2的补码
8085程序查找16位数字的1和2的补码