?? fmq.asm
字號(hào):
stack1 segment
db 64 dup(?)
stack1 ends
dseg segment
table1 dw 262
dw 294
dw 330
dw 349
dw 392
dw 440
dw 494
dw 523 ;12345678
dseg ends
cseg segment
assume cs:cseg,ds:dseg,ss:stack1
main proc far
start: mov ax,dseg
mov ds,ax
get_char:
mov ah,0 ;讀鍵盤緩沖區(qū)數(shù)據(jù)
int 16h
cmp al,0dh
je exit
mov bx,offset table1
cmp al,'1'
jb get_char ;小于1無效,循環(huán)讀音調(diào)
cmp al,'8'
ja get_char ;大于8無效,循環(huán)
shl ax,1
sub ax,2
;sub ax,'1'
;shl ax,1
mov si,ax
mov di,[bx][si]
mov bx,00ffh
call fasheng
jmp get_char
exit:
mov ah,4ch
int 21h
main endp
fasheng proc near
push ax
push bx
push cx
push dx
push di
mov al,0b6h
out 43h,al
mov dx,12h
mov ax,348ch
div di
out 42h,al
mov al,ah
out 42h,al
in al,61h
mov ah,al
or al,3
out 61h,al
call delay
mov al,ah
out 61h,al
pop di
pop dx
pop cx
pop bx
pop ax
ret
fasheng endp
delay proc near
push ax
push bx
push cx
push dx
mov ax,00h
mov dx,ax
loop1:mov ah,2
int 1ah
mov ax,dx
cmp al,bl
jl loop1
pop dx
pop cx
pop bx
pop ax
ret
delay endp
cseg ends
end start
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -