ขอถามคนเก่ง 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
ขอถามคนเก่ง เขียนโปรแกรม 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