ขอถามคนเก่ง เขียนโปรแกรม Assembly นิดนึง

กระทู้คำถาม
ขอถามคนเก่ง Assembly นิดนึง

พอดีได้โจทย์มา 2 ข้อ คือ เขียนโปรแกรมด้วยภาษา Assembly บน MS Dos

1.เขียนโปรแกรมเพื่อแสดง ? และให้รับค่าตัวเลข 2 ตัว จากนั้นให้แสดงผลบวกในบรรทัดถัดไป
2.เขียนโปรแกรมให้รับอักษรเข้าไป 3 ตัวจากนั้นให้แสดงผลตรงกลางกรอบสีเหลี่ยม ขนาด 11x11 พร้อมส่งเสียง BEEP 1 ครั้ง

ขอบคุณสำหรับ คห.1 ตอนนี้แก้โจทย์ได้ละคับ

1. เขียนโปรแกรมเพื่อแสดง “?” และให้รับค่าตัวเลข 2 ตัว จากนั้นให้แสดงผลบวกในบรรทัดถัดไป
.model small
.stack 100h

.code

start:

mov ah,02h
mov dl,063
int 21h
mov dl,032
int 21h

mov ah,01
int 21h
mov bl,al

mov ah,02h
mov dl,032
int 21h
mov dl,043
int 21h
mov dl,032
int 21h

mov ah,01h
int 21h
mov cl,al

mov ah,02
mov dl,010
int 21h
mov dl,013
int 21h
mov dl,061
int 21h



sub bl,048
sub cl,048

add bl,cl
add bl,048

cmp bl,058
jge seg1

mov dl,bl

int 21h

jmp endprogram

seg1: sub bl,048
cmp bl,010
jz num10
cmp bl,011
jz num11
cmp bl,012
jz num12
cmp bl,013
jz num13
cmp bl,014
jz num14
cmp bl,015
jz num15
cmp bl,016
jz num16
cmp bl,017
jz num17
cmp bl,018
jz num18


num10:
mov dl,'1'
int 21h
mov dl,'0'
int 21h
jmp endprogram

num11: mov dl,'1'
int 21h
mov dl,'1'
int 21h
jmp endprogram

num12: mov dl,'1'
int 21h
mov dl,'2'
int 21h
jmp endprogram

num13: mov dl,'1'
int 21h
mov dl,'3'
int 21h
jmp endprogram

num14: mov dl,'1'
int 21h
mov dl,'4'
int 21h
jmp endprogram

num15: mov dl,'1'
int 21h
mov dl,'5'
int 21h
jmp endprogram

num16: mov dl,'1'
int 21h
mov dl,'6'
int 21h
jmp endprogram

num17: mov dl,'1'
int 21h
mov dl,'7'
int 21h
jmp endprogram


num18: mov dl,'1'
int 21h
mov dl,'8'
int 21h


endprogram:

mov ax,4c00h
int 21h

end start


2. เขียนโปรแกรมให้รับอักษรเข้าไป 3 ตัว จากนั้นนำไปแสดงผลตรงกลางกรอบสี่เหลี่ยมขนาด 11x11 พร้อมส่ง
เสียง BEEP 1 ครั้ง

.model small
.stack 100h
.data
    text db 'ENTER 3 CHARACTER:$'
        
.code

    start:
    
        mov ax,@data
        mov ds,ax
        
        mov ah,09h
        mov dx,offset text
        int 21h
    
        mov cx,3
;=========================
    forloop1:                
        mov ah,01h
        int 21h
        mov [di],al
        inc di
        loop forloop1
;===========================     
    mov dl,10
        mov ah,02h
        int 21h         ; Enter 1
        mov dl,13
        int 21h
;===========================      
        mov cx,11  
              
    forloop2:                
        mov dl,26
        mov ah,02h
        int 21h
        loop forloop2
        
        mov dl,10
        mov ah,02h
        int 21h
        mov dl,13
        int 21h
;=============================        
        mov cx,11
        mov bx,9  
        sub di,3        
    forloop3:
    
        cmp cx,11
        je vector
        cmp cx,1
        je vector
        cmp bx,5
        je printchar

    spa1:        
        mov dl,32
        mov ah,02h
        int 21h
        jmp endspa
      
    vector:                              
        mov dl,25
        mov ah,02h
        int 21h
        jmp endspa

    printchar:
        cmp cx,7
        je char1
        cmp cx,6
        je char1
        cmp cx,5
        je char1
        jne spa1

    char1:
        mov dl,[di]
        mov ah,02h
        int 21h
        inc di
        
    endspa:  
        loop forloop3  
        
        mov dl,10
        mov ah,02h
        int 21h
        mov dl,13
        int 21h
        dec bx        
        mov cx,11
        cmp bx,0
        jnz forloop3
      
;==============================
        mov cx,11  
                
    forloop4:                
        mov dl,26
        mov ah,02h
        int 21h
        loop forloop4
        
        mov dl,07h   ;sound Beep
        mov ah,02h
        int 21h

        mov ax,4c00h
        int 21h
        
end start
แก้ไขข้อความเมื่อ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 1
-*-  คำถามคืออัลไล ???

1. mov, add, int21, ah9   ใบ้สุดๆแล้ว
2. ทำข้อแรกได้เดี๋ยวข้อนี้ก็มี idea ออกมาเอง
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่