프로그램 코딩에 대하여 코멘트:
먼저 주어진 프로그램 코딩에서는, 기본적으로 우리는 뒤에 오는 업무를 단계적으로 이행하는 것을 진행하고 있다:
- dinfo는 _bios_disk 기능에 의해 실행된 가동에 의해 요구된 매개변수의 정보를 포함하는 diskinfo_t 구조를 가르킨다.
- 우리가 그러므로 디스크의 첫번째 분야에 정보를 쓰기 위하여 려고 하기 때문에 분야의 위치는 다음과 같이 일 것이다:
매개변수 |
그것이 의미하는 무엇을 |
dinfo.drive = 0x00 |
그것은 플로피 디스크 드라이브 (a:)인 드라이브 0를 나타낸다 |
dinfo.head = 0 |
그것은 맨 위 번호 0를 가르킨다 |
dinfo.track = 0 |
그것은 대위 0를 가르킨다 |
dinfo.sector = 1 |
분야 1인 플로피의 첫번째 분야 |
dinfo.sector = 1 |
를 위해 고려할 것이다 분야의 수는 가동을 = 1 쓴다 |
dinfo.buffer = dbuf |
가동을 위한 자료 버퍼 |
- 신선한 플로피의 512의 바이트의 시동 심상 정보가 이전 프로그램에 의해 저장된 파일을 여십시오. 파일 이름 및 경로는 특성 배열 fname에서 저장된다.
- regs.h.ah = 0x00가 기능 00 H를 가르키고 regs.h.dl = 0x00가 a를 위해 사용되는 곳에 개입중단 13H (기능 00h)를 사용하여 디스크 체계를 초기화하십시오: 느슨한. 그리고 int86 (0x13 의 ®s, ®s)는 MS-DOS 개입중단 서비스 INT 13 H.를 빈다.
- _bios_disk (_DISK_WRITE, &dinfo)는 지정된 파일에서 플러피 디스크의 첫번째 (지정된) 분야에 시동 정보를 쓴다.
- 돌려보내진 상태는 성공적인 가동을 위한 메시지를 디스플레이하거나 스크린에 착오 알림말을 디스플레이하기 위하여 이용되는 결과에서 아무 과실나 발생하는 경우에 저장된다.
저희가 단 하나 프로그램에 그것을 하게 하십시오
나는 지금, 당신 이해했다 플러피 디스크에서 자료 회복의 그런 유형의 뒤에 개념을 희망한다. 이것이 저희가 우리가 이전에 2개의 프로그램이라고 토론하는 덕분에 얻은 동일한 결과를 주는 단 하나 프로그램을 상상하게 한 후에.
우리는 최근에 토론한 프로그램을 가진 뒤에 오는 업무를 하고 있었다:
- 좋은 플러피 디스크에서 파일에 시동 정보를 저장하십시오
- 현재 읽을 가치가 없는 플로피의 첫번째 분야에 이 정보를 풀칠하십시오
시동 심상을 저장하기 위하여 우리가 이용하고 있던 파일은 중간 교량으로 프로그램 둘 다의 가동을 연결하기 위하여 작동하고 있었다. 그러나 우리가 우리의 프로그램 코딩에 있는 이 시동 정보 자체를 정의하는 경우에, 우리는 우리가 파일에서 플로피의 시동 정보를 읽을 필요가 없는다 뿐 아니라 파일을 창조할 필요가 없는다.
우리의 다음 프로그램에서 우리는 이렇게 동일한 업무를 하기 위하여 우리가 2개의 다른 프로그램을 피할 수 있는 써야 하고 및 우리가 새로운 단 하나 프로그램에서 지 읽을 가치가 없는 플러피 디스크의 첫번째 분야에 우리의 자료를 과 같은 방식으로 전에 재기해 좋은 무슨을에 관하여 우리의 프로그램을 말하고 있다.
프로그램은 이렇게 더 적은 코딩에 간단하게 되고 우리는 읽힌 파일의 발생의 확율을 감소시킬 수 있고, 과실 쓰고 또는 창조. 우리는 이 프로그램에 있는 뒤에 오는 4개의 중요한 업무를 하고 있다:
dbuf [512]의 512의 바이트 16 진법 정보를 보아서 쓰고 이해하게 곤란한 프로그램을 생각하지 말라. 나중에, 우리는 당신의 프로그램 코딩을 위해 이 정보를 쓰는 쉬운 방법을 토론할 것이다. |
- 현재 읽을 가치가 없는 플로피의 첫번째 분야에 쓸 16 진법 체계에 있는 DOS 부트 기록 정보를 정의하십시오.
- 플러피 디스크 (INT 13H, 기능 00H를) 초기화하기 위하여 디스크 체계를 다시 놓으십시오.
- 플로피의 첫번째 분야에 DOS 부트 기록을 쓰십시오
- 일어나는 경우에 가동과 과실의 성공적인 완료를 위한 검사.
|