ผู้เขียน/โดย : เกริก ภิรมย์โสภา (Krerk Piromsopa)
เขียนเมื่อ/ปรับปรุง : 2001-12-21 17:00:00
ในปัจจุบันมีมาตรฐาน Hex Format ของ Intel อยู่หลากหลายรูปแบบ
ซึ่งในที่นี้จะกล่าวถึงเพียงมาตรฐาน “Intel MCS-86 Hex Object”
ซึ่งเป็นมาตรฐานที่นิยมใช้กันมากที่สุด โดยรายละเอียดสามารถแสดงได้ดังนี้
ข้อมูลบนระบบ Intel Hex จะถูกแบ่งเป็น Record ย่อยโดยแต่ละ
Record จะแยกอยู่เป็น 1 บรรทัด ทั้งนี้โครงสร้างของ Record สามารถอธิบายได้ดังต่อไปนี้
ตัวอักษรแรก: เป็นตัวอักษรเริ่มต้นจะต้องเป็น “:”
เท่านั้น (Start Character)
ตัวอักษรที่ 2 และ 3: บอกจำนวนตัวอักษร (Byte count)
ตัวอักษรที่ 4 ถึง 7: แสดง Address เริ่มต้น
ตัวอักษรที่ 8 และ 9: แสดงประเภทของข้อมูลในบรรทัดนั้น (Record type)
ตัวอักษร 2 ตัวสุดท้าย: ค่า checksum ของ Record นั้น
ตัวอย่าง
:020000020000FC
:10000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
:10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
:10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
:10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
:00000001FF
00 DATA RECORD
ข้อมูลจะแสดงต่อจาก record type (00) ในลักษณะของเลขฐาน 16 (Hex) ตามจำนวนที่แสดงใน
(Byte Count). บนตำแหน่ง Address ที่ระบุ โดย checksum ในที่นี้จะเป็นผลรวมแบบ
2′ complement แบบ binary ของข้อมูลทั้งหมด รวมถึง byte count, address,
record type และ ข้อมูล
01 END RECORD
ข้อมูลในประเภทนี้จะเริ่มต้นด้วย “:” (colon) จำนวน byte count
เป็น 00 และ address เป็น 0000 มี record type เป็น 0, และ checksum เป็น
FF. เท่านั้น ซึ่งข้อมูลประเภทนี้จะใช้เพื่อบอกว่าจบข้อมูลแล้ว
02 EXTENDED SEGMENT ADDRESS RECORD
ข้อมูลในประเภทนี้ใช้เพื่อบอก Segment ของข้อมูลใน Intel Hex Object ดังกล่าว
โดย address field จะต้องเป็น 0000 ข้อมูล record แบบนี้อาจจะปรากฏขึ้นที่ใดก็ได้ใน
Object file ซึ่งจะมีผลให้ Address ที่อยู่หลัง Record ดังกล่าวนั้นสัมพัทธ์กับ
record ที่ระบุนี้ การคำนวณ address นั้นจะกระทำในลักษณะเดียวกับการคำนวณ
segment บน 8088 ดังตัวอย่างต่อไปนี้
: 02 0000 02 1230 BA
: 10 0045 00 55AA FF …..BC
บรรทัดที่ 1 แสดงค่า Segment เป็น 1230H
บรรทัดที่ 2 แสดงข้อมูลจำนวน 10H (16 ฺBytes) เริ่มต้นที่ตำแหน่ง Offset
0045H
ทำการคำนวณหา Address ที่แท้จริงของข้อมูลได้โดยนำค่า
Segment * 16 (เติม 0 จำนวน 1 ตำแหน่งในเลขฐาน 16) บวกกับ record address
ดังนี้
12300 (มาจาก 1230H *10H)
00045 record address
———
12345 20-bit address
———-
เมื่อทำการบันทึกข้อมูลจะได้ดังนี้
12345: 55 AA FF …..
มาตรฐาน IntelHex นี้เป็นมาตรฐานการอ้างอิงข้อมูลแบบ 8
bit ซึ่งเมื่อนำไปใช้กับ Microcomputer ขนาด 16 บิต หรือ 32 บิตนั้น เครื่องโปรแกรมจะทำการแยกเป็น
Byte คู่หรือ Byte คี่ (Odd/Even) ให้เอง โดยการใช้ EPROM,FLASH ขนาด 8
bit หลายๆ ตัวทำงานร่วมกัน
Computer Architecture