document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /*
  2. ----------------------------------------------------------------------------------------
  3.  ASSIGNMENT NO : 3
  4.  TITLE : WRITE A PROGRAM FOR FLOPPY (BOOT SECTOR)
  5. ----------------------------------------------------------------------------------------
  6. */
  7.  
  8. #include<stdio.h>
  9. #include<conio.h>
  10. #include<dos.h>
  11.  
  12. char BUFFER[512]="";
  13. void read_sector()
  14. {
  15.     asm MOV AH,02H          //READ SECTOR
  16.     asm MOV AL,01H          //NUMBER OF SECTORS
  17.     asm MOV CH,00H          //CYLINDER
  18.     asm MOV CL,01H          //SECTOR
  19.     asm MOV DH,00H          //HEAD
  20.     asm MOV DL,00H          //DRIVE
  21.     asm MOV BX,SEG BUFFER
  22.     asm MOV ES,BX
  23.     asm MOV BX,OFFSET BUFFER
  24.     asm INT 13H
  25.  
  26. }
  27. void ascii_display()
  28. {
  29.     asm MOV DL,BYTE PTR[SI]
  30.     asm MOV AH,02H
  31.     asm INT 21H
  32.  
  33. }
  34. void hex_display()
  35. {
  36.     asm MOV DH,BYTE PTR[SI]
  37.     asm MOV DL,DH
  38.     asm AND DL,0F0H
  39.     asm MOV CL,04H
  40.     asm ROR DL,CL
  41.     asm CMP DL,09H
  42.     asm JBE A1
  43.     asm ADD DL,07H
  44.     A1: asm ADD DL,30H
  45.         asm MOV AH,02H
  46.         asm INT 21H
  47.         asm MOV DL,DH
  48.         asm AND DL,0FH
  49.         asm CMP DL,09H
  50.         asm JBE A2
  51.         asm ADD DL,07H
  52.     A2: asm ADD DL,30H
  53.         asm MOV AH,02H
  54.         asm INT 21H
  55.         asm MOV DL,20H
  56.         asm MOV AH,02H
  57.         asm INT 21H
  58.  
  59.  
  60. }
  61. void display_boot()
  62. {
  63.     int i;
  64.     asm MOV SI,OFFSET BUFFER
  65.     printf("\\n\\t\\tMap of boot sector of DOS disk\\n");
  66.     printf("\\nOFFSET\\t INFORMATION\\t BYTE VALUE\\n");
  67.     printf("\\n00H\\tJump to boot strap routine(3byte)\\t");
  68.     for(i=0;i<3;i++)
  69.     {
  70.         hex_display();
  71.         asm INC SI
  72.  
  73.     }
  74.     printf("\\n03H\\tVendor Identification(8bytes)\\t");
  75.     for(i=0;i<8;i++)
  76.     {
  77.         ascii_display();
  78.         asm INC SI
  79.  
  80.     }
  81.     printf("\\n0BH\\tByte per sector(2bytes)\\t");
  82.     for(i=0;i<2;i++)
  83.     {
  84.         hex_display();
  85.         asm INC SI
  86.  
  87.     }
  88.     printf("\\n0DH\\tSector per clusters(1byte)\\t");
  89.     hex_display();
  90.     asm INC SI
  91.     printf("\\n0EH\\tNumber of reserved sectors(2bytes)\\t");
  92.     for(i=0;i<2;i++)
  93.     {
  94.         hex_display();
  95.         asm INC SI
  96.  
  97.     }
  98.     printf("\\n10H\\tNumber of FAT copies(1bytes)\\t");
  99.     hex_display();
  100.     asm INC SI
  101.     printf("\\n11H\\tMAXIMUM NUMBER OF root\\n\\tDirectory entries(2bytes)\\t");
  102.     for(i=0;i<2;i++)
  103.     {
  104.         hex_display();
  105.         asm INC SI
  106.  
  107.     }
  108.     printf("\\n13H\\tNUMBER OF DISK SECTORS(2BYTES)\\t");
  109.     for(i=0;i<2;i++)
  110.     {
  111.         hex_display();
  112.         asm INC SI
  113.  
  114.     }
  115.     printf("\\n15H\\tMEDIA DISCRIPTOR BYTE(1BYTES)\\t");
  116.     hex_display();
  117.     asm INC SI
  118.     printf("\\n16H\\tNUMBER OF SECTORS for FAT(2bytes)\\t");
  119.     for(i=0;i<2;i++)
  120.     {
  121.         hex_display();
  122.         asm INC SI
  123.  
  124.     }
  125.     printf("\\n18H\\tSECTORS/TRACK(2 BYTES)\\t");
  126.     for(i=0;i<2;i++)
  127.     {
  128.         hex_display();
  129.         asm INC SI
  130.  
  131.     }
  132.     printf("\\n1AH\\tNUMBER OF R/W HEADS(2 BYTES)\\t");
  133.     for(i=0;i<2;i++)
  134.     {
  135.         hex_display();
  136.         asm INC SI
  137.  
  138.     }
  139.     printf("\\n1CH\\tNUMBER OF HIDDEN SECTORS(4 BYTES)\\t");
  140.     for(i=0;i<4;i++)
  141.     {
  142.         hex_display();
  143.         asm INC SI
  144.  
  145.     }
  146.     printf("\\n20H\\tNUMBER OF SECTORS FOR DRIVES LARGER \\n\\tTHAN 32MB(4 BYTES)\\t");
  147.     for(i=0;i<4;i++)
  148.     {
  149.         hex_display();
  150.         asm INC SI
  151.  
  152.     }
  153.     printf("\\n24H\\tPHYSICAL DRIVE NUMBER(1 BYTE)\\t");
  154.     hex_display();
  155.     asm INC SI
  156.     printf("\\n25H\\tRESERVE(1 BYTE)\\t");
  157.     hex_display();
  158.     asm INC SI
  159.     printf("\\n26H\\tBOOT SECTOR SIGNATURE(1 BYTE)\\t");
  160.     hex_display();
  161.     asm INC SI
  162.     printf("\\n27H\\tVOLUME ID NUMBER(4 BYTES)\\t");
  163.     for(i=0;i<4;i++)
  164.     {
  165.         hex_display();
  166.         asm INC SI
  167.  
  168.     }
  169.     printf("\\n2BH\\tVOLUME LABEL(11 BYTES)\\t");
  170.     for(i=0;i<11;i++)
  171.     {
  172.         ascii_display();
  173.         asm INC SI
  174.  
  175.     }
  176.     printf("\\n36H\\tFILE SYSTEM TYPE(8 BYTES)\\t");
  177.     for(i=0;i<8;i++)
  178.     {
  179.         ascii_display();
  180.         asm INC SI
  181.  
  182.     }
  183.     printf("\\n\\nPress any key to continue...\\n");
  184.     getch();
  185.     clrscr();
  186.     printf("\\n\\t\\tBOOT STRAP LOADER CONTAINS\\n");
  187.     for(i=0;i<450;i++)
  188.     {
  189.         if(i%24==0)
  190.             printf("\\n%3xh:",62+i);
  191.         hex_display();
  192.         asm INC SI
  193.  
  194.     }
  195.  
  196. }
  197.  
  198. void main()
  199. {
  200.     int choice;
  201.     asm MOV AH,00H
  202.     asm MOV DL,00H          //DRIVE NUMBER
  203.     asm INT 13H
  204.     clrscr();
  205.     read_sector();
  206.     asm JC S1
  207.     display_boot();
  208.     getch();
  209.     exit();
  210.   S1:   printf("\\nERROR");
  211.     getch();
  212. }
  213. /*
  214. -----------------------------------------------------------------
  215.  END OF THE PROGRAM
  216. -----------------------------------------------------------------
  217. */
');