Each line specifies an address and some data to stick there. Typically an assembler or linker will generate the file in the order of the definition of various ROMable chunks, but what is dumped by a debugger or etc. will be in linear address order. Search for "Intel hex file format", or see http://www.8052.com/tutintel.htm > Original Hex > :020000000528D1 > :08000800052885008B01093079 > :100010006600C23062000611031EE22864005830F8 > :10002000B6209F20120803110310493A031D05282A > > Saved Hex > :100000000528FF3FFF3FFF3F052885008B01093092 > :100010006600C23062000611031EE22864005830F8 > :10002000B6209F20120803110310493A031D05282A