리얼 모드에서 세그먼트의 크기에 대해서는 의심의 여지가 있습니다. 최대 64K는 될 수 없지만 less than that. 일 수 있습니다. 제 질문은 이러한 세그먼트 크기와 기본 주소가 초기화되는 방식입니다. 마찬가지로 GDT와 LDT가 보호 모드에 있습니다. Real mode segments can also overlapped,disjoint or adjacent. BIOS에는 부팅 코드, 비디오 버퍼 등의 특정 항목을위한 일부 예약 된 영역이 있습니다. 어셈블리 프로그램에서 이와 같은 작업을 수행해야합니까?세그먼트 크기가 x86 리얼 모드
답변
리얼 모드에서는 세그먼트 화 된 주소가 메모리에 고정되어 있습니다. 실제 주소를 얻으려면 다음 방정식을 사용하십시오.
physical address = segment * 16 + offset
세그먼트 및 오프셋 주소는 모두 16 비트입니다. 이 방정식을 사용하면 문제없이 20 비트 주소 하나를 만들고 640kB RAM에 액세스 할 수 있습니다.
일부 세그먼트의 위치를 유지하는 테이블이 없습니다. 문제는 모든 주소에 액세스 할 수 있도록 세그먼트 및 오프셋 레지스터를 모두 설정해야한다는 것입니다. 따라서 오프셋 레지스터를 증가시키는 간단한 루프만으로 최대 64KB의 RAM 바이트에 액세스 할 수 있으므로 플랫 모드보다 큰 버퍼에 대한 메모리 액세스가 덜 편리합니다.
답장을 보내 주셔서 감사합니다. 그럼 어셈블리 프로그래머의 업무가 세그먼트의 기본 주소와 크기를 결정하는 것입니다. 한 세그먼트? 그렇다면 세그먼트가 겹칠 수 있고 겹쳐진 다른 세그먼트를 다른 프로그램에서 사용할 수 있으므로 데이터가 손상 될 수 있습니까? 두 개의 MSDOS 프로그램이 보호 기능이 없으므로 메모리 할당 방법을 실행한다고 가정 해 보겠습니다. –
DOS에서 메모리 관리가 어떻게 작동하는지 모르겠지만 여기에 메모리 주소 테이블이 있습니다 : http://webpages.charter.net/danrollins/techhelp/0094.HTM DOS 프로그램을 만드는 경우주의해야합니다 다른 .com 드라이버 나 TSR 루틴을 덮어 쓰지 않습니다. 보통 하나의 DOS 프로그램 만 동시에 실행합니다. – nio
@nio : 개체가 단락 정렬되도록 정렬하는 경우 개체 내의 알려진 오프셋에 저장된 항목에 액세스하기 위해 세그먼트 레지스터 만로드하면됩니다. 이 기능을 활용하는 컴파일 된 언어는 모르지만 어셈블리 코드에서는 일반적인 트릭입니다. – supercat
- 1. 80386 리얼 모드 시뮬레이터
- 2. 리얼 모드 재사용
- 3. I386 리얼 모드 - 플로피
- 4. 바이오스와 리얼 모드
- 5. 리얼 모드 실제 메모리 어드레싱과 관련하여
- 6. 리얼 모드 컴파일 asm (rootkit.arsenal)
- 7. 리얼 모드 단순 OS 난이도
- 8. x86 용 Linux의 세그먼트 정의
- 9. x86 예제 프로그램의 세그먼트 오류
- 10. 16 비트 리얼 모드 OS 란 무엇입니까?
- 11. 리눅스 커널 모듈의 리눅스 리얼 모드 인터페이스
- 12. 리얼 모드, 인터럽트 벡터 교체 오류가 발생했습니다.
- 13. x86 어셈블리에서 피연산자 크기가 충돌합니까?
- 14. 피연산자 크기가 x86 어셈블리에서 충돌합니다.
- 15. x86 인수의 크기가 잘못되었습니다. [tasm]
- 16. 리얼 모드 커널 개발을위한 16 비트 C 컴파일러?
- 17. X86 : 보호 모드, GDT, IDT
- 18. i386 리얼 모드. 메모리에서 데이터를로드하는 것에 관한 몇 가지 문제
- 19. 어셈블리 (x86) 루프 세그먼트 화 오류
- 20. 리얼 모드 애플리케이션을 보호 모드로 실행할 수없는 이유는 무엇입니까?
- 21. 8086cpu에서 인터럽트 요청시 리얼 모드 어셈블리 언어 스택 초기화 방법
- 22. GCC에 리얼 모드 용 16 비트 코드를 생성하는 방법
- 23. OpenWatcom을 사용하여 C의 바이너리 리얼 모드 OS에 컴파일 및 연결
- 24. Mac OS X 용 16 비트 리얼 모드 C 컴파일러
- 25. 16 비트 .com 리얼 모드 OS에서의 C 프로그램
- 26. 세그먼트 오류 또는 크기가 올바르게 사용되지 않습니다.
- 27. 조립품 x86 그래픽 모드 13h 커서 위치
- 28. 어셈블리 x86 - 사각형 그래픽 모드 그리기의 문제
- 29. x86 - 배열 요소를 액세스하는 어드레싱 모드
- 30. 실행중인 코드가 x86 비공개 보호 모드 용으로 빌드되었습니다.
http://stackoverflow.com/questions/3819699/what-does-ds40207a-mean-in-assembly || http://stackoverflow.com/questions/4119504/real-mode-memory-addressing-explanation/33581044#33581044 –