0
제로 예외를 처리하는 프로그램을 작성하는 작업이 있습니다. 그것에 관한 정보를 찾는 데 어려움을 겪고 있습니다. 내가 알기로 인터럽트 벡터 테이블의 0 번째 항목을 변경해야하지만 어떻게해야합니까? LIDT 명령어가 있지만 전체 테이블을 작성하지 않아도됩니까?인터럽트를 처리하는 방법?
참고 : 16 비트 모드로 작업 할 예정입니다.
제로 예외를 처리하는 프로그램을 작성하는 작업이 있습니다. 그것에 관한 정보를 찾는 데 어려움을 겪고 있습니다. 내가 알기로 인터럽트 벡터 테이블의 0 번째 항목을 변경해야하지만 어떻게해야합니까? LIDT 명령어가 있지만 전체 테이블을 작성하지 않아도됩니까?인터럽트를 처리하는 방법?
참고 : 16 비트 모드로 작업 할 예정입니다.
16 비트 모드로 "리얼 모드"를 의미한다고 가정하면 인터럽트 벡터 테이블은 선형 주소 0에서 시작하여 간단히 위치합니다 (wikipedia 항목 참조). 따라서 이전의 4 바이트 원위 포인터를 [0000:0000]
에서 가져 와서 나중에 (또는 체인으로) 복원하고 자신의 처리기로 항목을 덮어 쓸 수 있습니다.
DOS를 사용하는 경우 INT 21h/AH=25h
을 사용하여 인터럽트 벡터를 설정하고 INT 21h/AH=35h
을 사용하여 이전 항목을 검색 할 수 있습니다.
0으로 나누기는 오류가 아니라 인터럽트입니다. –
LIDT는 CPU가 보호 모드 ("16 비트"도 가능)로 작동 할 때 필요합니다. 예외를 처리 할 모드는 무엇입니까? 보호 된, 실제 또는 가상 8086? –