📄 h[1][1].asm.txt
字号:
.model small
.data
info db 'out of Range,please enter a number again!',0dh,0ah,'$'
help db 'please enter a number !',0dh,0ah,'$'
number dw 524,588,660,698,784,880,988,1048
.stack
.code
.startup
call init
agagin:
call select
call sound
jmp again
.exit 0 ;可以通过ctrl+c结束
init proc near
mov dx,63h
mov al,80h
out dx,al;8255 B端口输出
mov dx,43h
mov al,0b6h
out dx ,al ;8253 计数器2初始化
ret
init endp
select proc near
mov ah,09h
mov dx,offset help
int 21h
flag :mov ah,01h
int 21h
cmp al,'1'
jb error
cmp al,'8'
ja error
sub al,30h
mov bx,offset number
mov bx,ds:[bx+al]
mov dx,12h
mov ax,34dch
div bx
jmp e
error : mov ah,09h
mov dx,offset info
int 21h
jmp flag
e:ret
select endp
sound proc near
mov dx,42h
out dx,al
mov al,ah
out dx,al ;先写低字节后写高字节
mov dx,61h
in al,dx ;获得8255 PB0,PB1
mov ah,al
or al,3h
out dx,al ;设置PB0 PB1为1
delay:xor cx,cx
loop delay
mov al,ah
out dx,al ;恢复PB0 PB1
ret
sound endp
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -