[ บทความ : มาเขียนโปรแกรมกับ 68HC11 กันเถอะ ตอนที่ 6 ] การถ่ายโอนข้อมูลขนาด 16 บิต |
จุดประสงค์
เรียนรู้
คำสั่งการถ่ายโอนข้อมูลแบบ 16 บิต
อันได้แก่
LDD, LDX, LDY, LDS, STD, STX, STY, STS, XGDX, XGDY, TSX, TSY, TXS และ
TYS
คำสั่ง/รูปแบบและผลการทำงาน
คำอธิบายผมก็จะเหมือนเดิมครับ
คือ มี3
หัวข้อคือ
รูปแบบของการเขียน , ผลที่เกิดต่อ
CCR
หลังจากที่คำสั่งนั้น
ๆ ได้ประมวลผลไปแล้ว และ
คำอธิบายสั้นๆ เพื่อบอกว่า
คำสั่งนั้น
มีการทำงานอย่างไร
LDD |
|
รูปแบบ | LDD M |
ผลต่อ CCR | N, Z, V=0 |
หน้าที่ | คำสั่งนี้จะนำค่า ณ ตำแหน่ง M ไปเก็บในเรจิสเตอร์ A และข้อมูล ณ ตำแหน่ง M+1 ไปเก็บใน เรจิสเตอร์ B |
LDX |
|
รูปแบบ | LDX M |
ผลต่อ CCR | N, Z, V=0 |
หน้าที่ | คำสั่งนี้จะนำค่า ณ ตำแหน่ง M:M+1 ไปเก็บใน เรจิสเตอร์ IX |
LDY |
|
รูปแบบ | LDY M |
ผลต่อ CCR | N, Z, V=0 |
หน้าที่ | คำสั่งนี้จะนำค่า ณ ตำแหน่ง M:M+1 ไปเก็บใน เรจิสเตอร์ IY |
LDS |
|
รูปแบบ | LDS M |
ผลต่อ CCR | N, Z, V=0 |
หน้าที่ | คำสั่งนี้จะนำค่า ณ ตำแหน่ง M:M+1 ไปเก็บใน เรจิสเตอร์ SP ซึ่งเรจิสเตอร์ตัวนี้ จะมีหน้าที่ชี้ไปยังตำแหน่งเริ่มต้นของหน่วยความจำแบบ สแต็ก |
STD | |
รูปแบบ | STD M |
ผลต่อ CCR | N, Z, V=0 |
หน้าที่ | คำสั่งนี้จะนำค่า ในเรจิสเตอร์ A ไปเก็บในหน่วยความจำ ณ ตำแหน่ง M และนำค่าจาก เรจิสเตอร์ B ไปเก็บในหน่วยความจำตำแหน่ง M+1 |
STX | |
รูปแบบ | STX M |
ผลต่อ CCR | N, Z, V=0 |
หน้าที่ | คำสั่งนี้จะนำค่า ในเรจิสเตอร์ IX ไปเก็บในหน่วยความจำ ณ ตำแหน่ง M:M+1 |
STY | |
รูปแบบ | STY M |
ผลต่อ CCR | N, Z, V=0 |
หน้าที่ | คำสั่งนี้จะนำค่า ในเรจิสเตอร์ IY ไปเก็บในหน่วยความจำ ณ ตำแหน่ง M:M+1 |
STS | |
รูปแบบ | STS M |
ผลต่อ CCR | N, Z, V=0 |
หน้าที่ | คำสั่งนี้จะนำค่า ในเรจิสเตอร์ SP ไปเก็บในหน่วยความจำ ณ ตำแหน่ง M:M+1 |
XGDX |
|
รูปแบบ | XGDX |
ผลต่อ CCR | N, Z, V=0 |
หน้าที่ | คำสั่งนี้จะนำค่า ในเรจิสเตอร์ D สลับกับค่าใน เรจิสเตอร์ IX |
XGDY | |
รูปแบบ | XGDY |
ผลต่อ CCR | N, Z, V=0 |
หน้าที่ | คำสั่งนี้จะนำค่า ในเรจิสเตอร์ D สลับกับค่าใน เรจิสเตอร์ IY |
TSX | |
รูปแบบ | TSX |
ผลต่อ CCR | ไม่มีผลกับ CCR |
หน้าที่ | คำสั่งนี้จะนำค่า (SP+1) ไปเก็บในเรจิสเตอร์ IX |
TSY | |
รูปแบบ | TSY |
ผลต่อ CCR | ไม่มีผลกับ CCR |
หน้าที่ | คำสั่งนี้จะนำค่า (SP+1) ไปเก็บในเรจิสเตอร์ IY |
TXS |
|
รูปแบบ | TXS |
ผลต่อ CCR | ไม่มีผลกับ CCR |
หน้าที่ | คำสั่งนี้จะนำค่า (IX-1) ไปเก็บในเรจิสเตอร์ SP |
TYS | |
รูปแบบ | TYS |
ผลต่อ CCR | ไม่มีผลกับ CCR |
หน้าที่ | คำสั่งนี้จะนำค่า (IY-1) ไปเก็บในเรจิสเตอร์ SP |
ตัวอย่างโปรแกรม |
ข้อมูลใน .ASM |
; Filename
: hc11w04.asm ; Author
: Supachai Budsaratij ; Assembler :
Cross-32 version 4 CPU
"68HC11.TBL" HOF
"MOT8" PORT_C: EQU
1003h DDRC:
EQU 1007h ORG
0000h DAT:
DFB 0AAh DAT1:
DFB 055h ORG
0F800h MAIN: LDS
#00Fh LDAB
#0FFh STAB
DDRC
LDD 0 ; A=0,
B=0
LDX DAT ; IX = AA55h
XGDX
; D = IX , IX = D
STS DAT ; DAT:DAT1 = SP
(00:0Fh)
LDAA DAT1 ; A = DAT1 (0Fh)
STD DAT ; DAT = A, DAT1 = B
LDD DAT STAA
PORT_C MAIN_LOOP: BRA
MAIN_LOOP ORG
0FFFEh DWM
MAIN END
|
สรุป
ตอนนี้ผมก็ได้อธิบายคำสั่งเกี่ยวกับการเคลื่อยย้ายข้อมูลไปเรียบร้อยแล้วครับ
ในตอนหน้าจะเป็น
การเคลื่อนย้าย
ข้อมูลอีกรูปแบบหนึ่ง
ซึ่งเป็นการเคลื่อนย้ายข้อมูล
โดยใช้โครงสร้างข้อมูลแบบสแต็ก
ในการทำงาน