나는 실제 주소 = 세그먼트 레지스터 < < 4 + 오프셋 레지스터를 사용한다는 것을 알고 있습니다. 이 두 레지스터는 16 비트이지만 8086은 20 비트 플러스 연산을 어떻게 처리 할 수 있습니까?어떻게 CPU가 리얼 모드에서 20 비트 주소를 계산합니까?
답변
버스 인터페이스 유닛은 세그먼트 레지스터 구성은, 가산기 20 비트 주소와 선반 입 큐를 생성한다. 이 주소가 BIU에서 보내지면 명령 및 데이터 바이트가 메모리에서 페치되고 First In First Out 6 바이트 큐에 채워집니다.
Google을 통해 쉽게 찾을 수있는 "8086_Internal_Block_diagram_enotes.pdf"라는 문서를 참조하십시오. 버스 인터페이스 장치에 대한 섹션 인 this document을 참조하십시오.
따라서 프로세서는 전용 내부 20 비트 레지스터를 사용하여 "필요시"20 비트 주소를 생성합니다.
16 비트 숫자를 4 자리 왼쪽으로 이동하면 기본적으로 20 비트 숫자가 생성됩니다. 그런 다음 오프셋은 해당 범위까지 얼마나 멀리 갈 것인지 나타냅니다. Wikipedia article on Real mode addressing을 참조하십시오.
예 :
0x0001 << 4 -> 0x00010 (5 sets of 4 bits in each hex digit -> 20 bits)
나는 모든 레지스터가 16 비트이기 때문에 프로세서가 20 비트 값을 처리 할 수있는 방법이 일반 레지스터에 비해 너무 큽니다. – DarkDust
@DarkDust 네, 그게 내가 해석 한 방법입니다. 당신의 것이 더 완전합니다, 나는 그 질문에 직접적으로 대답하려고 노력했습니다. – jonsca
@ DarkDust, jonsca, 정확히 :) – Oxdeadbeef
- 1. 리얼 모드에서 32 비트 레지스터/명령어를 사용할 수 있습니까?
- 2. 20 비트 정수 수학
- 3. 두 개의 16 비트 레지스터를 사용하여 20 비트 주소를 만드는 방법은 무엇입니까?
- 4. 어떻게 계산합니까?
- 5. 그래프의 엔트로피는 어떻게 계산합니까?
- 6. 32 비트 모드에서 열기
- 7. 리눅스 커널을 종료하고 리얼 모드에서 재개 할 수 있습니까?
- 8. 어떻게 CPU가 매우 큰 숫자를 처리합니까?
- 9. 필요한 메모리 페이지 수는 어떻게 계산합니까?
- 10. RetailMe은 성공률 추세를 어떻게 계산합니까?
- 11. Access에서 어떻게 계산합니까?
- 12. facebook은 어떻게 친구를 계산합니까?
- 13. HLSL에서 어떻게 레지스터를 계산합니까?
- 14. DB에서이 변수를 어떻게 계산합니까?
- 15. 어린이 수를 어떻게 계산합니까?
- 16. 어떻게 안정적인 정렬을 계산합니까?
- 17. 어떻게 람다 식으로 계산합니까?
- 18. 날짜 차이는 어떻게 계산합니까?
- 19. 리얼 모드 실제 메모리 어드레싱과 관련하여
- 20. 리얼 모드로 들어가고 리얼 모드로 들어가기 (저수준 어셈블리 언어 프로그래밍)
- 21. 80386 리얼 모드 시뮬레이터
- 22. 번역 & % 20 % 26 % 20
- 23. 20 면체면에 텍스처를 어떻게 매핑합니까?
- 24. 사망 당시의 나이를 어떻게 계산합니까?
- 25. 스크롤의 프레임 속도는 어떻게 계산합니까?
- 26. 모든 열의 평균을 어떻게 계산합니까?
- 27. 최적의 열 너비는 어떻게 계산합니까?
- 28. db 연결을 열려면 어떻게 계산합니까?
- 29. 다른 사람의 나이를 어떻게 계산합니까?
- 30. SPSS에서 도움말 분석을 어떻게 계산합니까?
고마워요! 기본적으로 주소 계산은 전통적인 16 비트 ALU (?)를 사용하지 않습니다. – Oxdeadbeef
@ 0xdeadbeef : BIU에 고유 한 "미니 ALU"가 있습니다. – DarkDust