การทำงานแบบตามลำดับ Sequential Processing
Digital logic | OS | คำสั่งดอส | Batch | Debug | Assembly | GWBasic | Docker |
พื้นฐานการทำตามลำดับ (Sequence)
1. พิมพ์ a และ b บรรทัดละตัว แล้ว end
เป็นแนวการเขียนโปรแกรมแบบ .exe โปรแกรมที่ได้มีขนาด 548 Byte

; Memory using : tiny, small, medium, compact, large, huge
        .model  small   
        .data
x1      db      "a",0dh,0ah,'$'
x2      db      "b",0dh,0ah,'$'
        .code
pmain   proc    far
; for .exe
        push    ds      ; 1 of 5 line required for end .exe
        mov     ax,0    ; 2 clear ax by xor  ax,ax
        push    ax      ; 3 send ax to stack
        mov     ax,@data
        mov     ds,ax
; display 2 character
        mov     ah,09h
        lea     dx,x1
        int     21h
        mov     ah,09h
        lea     dx,x2
        int     21h
; bye
        ret             ; Can not use int 20h
pmain   endp
        .stack  200h    ; not required
        end     pmain

2. พิมพ์ตัวอักษร a และ CF ด้วยวิธีบวกค่าเพิ่มผ่านคำสั่ง add ให้ตัวแปร x2
เป็นแนวการเขียนโปรแกรมแบบ .exe โปรแกรมที่ได้มีขนาด 564 Byte

; Result of this program is a and CF in difference line
        .model  small   
        .data
x1      db      "a",0dh,0ah,'$'
x2      db      "A",'$'
        .code
pmain   proc    far     ; can not change far to near because error on execute
; for .exe
        push    ds      ; 1 of 5 line required for end .exe
        mov     ax,0    ; 2 clear ax by xor  ax,ax
        push    ax      ; 3 send ax to stack
        mov     ax,@data
        mov     ds,ax
; display 3 character
        mov     ah,09h
        lea     dx,x1   ; get a with line feed
        int     21h
        mov     ah,09h
        add     x2,2    ; add A to C
        lea     dx,x2   ; get C
        int     21h
        mov     ah,09h
        add     x2,3    ; add C to F
        lea     dx,x2   ; get F
        int     21h
; bye
        ret             ; Can not use int 20h
pmain   endp
        .stack  200h    ; not required
        end     pmain

3. การ clear screen และ move cursor
int 10, ah 06, bh : 0=ดำ 1=น้ำเงิน 2=เขียว 3=ฟ้า 4=แดง 5=ม่วง 6=ทอง 7=เทา

        .model small 
        .data 
x1      db     "type e or E to Exit",0dh,0ah,'$' 
        .code 
pmain   proc   far      ; can not change far to near 
        push   ds       ; 1 of 5 line required for end .exe 
        mov    ax,0     ; 2 clear ax by xor ax,ax 
        push   ax       ; 3 send ax to stack 
        mov    ax,@data 
        mov    ds,ax 
; clear screen 
        mov    ax,0600h ; al หมายถึงจำนวนบรรทัดที่ว่าง 
        mov    bh,71h   ; สีของพื้น และตัวอักษร 
                        ; 0=ดำ 1=น้ำเงิน 2=เขียว 3=ฟ้า 4=แดง 5=ม่วง 6=ทอง 7=เทา 
        mov    cx,0000h ; มุมบนซ้าย 
        mov    dx,103fh ; มุมล่างขวา 
        int    10h 
; move cursor 
        mov    ah,02h   ; กำหนดตำแหน่ง cursor 
        mov    bh,00    ; เลขหน้าเป็น 0 ถึงจะเริ่มบนสุด 
        mov    dh,02h   ; เริ่มต้นบรรทัดที่ 2  
        mov    dl,10h   ; เริ่มต้นหลักที่ 16  ( mov dx,0210h ) 
        int    10h 
finish: ret 
pmain   endp 
        end    pmain 

4. การ clear screen และ move cursor แล้วพิมพ์อักษรบรรทัดละตัว
41h คือ A และ 61h คือ a

        .model small 
        .data 
x1      db     "type e or E to Exit",0dh,0ah,'$' 
        .code 
pmain   proc   far      ; can not change far to near 
        push   ds       ; 1 of 5 line required for end .exe 
        mov    ax,0     ; 2 clear ax by xor ax,ax 
        push   ax       ; 3 send ax to stack 
        mov    ax,@data 
        mov    ds,ax 
; clear screen 
        mov    ax,0600h ; al หมายถึงจำนวนบรรทัดที่ว่าง 
        mov    bh,71h   ; สีของพื้น และตัวอักษร 
                        ; 0=ดำ 1=น้ำเงิน 2=เขียว 3=ฟ้า 4=แดง 5=ม่วง 6=ทอง 7=เทา 
        mov    cx,0000h ; มุมบนซ้าย 
        mov    dx,103fh ; มุมล่างขวา 
        int    10h 
; move cursor 
        mov    ah,02h   ; กำหนดตำแหน่ง cursor 
        mov    bh,00    ; เลขหน้าเป็น 0 ถึงจะเริ่มบนสุด 
        mov    dh,02h   ; เริ่มต้นบรรทัดที่ 2  
        mov    dl,10h   ; เริ่มต้นหลักที่ 16  ( mov dx,0210h ก็ได้ ) 
        int    10h 
; A
        mov    ah,02h    
        mov    dl,41h    
        int    21h 
; move cursor 
        mov    ah,02h   ; กำหนดตำแหน่ง cursor 
        mov    bh,00    ; เลขหน้าเป็น 0 ถึงจะเริ่มบนสุด
        mov    dx,0310h   ; เริ่มต้นบรรทัดที่ 3  และเริ่มต้นหลักที่ 16
        int    10h 
; a
        mov    ah,02h    
        mov    dl,61h    
        int    21h 
finish: ret 
pmain   endp 
        end    pmain