1、- -一 背景分析及意义随 着 计 算 机 的 不 断 更 新 发 展 ,计 算 机 在 各 个 领 域 的 应 用 越 来 越 多 , 更 多 的 软 件 开 发 人 员 和 相 关技 术 人 员 在 程 序 设 计 的 过 程 中 应 用 汇 编 程 序 或 编 制 汇 编 语 言 。 而 汇 编 语 言 做 为 计 算 机 专 业 大 学生 必 修 之 课 , 每 个 做 为 本 专 业 的 学 生 对 汇 编 的 理 解 和 学 习 就 显 的 尤 为 重 要 。 汇 编 语 言 是计 算 机 能 够 提 供 给用 户 使 用 的 最 快 而 又 最 好 最 有 效 的 语 言 , 也
2、 是 能 够 利 用 计 算 机 所 有 硬 件 特 性 并 能 直 接 控 制 硬 件的 唯 一 语 言 。 因 而 , 对 程 序 的 空 间 和 时 间 要 求 很 高 的 场 合 , 汇 编 语 言 的 应 用 就 显 的 必 不 可 少 了 ,一 些 直 接 控 制 硬 件 的 应 用 场 合 , 则 更 是 非 用 汇 编 语 言 不 可 了 。这 次 课 程 设 计 是 在 学 习 汇 编 语 言 与 实 践 相 结 合 的 一 次 综 合 应 用 。 通 过 具 体 的 问 题 分 析 、 设计 、 调 试 、 运 行 程 序 。 在 实 际 问 题 中 锻 炼 提 高 自 己
3、 , 增 加 了 对 本 门 课 程 内 容 的 理 解 , 锻 炼 了 动手 能 力 。 就 这 个 程 序 具 体 而 言 :知 道 了 音 调 与 频 率 和 时 间 的 关 系 , 就 可 以 按 照 乐 曲 的 曲 谱 将 每 个 音符 的 频 率 和 持 续 时 间 定 义 成 两 个 数 据 表 ; 然 后 编 写 程 序 依 次 取 出 表 中 的 频 率 值 和 时 间 值 , 调 用GENSOUNDF程序 发 出 各 种 声 音 。 这 个 程 序 最 终通 过 菜 单 所 提 示 的 信 息 选 取 所 要 欣 赏 的 音 乐,是 执 行 此 程 序 后 , 会 很 有
4、速且 有 效 的 使 扬 声 器 接 通 并 发 出 音 频 为896 Hz的 声 音 。二 总 体 设 计 思 想ROM BIOS 中 的 BEEP子 程 序 能 根 据 BL中 给 出 的 时 间 计 数 植 控 制8254定 时 器 , 产 生 持 续 时 间 计 数 值 控 制8254定 时 器 , 产 生 持 续 时 间 为1个 或 几 个 0.5 秒 ,频 率 为 896Hz的 声 音 。 通 过 对 BEEP的 修 改 , 可 产 生 任一 频 率 的 声 音 。 用 汇 编 语 言 写 的GENSOUNG, 能 使 Pc 机 发 出 指 定 频率和指定延时的声音。它是一个很好的
5、通 用 发 声 程 序 。 组 成 乐 曲 的 每 个 音 符 的 频 率 值 和 持 续 时 间 定 义 成 两 个 数 据 表 , 然 后 编 程 依次 取 出表 中 的 频 率 值 和 时 间 值 , 调 用GENSOUND程 序 发 出 各 种 声 音 。 本 程 序 就 是 通 过GENSOUNG程 序 演 奏 乐 曲 的 例子 。 该 乐 曲 点 播 程 序 由 一 个 乐 曲 点 播 主 程 序 和 五 个 子 程 序 组 成 。- -(1) 歌 曲 设 置 程 序 ;(2)打 开 另 一 个 显 示 窗 口 程 序 ;(3)接 收 键 盘 输 入 程 序 ;(4)返 回 程 序
6、 ;(5)发 声 程 序 。 由 这 几 个 程 序 完 成 乐 曲 的 演 奏 。三 完 成 的 主 要 功 能这 个 程 序 能 够 实 现 音 乐 的 播 放 。 运 行 时 按 下1-4键 演 奏 乐 曲 “1:Happy birthday to you; 2:Mary had a little lamb; 3:Taihu boat; 4:Exit; 选 择 曲 目 序 号 进 行 歌 曲 播 放 ; 退 出 程 序 。 程 序 运 行 将 显 示 如 下运 行 图 1四 软 硬 件 要 求汇 编 语 言 对 硬 件 的 配 置 要 求 不 是 很 高 。 这 个 音 乐 发声 程 序
7、 也 有 这 个 特 点 。 只 要 是 在Dos系 统 下 window98, window 2000,windows xp环 境 均 可 , 要 有 汇 编 软 件Masm615。 这 个 程 序 有 些 地 方 就 是 在 自 己的 电 脑 中 完 成 的 。- -五 程 序 流 程 图音 乐 演 奏 程 序 流 程 图如 图 2所 示- -音 乐 流 程 图 2六 使 用 说 明这 个 程 序 是 关 于 发 声 的 程 序 。 通 过 设 计 音 乐 播 放 的 具 体 程 序 展 示 了 这 个 原 理 。 这 个 程 序 共包 括 了 显 示 程 序 , 歌 曲 选 择 , 歌
8、曲 的 播 放 开始提示信息接收键盘输入是“1”是“2”是“3”是“4”显示出错信息Call music3Call music2Call music1退出- -返 回 等 几 部 分 组 成 的 。 开 始 时 定 义 了 演 奏 乐 曲 的 频 率 表 和 时 间 节 拍 表 , 为 形 成 一 个 完 整 的 音 乐曲 目 做 了 准 备 。 接 下 来 向 计 数 器 写 入 控 制 字 并 且 接 通 扬 声 器 , 设 置 次 数 循 环 将 节 拍 转 入 程 序 ,调 用 发 声 程 发 声 。 这 个 序 通 过 按 键1,2,3即 可 实 现 播 放 1:Happy birt
9、hday to you; 2:Mary had a little lamb; 3:Taihu boat; 4:Exit; 选 择 曲 目 进 入 歌 曲 播 放 ; 选 择 退 出 选 项 所 对 应 的 功 能 号 后 退 出 程 序 。利 用 计 算 机 控 制 发 声 的 原 理 , 可 以 编 写 演 奏 乐 曲 的 程 序 。 乐 曲 是 按 照 一 定 的 高 低 、 长 短 和强 弱 关 系 组 成 的 音 调 。 在 一 首 乐 曲 中 , 每 个 音 符 的 音 高 和 音 长 与 频 率 和 节 拍 有 关 。 组 成 乐 曲 的每 个 音 符 的 频 率 值 和 持 续
10、时 间 是 乐 曲 程 序 发 声 所 需 要 的 两 个 数 据 。 音 符 的 频 率 可 以 乐 谱 中 查 到 ,但 实 际 上 送 入 计 数 器 的 是 输 入 频 率 与 音 符 频 率 相 除 的 值 , 通 用 发 声 程 序SOUNDF的 前 半 部 分 就 是 完 成 这 个计 算 , 并 将 计 数 值 送 入 计 数 器 的 功 能 。 音 符 的 持 续 时 间 是 根 据 乐 曲 的 速 度 及 每 个 音 符 的 节 拍 数来 确 定 的 。 在 4/4中 , 四 分 音 符 为 1拍 , 每 小 节 4拍 , 全 音 符 持 续 4拍 , 二 分 音 符 持
11、续 2拍 , 四 分 音 符 持续 1拍 , 八 分 音 符 持 续 半 拍 等 。 如 果 给 全 音 符 分 配1s( 100*10ms) 的 时 间 , 则 二 分 音 符 的 持 续 时 间 为0.5s( 50*10ms) , 四 分 音 符 的 持 续 时 间 为0.25s( 25*10ms) , 八 分 音 符 的 持 续 时 间 为0.125s( 12.5*10ms) 。知 道 了 音 调 与 频 率 和 时 间 的 关 系 , 就 可 以 按 照 乐 曲 的 曲 谱 将 每 个 音 符 的 频 率 和 持 续 时 间 定 义 成两 个 数 据 表 ; 然 后 编 写 程 序 依
12、 次 取 出 表 中 的 频 率 值 和 时 间 值 , 调 用SOUNDF程 序 发 出 各 种 声 音 。本 程 序 应 用 了 BIOS中 断 功 能 的 字 符 显 示 功 能 和 乐 曲 演 奏 程 序 。 并 利 用 计 算 机 控 制 发 声 原 理 ,在 计 算 机 中 有 一 个 可 编 程 时 间 间 隔 定 时 器 , 它 能 根 据 程 序 提 供 的 记 数 值 和 工 作 模 式 , 产 生 各 种形 状 和 各 种 频 率 的 记 数 定 时 脉 冲 , 提 供 给 系 统 的 各 个 部 分 使 用 。 该 乐 曲 点 播 程 序 由 一 个 乐 曲 主程 序
13、和 五 个 子 程 序 组 成 。 其 中 的 一 个 子 程 序 为 乐 曲 演 奏 子 程 序 , 一 个 是 打 开 另 一 个 窗 口 显 示 程序 , 一 个 是 接 收 字 符 程 序 , 一 个 返 回 程 序 , 一 个 发 声 程 序 。 主 程 序 对 演 奏 子 程 序 、 打 开 另 一 个窗 口 程 序 、 接 收 字 符 程 序 、 返 回 程 序 做 内 部 调 用 , 发 声 子 程 序 是 外 部 调 用 , 它 是 一 个 公 用 子 程 序 。- -设 计 总 结在 为 期 两 周 的 课 程 设 计 中 , 我 设 计 了 音 乐 发 声 程 序 。 从
14、 选 题 到 程 序 成 形 可 以 运 行 , 我 收 获了 好 多 。 在 开 始 的 时 候 遇 到 了 许 多 的 困 难 , 程 序 出 错 难 以 演 示 后 来 经 过 老 师 的 指 导 和 自 己 的 修 改,终 于 完 成了 一 个 小 的 综 合 性 课 程 程 序 。这 里 对 黄 老 师 的 帮 助 表 示 感 谢 。这 个 过 程 中 我 深 感 自 己 的 专 业 知 识 不 足所 带 来 的 困 难 , 使 我 知 道 要 想 写 好 汇 编 语 言 的 程 序 , 必 须 认 真 对 待 代 码 的 每 一 个 细 节 , 还 必 须 熟 练 的 掌 握deb
15、ug命 令 , 这 对 程 序 的 调 试 是 非 常 重 要 的 。 通 过 这 次 实 际 动 手 能 力 的 培 养 , 我 进 一 步 熟 悉 了 汇编 语 言 的 结 构 和 使 用 方 法 , 基 本 达 到 了 能 独 立 阅 读 、 编 制 和 调 试 一 定 规 模 的 汇 编 语 言 程 序 的 水 平 。这 是 继 数 据 结 构 课 程 设 计 后 的 又 一 次 课 程 设 计。 通 过 这 次 学 习 ,对 汇 编 语 言 有 了 更 近 一 步 的 了 解 ,对 软 件 的 编 写 也 有 了 一 定 的 认 识 。 在 设 计 的 时 由 于 查 书 对 书 中
16、 的 知 识 也 有 实 质 性 的 理 解 。 这 是一 次 理 论 与 实 践 相 结 合 的 学 习,在 这 次 学 习 中 加 强 了 我 的 上 机 操 作 能 力,加 强 了 我 对 汇 编 这 门 课 程 的 认 识 ,增 强 了 我 的 学 习 积 极 性 。 汇 编 语 言 和vc+同 样 是 关 于 计 算 机 编 程 的 , 是 计 算 机 语 言 。 他 们 都 有 自 己的 功 能 和 用 途 。 而 汇 编 语 言 是 一 种 面 向 机 器 的 程 序 设 计 语 言 , 是 和 计 算 机 硬 件 结 合 最 密 切 的 语 言 ,虽 然 程 序 设 计 语 言
17、 的 发 展 很 快 , 但 它 是 用 户 能 够 使 用 的 最 快 和 最 能 发 挥 硬 件 功 能 的 唯 一 的 一 种 计 算 机 语 言 。在 汇 编 语 言 中 使 计 算 机 发 声 的 方 法作 为 一 个 小 的 实 用 程 序, 具 体 的 显 示 了 汇 编 语 言的 用 途 。 使 我 有 了 在以 后 的 其 他 程 序 中 可 以 更 熟 练 的 运 用 此 方 法 来 控 制 计 算 机 的 发 声 进 行 汇 编 课 程 设 计 的 想 法 。 在日 后 的 学 习 中 我 要 加 强 汇 编 语 言 的 综 合 应 用 程 序 设 计 方 法 , 提 高
18、 汇 编 语 言 实 际 应 用 能 力 、 增 加计 算 机 各 方 面 的 知 识 和 运 用 能 力 。 学 好 每 一 门 专 业 课 , 能 够 熟 悉 的 应 用 计 算 机 的 更 多 功 能 。另 外 , 作 为 计 算 机 专 业 的 学 生 上 机 操 作 非 常 重 要 。 在 这 次 课 程 设 计 中 我 们 就 一 起 在 机 房 设计 自 己 程 序 , 自 己 动 手 解 决 问 题 。 同 时 实 验 过 程 中 我 们 做 同 一 题 目 的 几 个 人 在 遇 到 问 题 的 时 候 ,能 够 积 极 进 行 讨 论 , 发 表 自 己 的 意 见 ,增
19、加 了 我 的 团 队 意 识 , 同 时 也 培 养 了 我勇 于 面 对 困 难 以 及 解 决 问题 的 能 力 。 这 是 我 平 时 在 课 堂 上 所 学 不 到 的 。 这 也 是 作 为 当 代 大 学 生 更 是 计 算 机 专 业 的 学 生 应- -该 具 备 的 能 力 和 素 质 。总 知 , 这 次 课 程 设 计 作 为 学 习 的 一 个 开 端 , 指 导 我 整 个 学 习 方 向 和 态 度 。 我 要 将 这 次 学 习当 做 一 个 很 好 的 起 点 , 再 接 再 厉 争 取 学 到 更 多 的 知 识 。参 考 文 献1 IBM-PC 汇 编 语
20、 言 程 序 设 计 , 沈 美 明 温 冬 婵 编 著 。 清 化 大 学 出 版 社 ,2008年 3月 第 8次 印 刷 。2东 阳 生 等 编 著 : “宏 汇 编 语 言 MASM6实 用 大 全 ”, 科 学 出 版 社 , 19933 汇 编 语 言 课 程 设 计 案 例 精 编 李 珍 香 , 刘 红 梅 等 编 著 。 中 国 水 利 水 电 出 版 社4陆 中 华 等 编 : “汇 编 语 言 程 序 设 计”, 科 学 出 版 社 , 1994- -附 : 源 程 序;*STACK SEGMENT PARA STACK STACKDB 64 DUP(STACK.)STA
21、CK ENDS;*DSEG SEGMENT PARA DATAMESS1 DB 50 DUP( ),Now the music is ,13,10,$MESS2 DB 50 DUP( ),Now the music is ,13,10,$MESS3 DB 50 DUP( ),Now the music is ,13,10,$MENU DB 5 DUP(13,10)DB 5 DUP( ),Class:Computer 05-6 Name:lixia NO.:14 ,13,10DB 5 DUP(), ,13,10DB 5 DUP(), ,13,10DB 5 DUP( ), ,13,10DB 5 D
22、UP( ), ,13,10DB 5 DUP( ), ,13,10DB 5 DUP( ), ,13,10DB 5 DUP( ), ,13,10DB 5 DUP( ), 1:Happy birthday to you; ,13,10DB 5 DUP( ), 2:Mary had a little lamb; ,13,10DB 5 DUP( ), 3:Taihu boat; ,13,10DB 5 DUP( ), 4:Exit; ,13,10- -DB 5 DUP( ), ,13,10DB 5 DUP( ), ,13,10DB 5 DUP( ), ,13,10DB 5 DUP( ), ,13,10DB
23、 5 DUP( ), ,13,10DB 5 DUP( ), ,13,10DB 5 DUP( ), ,13,10DB 5 DUP( ), ,13,10DB 5 DUP( ), ,13,10DB 5 DUP( ),please chioce the number of music:,$,13,10change DB 125 DUP( ),error! please change anther NO.: ,$MUS_FREG dw 262,262,294,262,349,330dw 262,262,294,262,392,349dw 262,262,523,440,349,330,294dw 466
24、,466,440,262,392,349dw -1MUS_TIME dw 50,50,100,100,100,200dw 50,50,100,100,100,200dw 50,50,100,100,100,100,300dw 50,50,100,100,100,200mus_freg1 dw 330,294,262,294,330,330,330dw 294,294,294,330,392,392dw 330,294,262,294,330,330,330,330dw 294,294,330,294,262dw -1mus_time1 dw 6 dup(25),50dw 2 dup(25,25
25、,50)dw 12 dup(25),100mus_freg2 dw 330,392,330,294,330,392,330,294,330dw 330,392,330,294,262,294,330,292,294dw 262,262,220,196,196,220,262,294,330,262dw -1- -mus_time2 dw 50,50,50,25,25,50,25,25,100dw 50,50,50,50,25,25,25,25,100dw 50,50,50,25,25,25,25,25,25,25,100DSEG ENDS;*CODE SEGMENT PARA DATAassume cs:code,ds:dseg,ss:stackmusic proc farmov ax,dsegmov ds,axrotate:call clearscreenLEA DX,MENUmov ah, 9int 21hchg:mov ah,1int 21hcmp al,1je onecmp al,2je twocmp al,3je threecmp al,4je endmusLEA DX,changemov ah, 9int 21hjmp chgONE: call clearscreenlea dx,mess1