[ บทความ : ตัวแปลภาษาแอสเซมบลีสำหรับ Z8/Z80/Z8000 ]

สวัสดีครับ หายหน้าหายตากันไปนาน มาคราวนี้ผมว่าจะเอาบทความเรียนรู้คำสั่ง z80 ขึ้นเวบ สักหน่อย ก็ปั่นต้นฉบับไม่ทันครับ ... เผอิญ หลายวันก่อน เข้าไปเยี่ยมชมโฮมเพจ ที่เกี่ยวกับ z80 มา ได้โปรแกรมแอสเซมเบลอร์สำหรับ z8/z80 และ z8000 มา ก็เลย เอามาให้ผู้อ่านได้ดาวน์โหลด เพื่อนำไปใช้งานครับ ... ในรูปด้านล่างนี้เป็นรูปของไฟล์ต่างๆ ที่เกิดจากการคลายไฟล์ zasm.zip ครับ ซึ่งเป็นไฟล์ที่ใช้สำหรับ แปลภาษษแอสเซมบลีของไมโครโปรเซสเซอร์ z80 เท่านั้น

มาลองสั่งคอมไพล์ดีกว่าครับ ... ตัวโปรแกรมที่มากับ assembler ตัวนี้ มีรายละเอียดดังนี้ครับ

?a      equ     7

out0    macro   ?p,  ?r
        db      11101101B
        db      00000001B+(?&?r AND 7)  SHL 3
        db      ?p
        endm


; **********************************************************************
; Using the Z182 evaluation board
; This software does DMA by memory to asci
; DMA is the source - Output of ASCI is displayed onto the monitor
; **********************************************************************
        
        org 0E000h
        dw 03031h
        dw 03233h
        dw 03435h
        dw 03637h
        dw 03839h

; *********************************************************************
;       INITIALIZE THE ASCI 
; *********************************************************************

        org 0d400h



        ld a,024h          ; initializing the ASCI
        out0 (00h),a        ; Tx enable, 8-bits, no parity, 1 stop bit 

        ld a,021h          ; not mp mode, ps=1 (/30 mode), x16 sampling rate
        out0 (02h),a    ; parity doesn't matter, divide ratio - /2

        ld a,30h
        out0 (06h),a

; *********************************************************************
;       DMA:  MEMORY TO ASCI INITIALIZATION SEQUENCE
; *********************************************************************

        ld a,000h
        out0 (20h),a    ; load source addr of data memory
        ld a,0E0h         ; source addr is 0E000h
        out0 (21h),a
        ld a,000h
        out0 (22h),a
        
        ld a,006h
        out0 (23h),a   ; load destination addr of data memory
        ld a,000h        ; destination addr is 06h - TDR0
        out0 (24h),a
        ld a,01h         ; TDRE (ASCI channel 0)
        out0 (25b),a    

        ld a,00110010b    ; I/O fixed, Memory +1, burst mode
        out0 (31h),a    ; 

        ld a,009h
        out0 (26h),a   ; load the byte count register
        ld a,000h
        out0 (27h),a

        ld a,004h        ; load the DCNTL w/the trnsfr mode
        out0 (32h),a   ; memory - i/o, DREQ0=edge sense

        ld a,040h        ;disable DMA termination interrupt
        out0 (30h),a   ; load the dma status register

loop:   jp loop


เสร็จแล้วก็ทำการคอมไพล์ด้วยการสั่งว่า asmz80 sample80 แล้วก็จะมีการแสดงผลดังรูปด้านล่างนี้ครับ

ตอนนี้เราก็ได้ไฟล์ ฐานสิบหกมาแล้วครับ .. มาดูข้อมูลในไฟล์กันครับ

ตอนนี้เราก็มีตัวแปลภาษาแอส้ซมบลี ด้วยกัน 2 ตัวแล้วนะครับ ... ตัวใหม่นี้ มีการสนับสนุน ทั้ง Z8/ Z80 และ Z8000 ก็เป็นตัวเลือกที่ดีสำหรับใครที่มีไมโครคอนโทรลเลอร์ Z8 ของ Zolog ครับ ... ไฟล์ที่ผมนำมาให้ download นั้น มีด้วยกัน 2 ไฟล์ครับ คือ

1. zasm11 , 726KB : เป็นตัวติดตั้ง เวลาใช้ก็คลายไฟล์ .zip แล้วเรีกย setup.exe

2. zasm , 276KB : อันนี้ผมลองติดตั้ง zasm11 แล้วเลือกเฉพาะ Z80

หลังจากโอ้เอ้มาหลายสัปดาห์ คราวหน้าเรามาเรียนรู้คำสั่งที่เกี่ยวกับการแลกเปลี่ยนข้อมูลใน Z80 กันต่อครับ ...
เขียนโดย : ศุภชัย บุศราทิจ
Author : Supachai Budsaratij
e-mail : raek@se-ed.net
วันที่ทำการปรับปรุง : ๑๙ ม.ค. ๒๕๔๔