Tutorial

program Assembler untuk sound/suara

* Suara progam *
jmp input JMP masukan
beat db 8 mengalahkan db 8
nota dw 3531 nota dw 3531
nota1 dw 3032 nota1 dw 3032
nota2 dw 4030 nota2 dw 4030
nota3 dw 2728 nota3 dw 2728
nota4 dw 2425 nota4 dw 2425
nota5 dw 2023 nota5 dw 2023
nota6 dw 1520 nota6 dw 1520
nota7 dw 1313 nota7 dw 1313


music: musik:
mov si,0 mov si, 0
balik_sound: balik_sound:
mov ax,0040h mov ax, 0040h
mov es,ax mov es, ax
in al,61h di al, 61h
or al,00000011xb atau al, 00000011xb
out 61h,al keluar 61h, al
mov al,0b6h mov al, 0b6h
out 43h,al keluar 43h, al
ret membasahi


sound1: sound1:

;1 ; 1
call music panggilan musik
lea bx,nota2 lea bx, nota2
call note catatan panggilan
call music panggilan musik
lea bx,nota lea bx, nota
call note catatan panggilan
call music panggilan musik
lea bx,nota2 lea bx, nota2
call note catatan panggilan
call music panggilan musik
lea bx,nota3 lea bx, nota3
call note catatan panggilan
call music panggilan musik
lea bx,nota1 lea bx, nota1
call note catatan panggilan
call delay call delay
call long_delay panggilan long_delay
;2 ; 2
call music panggilan musik
lea bx,nota2 lea bx, nota2
call note catatan panggilan
call music panggilan musik
lea bx,nota lea bx, nota
call note catatan panggilan
call music panggilan musik
lea bx,nota2 lea bx, nota2
call note catatan panggilan
call music panggilan musik
lea bx,nota3 lea bx, nota3
call note catatan panggilan
call music panggilan musik
lea bx,nota1 lea bx, nota1
call note catatan panggilan
call delay call delay
call long_delay panggilan long_delay

;3 ; 3
call music panggilan musik
lea bx,nota2 lea bx, nota2
call note catatan panggilan
call music panggilan musik
lea bx,nota5 lea bx, nota5
call note catatan panggilan
call music panggilan musik
lea bx,nota4 lea bx, nota4
call note catatan panggilan
call delay call delay
call long_delay panggilan long_delay
call delay call delay
call long_delay panggilan long_delay
call delay call delay
call long_delay panggilan long_delay

;4 ; 4
call music panggilan musik
lea bx,nota2 lea bx, nota2
call note catatan panggilan
call music panggilan musik
lea bx,nota5 lea bx, nota5
call note catatan panggilan
call music panggilan musik
lea bx,nota4 lea bx, nota4
call note catatan panggilan
call delay call delay
call long_delay panggilan long_delay
call delay call delay
call long_delay panggilan long_delay



;5 ; 5
call music panggilan musik
lea bx,nota2 lea bx, nota2
call note catatan panggilan
call long_delay panggilan long_delay
call music panggilan musik
lea bx,nota4 lea bx, nota4
call note catatan panggilan
call long_delay panggilan long_delay
call music panggilan musik
lea bx,nota4 lea bx, nota4
call note catatan panggilan
call long_delay panggilan long_delay
call music panggilan musik
lea bx,nota3 lea bx, nota3
call note catatan panggilan
call music panggilan musik
lea bx,nota1 lea bx, nota1
call long_delay panggilan long_delay
call note catatan panggilan

input: masukan:
mov ah,7 mov ah, 7
int 21h int 21h
cmp al,'1' cmp al, '1 '
if e call sound1 jika e panggilan sound1
cmp al,'2' cmp al, '2 '
je exit je exit
jmp input JMP masukan

note: catatan:
mov ah,0 mov ah, 0
dec ax Desember kapak
shl ax,1 SHL kapak, 1
mov dx,w[bx] mov dx, w [bx]
mov al,dl mov al, dl
out 42h,al keluar 42h, al
mov al,dh mov al, dh
out 42h,al keluar 42h, al
mov bx,offset beat mov bx, mengalahkan offset
mov cl,b[bx+si] mov cl, b [bx + si]
mov ch,0 mov ch, 0
mov bx,es:[6ch] mov bx, es: [6ch]
add bx,cx tambahkan bx, cx

still: masih:
mov dx,es:[6ch] mov dx, es: [6ch]
cmp dx,bx cmp dx, bx
if ne jmp still jika masih ne JMP
in al,61h di al, 61h
and al,0fch dan al, 0fch
out 61h,al keluar 61h, al
ret membasahi
exit: keluar:
in al,61h di al, 61h
and al,0fch dan al, 0fch
out 61h,al keluar 61h, al
int 20h int 20h
delay: delay:
mov cx,2aaaaaaaah mov cx, 2aaaaaaaah
call long_delay panggilan long_delay
long_delay: long_delay:
mov cx,0fffffffffh mov cx, 0fffffffffh
ret membasahi