MULU 명령어와 관련하여 질문이 있습니다. 내가 알아챈 한 가지는 데이터 레지스터에 000FFFFF 값이 있다고 가정합니다. 그리고 00FFFFFF를 포함하도록 다른 F를 넣고 싶다고 가정 해 봅시다.68000 어셈블리 : 곱하기가 이상한 결과를냅니다.
MULU #16, D4
을 그리고 나는 (내가 00FFFFFF를 얻을) 명령을 ADD 수행하여 다른 F를 추가 : 내가 주로하는 일은과 같이 (16)에 의해 데이터 레지스터를 곱합니다. 그러나 000FFFFF에서 다시 곱해지면 데이터 레지스터의 모든 비트가 0이됩니다 (00000000). 그 곱한 후에, 나는 000FFFF0을 갖게 될 것이고, 나머지는 따라 올 것입니다. 나는 아직도이 이유를 이해하지 못한다. 나는 this example을 찾아 보았고 그것이 효과가 있다고 느낀다. 나는 또한 단순히 000FFFFF에 1을 더하면 Extend, Carry 및 Zero 비트 모두가 참이된다는 것을 알았습니다.
무엇 _ "하지만 000FFFFF 다시 곱 때"부호를 유지하기 위해 산술 논리 것보다는 이동합니다 사용해야합니다 _ 뜻? 지시 사항의 정확한 순서를 보여주십시오. 또한 16을 곱하는 대신 4로 왼쪽으로 이동하는 것이 어떻습니까? – Michael
당신 말이 맞아요. 곱셈을해서는 안됩니다. 대신 왼쪽으로 4 시프트하는 것이 좋은 해결책입니다. 문제 해결됨. –