More Related Content
Similar to บทที่ 4 การเขียนโปรแกรมภาษาแอสแซมบลี
Similar to บทที่ 4 การเขียนโปรแกรมภาษาแอสแซมบลี (20)
More from Nattawut Kathaisong
More from Nattawut Kathaisong (16)
บทที่ 4 การเขียนโปรแกรมภาษาแอสแซมบลี
- 1. บทที่ 4
การเขียนโปรแกรมภาษาแอสเซมบลี
ภาษาแอสเซมบลี
คาสั่งเทียมของภาษาแอสเซมบลี
การกาหนดค่าตัวเลขในภาษาแอสเซมบลี
การอ้างตาแหน่ง
ขั้นตอนการเขียนโปรแกรมภาษาแอสเซมบลี
การเขียนโปรแกรมภาษแอสเซมบลีโดยใช้โปรแกรม Notepad
การเขียนโปรแกรมภาษแอสเซมบลีโดยใช้โปรแกรม Edit
- 2. 4.1 ภาษาแอสเซมบลี
ภาษาแอสเซมบลี(Assembly Language) เป็นภาษาคอมพิวเตอร์
ภาษาหนึ่ง การเขียนโปรแกรมจะใช้คาย่อสั้นๆ เพื่อสื่อความหมาย
และแทนรหัสคาสั่งของภาษาเครื่องเพื่อให้ง่ายต่อการใช้งาน เช่น
คาสั่ง MOV ย่อมาจาก MOVE หมายถึงการโอนย้ายข้อมูล เมื่อเขียน
โปรแกรมภาษาแอสเซมบลีเสร็จ ต้องใช้โปรแกรมแปล
ภาษาแอสเซมบลีหรือเรียกว่าแอสเซมเบลอร์ (Assembler) ทาการ
แปลเป็นภาษาเครื่องหรือไฟล์ฐานสิบหก จากนั้นจึงนาไปเขียนลงใน
หน่วยความจาของไมโครคอนโทรลเลอร์ต่อไป
- 14. จากรูปที่ 4.4 แสดงขั้นตอนของการเขียนโปรแกรม
ภาษาแอสเซมบลี เริ่มจากใช้โปรแกรมสร้างข้อความเช่นโปรแกรม
Notepad Microsoft Word หรือ Edit ในการเขียนโปรแกรมจากนั้น
จึงทาการบันทึกไฟล์ให้มีนามสกุลเป็น .ASM แล้วจึงทาการ
แปลภาษาโดยใช้ตัวแปลภาษาหรือแอมเซมเบลอร์ (Assembler) ถ้า
หากมีข้อผิดพลาดจะต้องกลับไปแก้ไขโปรแกรมใหม่แต่ถ้าหากไม่มี
ข้อผิดพลาดก็จะได้ไฟล์ที่มีนามสกุลเป็น .HEX หรือไฟล์ฐานสิบหก
ซึ่งเป็นภาษาเครื่องเพื่อจะใช้ในการเขียนหรือโปรแกรมลงใน
หน่วยความจาของไมโครคอนโทรลเลอร์ต่อไป
- 18. ลาดับที่ 4. ทาการบันทึกไฟล์เป็น EX1.ASM
ลาดับที่ 5. ทาการแปลภาษาโดยใช้โปรแกรมแปลภาษาหรือโปรแกรมแอ
สเซมเบลอร์ SXA51 Core Assemble ของบริษัท Binary Technology ซึ่ง
จะทาการแปลภาษาแอสเซมบลีให้เป็นภาษาเครื่องซึ่งจะเป็นไฟล์
เลขฐานสิบหกโดยมีรูปแบบของคาสั่งดังนี้
SXA51 [-lcnd] File_name.ASM
[-lcnd] คือพารามิเตอร์ (Parameter) มีที่ใส่ดังนี้
-l : Make a Listing File
-c : Include a symbol cross reference
-n : Don’t make an object File
-d : be verbose
- 20. 4.7 การเขียนโปรแกรมภาษแอสเซมบลีโดยใช้โปรแกรม Edit
โปรแกรม Edit เป็นโปรแกรมที่ใช้เขียนข้อความที่ทางานบน
DOS เช่นเดียวกับโปรแกรม SXA51 ทาให้การเขียนโปรแกรม
ภาษาแอสเซมบลีและการแปลภาษาไม่ต้องสลับโหมดการทางาน
ระหว่าง DOS และ Windows เหมือนกับโปรแกรม Notepad ทาให้
ง่ายต่อการใช้งานซึ่งการใช้โปรแกรม Edit มีขั้นตอนดังนี้
- 21. ลาดับที่ 1. ใช้โปรแกรม Edit โดยการเรียกไฟล์edit.com โดยการ
พิมพ์คาสั่ง edit ที่ DOS prompt ก็จะเข้าโปรแกรม Edit ดังรูป
รูปที่ 4.8 หน้าต่างของโปรแกรม Edit
- 23. ลาดับที่ 3. ทาการบันทึกไฟล์เป็น EX1.ASM
ลาดับที่ 4. ทาการแปลภาษาโดยใช้แอสเซมเบลอร์ SXA51 ดังนี้
C:SXA51>51SXA51 -L EX1.ASM
เมื่อใช้โปรแกรม SXA51 ทาการแปลภาษาก็จะได้ไฟล์
EX1.HEX และไฟล์ EX1.LST ซึ่งไฟล์ EX1.HEX จะใช้ในการเขียน
หรือโปรแกรมลงหน่วยความจาของไมโครคอนโทรลเลอร์ส่วน
ไฟล์ EX1.LST จะแสดงรายละเอียดของตาแหน่งแอดเดรส รหัส
คาสั่ง และภาษาแอสเซมบลีซึ่งจะอยู่ในรูปของไฟล์ข้อความแสดง
ดังรูปที่ 4.10
- 25. ตัวอย่างที่ 4.1 โปรแกรมคูณเลขระหว่างรีจีสเตอร์ A กับ รีจีสเตอร์ B
ORG 8100H ;Start Address 8100H
MOV A,#05H ;(A)=05H
MOV B,#12H ;(B)=12H
MUL AB ;AxB=05Hx20H=005AH
MOV 20H,A ;(20H)=(A)=5AH
MOV 21H,B ;(21H)=(B)=00H
END ;End Program
- 33. R1=0
START
ORG 8100 H
R1 = 05H
A = 0
A = A+R1
YES
NO
R1 =R1-1
END
รูปที่ 4.11 โฟลว์ชาร์ตการทางานของโปรแกรมบวกเลข 5 ถึง 1
- 37. START
ORG 8100H
R1=0FH กำหนดการวนวนรอบ 15 รอบ
R2=(20H) ช
ี ้ ข
้ อม
ู ลท
ี ่ ตำแหน
่ ง 20H
(30)=(R2)=((20H)) เก
็ บค
่ าเร
ิ ่ มต
้ น
C=1
A<(R2)
(A)=(30H) เก
็ บค
่ าน
้ อยส
ุ ดไว
้ ใน A
Carray Flag=0
A=A-(R2)
ถ้า A < R2 จะทาให้ C=1
(30H)=((R2))
เก็บค่าน้อยสุดไว้ในตาแหน่ง 30H
R2=R2+1 เล
ื ่ อนต
ั วช
ี ้
R1=R1-1 ลดค
่ า R1
R2=0
END
Yes
Yes
No
No
รูปที่ 4.12 โฟลว์ชาร์ตการค้นหาค่าข้อมูลที่น้อยสุด
- 42. START
ORG 8100H
P1 = AAH
P1 = 55H
CALL DELAY
CALL DELAY
รูปที่ 4.13 โฟลว์ชาร์ตการทางานของตัวอย่างที่ 4.6
- 43. R1 = 05H
RET
R1 = R1-1
R2 = R2-1
R3 = R3-1
R3 = FFH
R2 = FFH
R3 0
R2 0
R1 0
YES
NO
YES
YES
NO
NO
DJNZ R1,DELAY1
DJNZ R3,$
DJNZ R2,DELAY2
รูปที่ 4.14 โฟลว์ชาร์ตการทางานของโปรแกรมย่อย DELAY
- 48. ตัวอย่างที่ 4.8 โปรแกรมไฟวิ่งออกพอร์ต P1 ตามลาดับ 1 ถึง 4
ดังนี้
ลาดับที่ 1. *000 000*=10000001B=81H
ลาดับที่ 2. 0*00 00*0=01000010B=42H
ลาดับที่ 3. 00*0 0*00=00100100B=24H
ลาดับที่ 4. 000* *000=00011000B=18H