ไมโครโปรเซสเซอร์ - ชุดคำสั่ง 8085
ให้เรามาดูการเขียนโปรแกรมของไมโครโปรเซสเซอร์ 8085
ชุดคำสั่งคือรหัสคำสั่งในการทำงานบางอย่าง แบ่งออกเป็นห้าประเภท
ส. | คำแนะนำและคำอธิบาย |
---|---|
1 | คำแนะนำในการควบคุม
ต่อไปนี้เป็นตารางแสดงรายการคำสั่ง Control พร้อมความหมาย |
2 | คำแนะนำเชิงตรรกะ
ต่อไปนี้เป็นตารางแสดงรายการคำสั่งตรรกะพร้อมความหมาย |
3 | คำแนะนำในการแยกสาขา
ต่อไปนี้เป็นตารางแสดงรายการคำสั่งการแตกแขนงพร้อมความหมาย |
4 | คำแนะนำทางคณิตศาสตร์
ต่อไปนี้เป็นตารางแสดงรายการคำสั่งเลขคณิตพร้อมความหมาย |
5 | คำแนะนำในการโอนข้อมูล
ต่อไปนี้เป็นตารางแสดงรายการคำแนะนำการโอนข้อมูลพร้อมความหมาย |
8085 - โปรแกรมสาธิต
ตอนนี้ให้เราดูการสาธิตโปรแกรมโดยใช้คำแนะนำด้านบน -
การเพิ่มตัวเลข 8 บิตสองตัว
เขียนโปรแกรมเพื่อเพิ่มข้อมูลที่ตำแหน่งหน่วยความจำ 3005H & 3006H และจัดเก็บผลลัพธ์ที่ตำแหน่งหน่วยความจำ 3007H
Problem demo -
(3005H) = 14H
(3006H) = 89H
Result -
14H + 89H = 9DH
โค้ดโปรแกรมสามารถเขียนได้ดังนี้ -
LXI H 3005H : "HL points 3005H"
MOV A, M : "Getting first operand"
INX H : "HL points 3006H"
ADD M : "Add second operand"
INX H : "HL points 3007H"
MOV M, A : "Store result at 3007H"
HLT : "Exit program"
การแลกเปลี่ยนตำแหน่งหน่วยความจำ
เขียนโปรแกรมเพื่อแลกเปลี่ยนข้อมูลที่ตำแหน่งหน่วยความจำ 5000M และ 6000M
LDA 5000M : "Getting the contents at5000M location into accumulator"
MOV B, A : "Save the contents into B register"
LDA 6000M : "Getting the contents at 6000M location into accumulator"
STA 5000M : "Store the contents of accumulator at address 5000M"
MOV A, B : "Get the saved contents back into A register"
STA 6000M : "Store the contents of accumulator at address 6000M"
จัดเรียงตัวเลขตามลำดับจากน้อยไปมาก
เขียนโปรแกรมเพื่อจัดเรียงตัวเลข 10 ตัวแรกจากที่อยู่หน่วยความจำ 3000H ตามลำดับจากน้อยไปมาก
MVI B, 09 :"Initialize counter"
START :"LXI H, 3000H: Initialize memory pointer"
MVI C, 09H :"Initialize counter 2"
BACK: MOV A, M :"Get the number"
INX H :"Increment memory pointer"
CMP M :"Compare number with next number"
JC SKIP :"If less, don’t interchange"
JZ SKIP :"If equal, don’t interchange"
MOV D, M
MOV M, A
DCX H
MOV M, D
INX H :"Interchange two numbers"
SKIP:DCR C :"Decrement counter 2"
JNZ BACK :"If not zero, repeat"
DCR B :"Decrement counter 1"
JNZ START
HLT :"Terminate program execution"