2010-04-04 5 views
2

다음과 같은 32 비트 16 비트에서 프로세서 전환에 많은 튜토리얼에 주어진 일반적인 방법 것 같다 :설정 프로세서

mov  eax, cr0   ; set bit 0 in CR0-go to pmode 
    or  eax, 1 
    mov  cr0, eax 

는 이유는 간단하지 않을 것이다는 다음 :

or  cr0, 1 

내가 빠진 것이 있습니까? 아마도 내가 생각할 수있는 유일한 것은 cr0 레지스터에서 이와 같은 연산을 수행 할 수 없다는 것입니다.

+4

"내가 생각할 수있는 아마도 유일한 것은 내가 CR0 레지스터에 다음과 같은 작업을 수행 할 수 없다는 것입니다"- 좋은 것 그 이유. 모든 레지스터가 모든 작업을 지원하는 것은 아닙니다. –

+0

@Neil - 글쎄, 그럼 내가 할 수없는 이유를 이해할 것 같아. 롤 ... – IAbstract

답변

6

or 연산자에는 CR0 레지스터에 액세스 할 수있는 연산 코드가 없습니다. CR0 레지스터에서이 작업을 수행 할 수 없습니다.

그 이유는 mov입니다. CR0 레지스터에 액세스 할 수있는 연산 코드가 있습니다.

-2

또는 실제로 두 값을 취하여 해를 만드는 비교 연산자입니다. 솔루션은 또는 작업이 완료된 후 eax에 저장됩니다. 또는 전문화 된 작업이며 범위에 의해 지배되는 저장소이므로 저장소를 사용할 수 없으므로 결과를 가져 와서 프로세스 완료 직후에 즉시 새 값을 저장하는 것이 좋습니다.

사용 또는 피연산자에 대해 언급 한 내용을 상세히 설명하면 이미 존재하는 데이터에 대한 작업 만 수행하는 저장 용량이 없습니다. 더하기, 빼기, 곱하기 또는 나눗셈과 같은 하나의 연산이있는 계산기의 버튼을 생각하거나 같습니다. 코드는 메모리 버퍼를 관리하는 계산기입니다. 그 메모리 저장소 내의 데이터에 대한 오퍼레이터/오퍼레이션의 서비스를 이용하고, 완료되면 추가 오퍼레이션을위한 리턴 결과를 얻거나 사용자에게 출력을 완료한다.

여기에있는 질문은 논리적 인 것일뿐 아니라 코드를 잘 생각하고 간결하게 - 멋진 것들입니다.

+1

내가 사용하고있는 키보드가 위의 나의 오타는 양식이 아주 소극적이며 사용법이 익숙하다. 좋은 하루 보내고 코드를 즐기십시오. 내 데스크톱 PSU가 가게에서 돌아올 때까지 기다릴 수 없어. – RDRush

-3

1 명령 CR0이 힘 1을 시도해보십시오

MOV cr0, 1 
+1

와우, 그건 나쁜 생각이야. 'CR0'에있는 다른 모든 것들은 어떨까요? – Ashe

+1

그것은 또한 불법 교육입니다. 'cr0'은 레지스터에서만 설정할 수 있습니다. – hirschhornsalz