2010-01-01 3 views
2

어셈블리의 프로그램을 작성하여 디스크의 첫 번째 섹터 (MBR)를 읽고 플로피 디스크에 기록하거나 적어도 데이터를 표시 할 수 있어야합니다. INT 13h 및 25h가 Windows 보호 모드에서 작동하지 않으며 Dos에서 코드를 시험해 보았지만 프로그램을 실행할 때 dos 시스템이 멈추는 것을 이해합니다. 이 코드는 다음과 같습니다.어셈블리 INT 13h - 디스크 읽기 문제

MOV byte ptr es:[bx], offset result 
    MOV  AL,1 ;number ofsectors to read 
    MOV  Cl,1 
    MOV  ch,0 
    mov  dl,80h ;the HDD 
    mov  dh,1 
    mov ah,02h 
    INT  13h 

결과는 버퍼 변수입니다.

미리 감사드립니다.

+0

프리젠 테이션을 위해 코드를 마크 업하기 위해 '코드'기능을 사용하십시오. –

답변

1

YEB을 복원해야합니다. 그것은 마침내 효과가있었습니다. 이것은 INT의 13H는 윈도우 운영체제에서 실행할 수 없기 때문에 코드 (DOS에서만 실행됩니다.

  mov dx,80h 
     mov cx,1 
     mov bx,ds 
     mov es,bx 
     mov bx,offset result 
     mov ax,0201h 
     int 13h  
1

나는 그것은

MOV es, segment_offset ' probably not needed 
MOV bx, buffer_offset 
... 

해야이 줄

MOV byte ptr es:[bx], offset result ' attempts to write memory [bx] 

잘못 생각하고 어쩌면 당신은 또한 ES, 예를

push es 
mov es, ... 
... 
pop es 
' done 
+0

감사 닉 D 나는 내 코드를 변경 이에 : MOV의 DX, 80H; 제 물리적 디스크 MOV CX는 1, 헤드 (1) 섹터 0 MOV BX, DS; MOV 말이지, BX, 포인트 MOV BX 오프셋 결과를 기록 버퍼를 부팅하는 단계;로 읽어 부트 레코드 mov ax, 0201h, 하나의 섹터 읽기 int 13h I 그것은 작동하는 것 같습니다. 인쇄 할 때 많은 쓰레기가되지만 실제 MBR을 어떻게 확인할 수 있습니까? 내 질문을 읽으면서 양해 해 주셔서 감사합니다. – Auxiliary

+0

@Auxiliary, MBR에 대한 많은 정보를 제공하는 http://mirror.href.com/thestarman/asm/mbr/STDMBR.htm을 확인하십시오. –