2017-04-17 13 views
2

지금까지 본 모든 간단한 8051 프로그램은 코드 LOOP: SJMP LOOP으로 끝납니다.일부 8051 프로그램이 "LOOP : SJMP LOOP"코드로 끝나는 이유

위의 명령은 동일한 명령어를 반복해서 호출하여 무한 루프를 생성한다고 생각합니다. 그러나 프로그램이 끝날 무한 루프가 발생하는 이유는 무엇입니까? 계속 반복해서 실행하면 프로그램이 언제 종료됩니까?

+1

마지막 명령 이후에 프로그램이 임의/반 무작위 데이터를 계속 실행하지 않도록합니다. CPU는 데이터를 모두 데이터로보고 메모리에있는 모든 것을 실행하려고 시도하므로 정의되지 않은 동작이 발생합니다. 프로세서를 루프에 넣으면 메모리에 남아있는 모든 것을 통해 CPU를 방황하지 않게됩니다. –

답변

5

그 밖의 다른 방법으로 베어 메탈 프로그램을 "종료"하거나 종료 하시겠습니까? 일반적으로 정지 또는 다른 명령이 없으며 프로세서가 멈추지 않습니다. 가장 안전하고 깨끗한 방법은 무한 루프를 만드는 것입니다 (메모리를 방황하여 방금 찾은 것을 실행하는 것과 반대되는 방식입니다).

간단한 교육용 프로세서/마이크로 컨트롤러 프로그램의 경우 "종료"되는 프로그램의 경우 프로세서가 멈추지 않으면 무한 루프에서 끝내기를 원할 것입니다. 대부분의 mcus는 절대 멈추지 않습니다. (그들은 저전력 상태에서 잠자기 상태가 될 수도 있지만, 리모콘의 버튼을 누르거나 다른 것을 누르면 일어납니다.)