目录 上一页 下一页 下一章

第4章 奇妙的声音 -53-





sound

main
















main
code

or
out

ret
endp

proc
push
sub
push

mov
mov
mov
mov
int
call
mov
int
in
and
out
ret
endp
ends
end
al,3
PORT_B,al




far
ds
ax,ax
ax

ax,data
ds,ax
dx,offset mess
ah,09h
21h
sound
ah,1
21h
al,PORT_B
al,0fch
PORT_B,al



main



;子过程返回


;#5--主过程开始
;#6--初始化堆栈,建立返回地址



;#7--初始化DS寄存器

;#8--显示MESS


;调用SOUND发声

;等待按键

;停止发声

;主过程返回
;主过程结束
;代码段结束
;进程结束
  使用SUB指令的一些注意事项将在后面介绍。请注意这个程序中用许多前面加了"#"的注释文字将源程序分成了小块,这些说明性的文字可以不必录入,但如果大家在自己编制程序时能够加入必要的注释将会培养出一种很受欢迎的编程风格。
  程序的"#1"部分作用是定义常量,所谓常量其实就是用一些具有特殊含义的字串来代替数字用在程序中。常量定义有两种方法:

常量名 EQU 数字



常量名 = 数字
  “=”和“EQU”伪指令的作用是一样的。注意汇编语言并不要求用户在编制每一个程序时都定义常量,但是把一些程序中经常用到的数据定义成常量还是很有好处的,因为一旦需要修改数据,则只需在常量定义部分修改即可,而不必在源程序中苦苦寻找。
  “#2”部分定义了一个数据段,其定义方法同4.1.2节介绍的代码段一样,也使用
“SEGMENT”伪指令。需要注意的是数据段中用了伪指令--ASSUME,现在是应该使用这个伪指

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章