⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhang2.asm

📁 汇编的课程设计
💻 ASM
字号:
extrn   delay:far
data segment

ftable dw 2 dup(262,294,330,262)
       dw 2 dup(330,349,392,19)
       dw 2 dup(392,440,392,349,330,262)
       dw 2 dup(294,196,262,19),-1
ttable dw 8 dup(8)
         dw 8 dup(8)
         dw 2 dup(4,4,4,4,8,8) 
dw 8 dup(8) 
data      ends
code segment
assume cs:code,ds:data
begin: mov ax,data
mov ds,ax
lea si,ftable
lea bp,ds:ttable
freq:   mov di,[si]
cmp di,-1
je exit
mov bx,DS:[BP]
call sound
add si,2
add bp,2
jmp freq
exit:   mov ah,4ch
int 21h

sound      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
sound      endp

code ends
                   end begin

;--------------------------------------------------------------------------------------------------

这中间还用到了一个延迟用的通用子程序: delay

在delay.asm里实现:

;--------------------------------------------------------------------------------------------------

public   delay
code segment
assume cs:code
delay proc far
push ax
ms250: mov cx,16666
us015: in al,61h
and al,10h
cmp al,ah
je us015
mov ah,al
loop us015
dec bl
jnz ms250
pop ax
   ret
delay    endp 
code ends
end 

;--------------------------------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -