[ บทความ : การติดตั้ง และใช้งาน SBASIC ตอน 2 (จบ) ] |
จากบทความตอนแรก [ ... อ่านบทความเก่า ... ] เราได้ทำการติดตั้งโปรแกรม SBASIC ไปเรียบร้อยแล้ว ... และผมได้แปะโป้งเรื่องการใช้งาน SBASIC Version 2.5 เอาไว้ ดังนั้น ในบทความตอนนี้เราจะมาศึกษาวิธีการใช้งานและเงื่อนไขต่างๆ ในการ เขียนโปรแกรมภาษาเบสิกด้วย SBASIC ...
ก่อนอื่นให้ผู้อ่านทำการสร้างไฟล์ชื่อ hello.bas โดยคีย์โปรแกรมดังตัวอย่างด้านล่างนี้
ตอนนี้เราได้ซอร์สโปรแกรมภาษาเบสิกที่พร้อมจะนำไปทำการแปลเป็นภาษาแอสเซมบลีแล้ว ... ก่อนอื่นเรามาทำความรู้จัก กับรายละเอียดของโปรแกรมกันก่อนดีกว่าครับ ...
' ------------------------------------------------------------------ ' ' Filename : Hello.BAS . . . ' http://king_it.rajabhat.edu/~raek . . .ส่วนนี้เป็น comment หรือคำอธิบายโปรแกรม ... ในภาษาเบสิกนั้น เราถือว่า อะไรที่ต่อท้ายเครื่องหมาย ' จะเป็นส่วนของคำอธิบายโปรแกรม ตลอดทั้งบรรทัดนั้น บรรทัดต่อมาคือ include "regs11.lib" เป็นการบอกว่าเราจะทำการเขียนโปรแกรมโดยใช้ระบบรีจิสเตอร์ของ 68hc11 (SBASIC สามารถคอมไพล์ได้ทั้ง 68HC11 และ 68HC12) ... บรรทัดต่อไปนี้เป็นจุดเริ่มต้นของโปรแกรม
main: pokeb baud, $30 ' 9600bps pokeb sccr2,$0c ' Eneble rcvr and xmtr print "Hello, SBASIC11..."ข้อบังคับของ SBASIC ก็คือว่า SBASIC จะเริ่มทำงานที่เลเบิล (Label) ที่ชื่อว่า main: เสมอ ส่วนบรรทัดต่อมาอีก 2 บรรทัด เป็นส่วนกำหนดรูปแบบการสื่อสารผ่านทางพอร์ตสื่อสารอนุกรม ... โดยได้กำหนดเอาไว้ว่า จะทำการสื่อสารที่ความเร็ว 9600bps ทั้งแบบรับข้อมูลและส่งข้อมูล ... ส่วนบรรทัดสุดท้ายที่เขียนเอาไว้ว่า print "..." จะเป็นการส่งข้อความไปทางพอร์ตสื่อสารอนุกรม ส่วนบรรทัดที่พิมพ์ว่า END จะเป็นบรรทัดสิ้นสุดโปรแกรมรายละเอียดที่มากกว่านี้คงต้องขอให้ผู้อ่านศึกษาต่อจากเอกสารของ SBASIC ที่ได้ดาวน์โหลดไปพร้อมกับตัวโปรแกรมต่อเอาเองนะครับ ... ผมคงทำได้เพียงแค่แนะนำ หรือเป็นแนวทางสำหรับการ นำไปใช้งานต่อไปเพียงเท่านั้นครับ ... ก่อนที่เราจะมาทำการคอมไพล์โปรแกรม ขอให้ผู้อ่านมั่นใจก่อนว่าได้กำหนดค่าตัวแปรระบบเอาไว้ดังนี้เป็นที่เรียบร้อยแล้ว ..
ถ้าเรียบร้อยแล้ว ยังมีข้อกำหนดเพิ่มเติมอีก 1 ข้อครับ คือ เราจะต้องมีไฟล์ที่ชื่อ codes.p11 และ offsets.p11 ในไดเร็คทอรีเดียวกับซอร์สโค้ดที่เราจะทำการคอมไพล์ด้วยเสมอ (ไฟล์ทั้งสองนี้จะอยู่ที่เดียวกับไฟล์ sbasic.exe ให้เราทำการคัดลอกมา หรือไมก็เขียนโปรแกรมในไดเร็คทอรีเดียวกันไปเลยก็ได้)
เมื่อเรียบร้อยก็ทำการคอมไพล์ได้ตามลำดับต่อไปนี้เลยครับ...การคอมไพล์ ขั้นที่ 1
sbasic Hello.bas /v0000 /c2200 /s00ff /m6811 > hello.ascขั้นตอนนี้จะเป็นการแปลภาษาเบสิกให้เป็นไฟล์ภาษาแอสเซมบลี ซึ่งในการแปลนั้นมีข้อกำหนดที่เราต้องบอกตัวแปลภาษาดังนี้
1. ชื่อไฟล์ เรากำหนดว่าไฟล์ต้นฉบับชื่อ Hello.bas
2. กำหนดให้ข้อมูลของโปรแกรมเริ่มต้นที่ 0000h โดยกำหดว่า /v0000
3. กำหนดให้โปรแกรมเริ่ม ณ ตำแหน่ง 2200h (พอใช้กับโปรแกรม monitor ของ ETT จะเริ่มต้นที่ตำแหน่งนี้ ถ้าใช้กับ monitor อื่นก็สามารถเปลี่ยนแปลงได้ตามความต้องการ) โดยกำหนดว่า /c2200
4. กำหนดจุดเริ่มต้นของสแต็กให้อยู่ที่ 00FFh โดยกำหนดว่า /s00ff
5. กำหนดให้ทำการแปลเป็นไฟล์แอสเซมบลีสำหรับ 68hc11 โดยกำหนดว่า /m6811
6. เนื่องจากการแปลภาษานั้น sbasic จะแสดงผลลัพธ์ออกมาทาง console (จอภาพ หรือ stdout) แต่เราต้องการได้เป็นไฟล์ข้อมูล ดังนั้น เราเลยกำหนดให้การแสดงผลเปลี่ยนไปเป็นไฟล์ที่ชื่อ hello.asc โดยกำหนดว่า > hello.asc
การคอมไพล์ ขั้นที่ 2
asmhc11 hello.ascจากขั้นตอนแรกเราได้ไฟล์ภาษาแอสเซมบลีสำหรับ 68hc11 ชื่อว่า hello.asc เป็นที่เรียบร้อย ในขั้นตอนสุดท้ายตรงนี้เราก็ทำการแปลภาษาแอสเซมบลีให้เป็นไฟล์ฐานสิบหก หรือที่เรียกว่า S-Record format ดังนั้น เมื่อ ทำการสั่งดังคำสั่งด้านบนเราก็จะได้ไฟล์ผลลัพธ์เป็น hello.s19 พร้อมทั้งไฟล์ hello.lst ... เมื่อเราได้ไฟล์ฐานสิบหกแล้ว ขั้นตอนสุดท้ายของเราก็คือ ทำการโหลดโปรแกรมลงหน่วยความจำบนบอร์ด ซึ่งผมใช้โปรแกรม Hyper Terminal ในการทำงาน... ซึ่งเมื่อโหลดแล้วทำการ run จะได้ผลลัพธ์ออกมาเป็นดังนี้ครับ