[ บทความ : เรียนรู้ z80 ] ตอนที่ 3 เรื่อง z80a และเอกสารการใช้

ก่อนที่เราจะเริ่มเรียนรู้คำสั่ง และ หัดเขียนโปรแกรม กับ Z80 ผมขอเลือก assembler ก่อนล่ะกันครับ ... assembler คืออะไร ? คำถามนี้ตอบแล้วเข้าใจยาก แต่ก็อธิบายได้ง่ายๆ ก็คือ คนไทยเรามีภาษาพื้นบ้านใช่ไหมครับ ... ไม่จำเป็นที่เราจะต้องเข้าใจทุกภาษาใช่ไหมครับ ... แต่เราสามารถให้คนที่เข้าใจทั้งภาษาพื้นบ้านนั้น และเข้าใจภาษา ที่เราพูดเป็นสื่อกลางแทนได้ใช่ไหมครับ ... ไมโครโปรเซสเซอร์เองก็เหมือนกันครับ ... ในตัวของมันมีภาษาที่เขียนใน รหัสเลขฐาน 2 ครับ ... มันก็เข้าใจแต่ระบบเลขฐานสองครับ ... ดังนั้น ถ้าเราจะเขียนโปรแกรมก็ต้องใช้เลขฐานสอง หรือเขียนเป็นเลขฐานสิบหกใช่ไหมครับ ... เวลาที่เราใช้ single board ปกติเราจะต้องใช้วิธีนี้ใช่ไหมครับ ... แต่ปกติแล้วผู้ออกแบบไมโครโปรเซสเซอร์ เขาจะออกแบบเป็นคำสั่งภาษาแอสเซมบลีด้วยใช่ไหมครับ เช่น

	ld	a,5
	ld	b,6
	add	a,b
	halt

จากตัวอย่างโปรแกรมแอสเซมบลีด้านบน เมื่อเราเขียนเสร็จ เราต้องทำการแปลงให้เป็นเลขฐานสอง หรือ เลขฐานสิบหกใช่ไหมครับ (ปกติเรานิยมใฃ้เลขฐาน 16 เพราะว่า เขียนได้สั้นกว่าเลขฐาน 2) เวลาที่เราจะแปลง เราก็ต้อง ใช้การเปิดตาราง แล้วเทียบว่าคำสั่งในแต่ละบรรทัดนั้น ตรงกับเล๘ฐานสิบหก เป็นเลขอะไร ทำอย่างนี้จนกว่าจะหมด โปรแกรมที่เราเขียน เสร็จแล้วก็เอาเลขฐานสองที่ได้มาทั้งหมด ไปเขียนผ่านทางแป้นพิมพ์ของ single board ใช่ไหมครับ ... แล้วค่อย run โปรแกรม ถ้าโปรแกรมผิด ก็ต้องตรวจว่าเราแปลงผิดหรือเปล่า พอดูแล้วว่าไม่ผิดก็ต้องมาดูอีกว่า เราเขียนโปรแกรมผิดที่จุดใด บรรทัดใด พอแก้เสร็จก็ต้องทำการแปลงใหม่อีก ... แล้วยิ่งโปรแกรมยาวขึ้นล่ะ ??? ... ทั้งหมดนี้ไม่สนุกใช่ไหมครับ ... ดังนั้น เพื่อลดความผิดพลาด และลดเวลาที่เสียไปจากการแปลงรหัส จึงมีคนเขียน โปรแกรมที่ทำหน้าที่แปล ภาษาแอสเซมบลีให้เป็นรหัสเครื่อง แล้วเราก็เอาไฟล์ผลลัพธ์ที่เป็นรหัสเครื่องนั้น download ลงไปที่ตัว single board เวลาที่โปรแกรมทำงานผิด ก็ค่อยมั่นใจได้หน่อยว่าเราเขียนโปรแกรมผิด (เพราะปกติแล้ว คนเขียนตัวแปล เขาจะตรวจสอบความถูกต้องของโปรแกรมมาแล้วอย่างดี) พอแก้เสร็จเราก็แค่เรียกใช้โปรแกรมนี้เท่านั้น ... ง่ายขึ้นไหมครับ ... โปรแกรมที่ทำหน้าที่แปลง ภาษาแอสเซมบลีเป็นรหัสเครื่องนั้น เราเรียกว่า assembler ครับ ...

คราวนี้เราจะใช้ assembler ตัวใดดีล่ะ ... มีให้เลือกหลายตัวครับ แต่ผมขอเลือกตัวที่แจกฟรี พร้อม source code เลยล่ะกันครับ เพราะจะได้มีประโยชน์ในหลายด้าน ไม่ว่าจะเป็นเรื่องฟรี (ไม่ละเมิดลิขสิทธิ์ของใคร) และมี source code ทำให้เราศึกษาวิธีการเขียน assembler ได้อีกด้วย ... โปรแกรมนี้เขียนโดย William C. Colley III เขียนมาตั้งแต่ปี 1988 ก็ประมาณ 12 ปีแล้วครับ (ปีที่เขียนบทความนี้เป็นปี ค.ศ. 2000) แล้วเขาก็กำหนดข้อบังคับเอาไว้ด้วย... ก็ดูรายละเอียดกันเอาเองด้านล่างนี้ละกันครับ

/*
	HEADER:		CUG276;
	TITLE:		Z-80 Cross-Assembler (Portable);
	FILENAME:	AZ80.DOC;
	VERSION:	0.1;
	DATE:		08/27/1988;
	SEE-ALSO:	AZ80.H;
	AUTHORS:	William C. Colley III;
*/

                           Z-80 Cross-Assembler (Portable)
                                     Version 0.1
                   Copyright (c) 1986-1988 William C. Colley, III
                              The manual such as it is.

          Legal Note:    This package may be used for any commercial or
                         non-commercial purpose.  It may be copied and
                         distributed freely provided that any fee charged
                         by the distributor of the copy does not exceed the
                         sum of:  1) the cost of the media the copy is
                         written on,  2) any required costs of shipping the
                         copy, and  3) a nominal handling fee.  Any other
                         distribution requires the written permission of
                         the author.  Also, the author's copyright notices
                         shall not be removed from the program source, the
                         program object, or the program documentation.

ว่าแล้วสัปดาห์นี้เราก็ download โปรแกรมไปศึกษากันก่อนดีกว่าครับ ... สัปดาห์หน้าผมก็จะเริ่ม เขียนโปรแกรมกับ Z80 กันแล้วล่ะครับ ...


download z80a

เพิ่มเติม

ผมได้แก้ไขข้อผิดพลาด และเรียบเรียงเอกสารเป็นภาษาไทยบางส่วนแล้วครับ ... ตอนนี้โปรแกรม az80.exe ทำงานบน win32 แบบ console mode นะครับ ... รายละเอียดการคอมไพล์ ดูได้จากเอกสาร

download az80w



เขียนโดย : ศุภชัย บุศราทิจ
Author : Supachai Budsaratij
e-mail : raek@se-ed.net
วันที่ทำการปรับปรุง : ๒๒ ก.ย. ๒๕๔๓, ๑๐ ต.ค. ๒๕๔๓