汇编课设报告 字符分类统计和音乐盒

更新时间:2024-05-20 02:40:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

汇编课程设计报告

学院: 信息科学与工程学院 班级: 10级计算机科学1班 指导教师: 何海涛

2013年07月

燕山大学汇编语言课程设计

目录

第一章 目的与意义 ........................................................................... 3 第二章 分类统计字符个数 ............................................................... 3

一、设计题目 ........................................................................................... 3 二、设计要求 ........................................................................................... 3 三、设计说明 ........................................................................................... 3

1、总体思路 .................................................................................................... 3 2、算法设计 .................................................................................................... 4 3、变量定义与寄存器分配 ............................................................................ 4 四、程序流程图 ....................................................................................... 4 五、程序清单及注释 ............................................................................... 6 六、操作及结果 ....................................................................................... 6 七、设计总结 ........................................................................................... 7

第三章 音乐盒程序 ........................................................................... 7

一、设计题目 ........................................................................................... 7 二、设计要求 ........................................................................................... 7 三、设计说明 ........................................................................................... 8

1、总体思路 .................................................................................................... 8 2、算法设计 .................................................................................................... 9 3、变量定义与寄存器分配 ............................................................................ 9 4、宏的说明 .................................................................................................... 9 四、程序流程图 ....................................................................................... 9 五、程序清单及注释 ............................................................................. 11 六、操作及结果 ..................................................................................... 12 七、设计总结 ......................................................................................... 13

参考文献: ....................................................................................... 13 附录一 ............................................................................................... 14 附录二 ............................................................................................... 17

2

燕山大学汇编语言课程设计

第一章 目的与意义

本次课程设计的主要目的为:

1、深入了解与熟悉微机系统的配置并加深在DEBUG状态下输入汇编程序的方法。

2、掌握编写完整汇编语言源程序的方法,掌握汇编、连接等将源程序转换成可执行代码的必要步骤。

3、在熟悉理解汇编指令原理的的基础上,按照实验要求的功能编写完整的程序,生成可执行文件后,使用DEBUG对程序进行调试。

4、熟练掌握并使用8254的工作方式、应用编程以及典型应用电路的接法。

第二章 分类统计字符个数

一、设计题目

分类统计字符个数COUNT—CHAR。

二、设计要求

程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其它字符分类计数,然后将结果存入以letter、digit和other为名的存储单元中。

提示:程序可采用0AH功能调用把键入字符直接送到缓冲区中,然后再逐个取出分类计数。也可采用0lH功能调用在接收字符后先分类计数然后再存入缓冲区中。程序需进入DEBUG运行并查看计数结果。

三、设计说明

1、总体思路

在该设计中,首先考虑数据变量的定义与内存单元的分配,其次是字符串的输入与输出问题。

主要过程是对字符串字符类型的分类与个数统计,主要类别为:数字字符‘0’至‘9’,字母字符‘A’至‘Z’ 和‘a’至

3

燕山大学汇编语言课程设计

‘z’ 以及其它字符。对应的ASCII码为 30H至39H, 41H至5AH, 61H至7AH,剩余ASCII码均为其他字符。

计数得到的是二进制数值,在输出时要考虑转换成哪种进制。

2、算法设计

在本次设计的程序中,主要通过分支跳转程序对条件的判断来实现跳转以确定字符的类型。

程序以读到字符的ASCII码是否为0DH即回车符作为字符串结束的标志,并主要进行了三个逻辑判断,即数字字符判断,大写字母字符判断和小写字母字符判断,则剩余的均为其他字符,通过判断对相应字符的个数进行统计。

在实现每一个逻辑判断时,用了两个判断指令:一个判断是否小于该类型字符的最小ASCII码的字符,另一个判断是是否小于或等于该类型字符的最大ASCII码的字符,通过如此判断,便可实现上述的各个逻辑判断。

最后将每类字符的个数转换成十进制形式并输出。

3、变量定义与寄存器分配

STRING为定义的需要输入的字符串变量;

LETTER、DIGIT、OTHER分别为定义的字母字符、数字字符、其他字符的个数存储变量;

STR1、STR2、STR3分别为输出的LETTER、DIGIT、OTHER个数的提示信息;

DI用于存放字符串的偏移地址; AL用于依次存储各类字符的个数,主要通过依次将各类字符的个数(存储在LETTER、DIGIT、OTHER中)赋值给AL来实现(调用进制转换与输出子程序时需要统一的寄存器来进行操作);

BL在进制转换中用于储存立即数; AH用于DOS功能调用中的类型号;

四、程序流程图

下图(2-1)为本设计的详细程序流程图:

4

燕山大学汇编语言课程设计

开始

内存单元分配与定义 输入字符串 对字符进行分类 DIGIT 数加 1 LETTER数加1 Y 是否小于或等于7AH N 是否小于61H OTHER数加1 N

是否为回车符 N Y 转换成十进制数并输出 结束 图(2-1)程序流程图

5

Y Y N N 是否小于或等于5AH Y 是否小于41H N Y 是否小于或等于39H N 是否小于30H Y

燕山大学汇编语言课程设计

五、程序清单及注释

见附录一。

六、操作及结果

1、执行compile,编译程序,结果如下图(2-2):

图(2-2)编译结果

2、执行link,连接程序,结果如下图(2-3)与图(2-4):

图(2-3)连接结果1

图(2-4)连接结果2

3、执行run,运行程序,结果如下图(2-5):

图(2-5)运行结果

6

燕山大学汇编语言课程设计

七、设计总结

通过本次课程设计,是我们更加熟练的掌握了用汇编语言编程的方法以及相关执行过程。

刚开始编写程序时,没有考虑输出时进制转换的问题,导致结果不能正确显示。后来又添加了进制转换功能问题才得到了解决。

在处理字符分类时,由于多次使用分支跳转程序,所以在此处特别容易混乱出错,需要一定的耐心与细心。

在处理进制转换的问题上,使用了子程序,是程序更加简洁明了,同时也提高了自己对子程序的熟练掌握。

第三章 音乐盒程序

一、设计题目

音乐盒程序。

二、设计要求

(1) 开始界面显示乐曲菜单。

(2)按A、B、C、D选择乐曲演奏

(3)在演奏的过程中按S暂停,按P开始演奏 (4)在演奏中按M重新放回到主菜单 (5)按Q键退出

提示:

(1)乐谱中的每个音符具有音高和音长两种属性,按照乐谱将每个音符的频率和节拍定义成两个数据表,程序从频率表中取出一个音符的频率值以产生一定音高的声音,同时取出相应的节拍计数值以控制这一频率的声音延长的时间。

(2)每个音符的频率值Freq经过转换后送入定时器的42H端口,以产生相应频率的脉冲。转换的公式为:533H×896+Freq=1234DCH+freq

7

燕山大学汇编语言课程设计

(3)节拍时间表中存放的计数值是音长的1/10,如2拍的音长定为0.5秒,对应的计数值应为50,l拍的音长是0.25秒,对应的计数值应为25。然后控制100p指令反复执行2801×n次来取得音符的延长时间(n为音长所对应的计数值)。

(4)乐曲演奏完后,同样要完成对6lH端口的复位操作以避免死机.

三、设计说明 1、总体思路

在开始阶段主要是进行选歌菜单界面的设计,菜单中显示

的数据都在数据段中定义,在数据段中也存储了曲子的频率数据和相应的频率时间。在代码段显示输出菜单。在代码段调用中断选择一个操作存放在AL,并对(AL)进行判定,并调用相应的子函数进行操作。当演奏完一首歌曲后又返回到主菜单,并可以接着选歌。电路如下图所示

4.7K XD0 D0 GATE0 vcc XD7 D7 XA1 XA2 10W# 10R# A0 A1 WR RD CLK0 CLK系统总线 OUT0 spk电子发声原件 8254 10Y3 CS

8

燕山大学汇编语言课程设计

2、算法设计

选择的每一首曲子都对应着一个子函数,每首曲子对应的子函数的算法设计思路是一样的。

例如,子函数MUSIC1,首先取出频率表Music1_F和时间表Music1_T的值分别放到CX和BX中,在每次取出的频率数据时都要进行判定是否结束。如果没有结束就根据频率数据设置计数器的初始值,即调用SOUND子函数。接着根据频率时间计算出频率的延时时间,即调用DELAY子函数。接着重新取数执行相同的操作。直到取出的数据-1歌曲才算结束。在演奏的过程中调用INT|16中断进行键盘的扫描。这个中断可以用来进行暂停操作和返回主菜单的操作。

3、变量定义与寄存器分配

MENU变量是菜单显示的数据。SHOW是显示播放状态框的数据。状态框显示曲子的播放状态。

SI存放频率表的偏离地址,DI存放的是频率时间表的偏离地址。 CX存放的频率数据。BX存放的是频率时间数据。

4、宏的说明

宏Print是用于输出字符串,ADDR是宏Print的形参,代表的是要输出字符串的变量。

宏STOP是用于进行暂停的操作,当输入的字符不是P时就会继续循环,直到输入P时才能跳出循环,这样就起到了暂停到开始的作用。

宏FS1的作用的是在不发出声音的情况下把8254计数器的工作方式改为工作方式0。

宏SHOW的作用是显示曲子播放状态框。

宏SHOWZT的作用是实时显示曲子的播放状态情况。 宏SET的作用是把光标设置到原来的位置。

四、程序流程图

(1)下图(3-1)为本设计开始的程序流程图:

9

燕山大学汇编语言课程设计

开始 输入选择 判断是否为Q ? N 播放音乐 Y 退出 结束 (图3-1)

(2)下(图3-2)为音乐播放的流程图

开始 输入频率 N 频率是否为-1 ? Y 返回主菜单 扫描键盘是否有输入 发出相应频率的声音 结束 10

燕山大学汇编语言课程设计

(图3-2)

(3)下(图3-3)的流程是在音乐播放的过程中进行键盘的扫描,检测是否有中断

开始 扫描键盘状态 在播放音乐中输入 输入是否为M N 是否为S N 继续播放音乐 Y Y 返回主菜单 进行暂停操作 结束 (图3-3)

五、程序清单及注释

见附录2

11

燕山大学汇编语言课程设计

六、操作及结果

1.开始菜单如下图(3-4)

(图 3-4)

2.当选择了歌曲时播放状态框就会显示playing…

(图3-5)

3.当输入Q时就会退出,下图(3-6)为退出时的界面

(图3-6)

12

燕山大学汇编语言课程设计

七、设计总结

通过这次汇编接口课程设计我进一步加深了我对接口的认识。在设计的开始我主要考虑的是设计一个良好的界面,但是到后来才发现在实验台相应的编译器上显示的界面不是我想要的界面,为了能看到我设计的界面我后来也尝试初始化pc机上的8254芯片,经过在网上查找通用PC机上8254的端口号进行实验,但是后来没有成功,可能是由于我查的端口号是错误的,或许是不能对pC机上的8254进行操作,不过我还不知道不成功的原因。于是只能用实验台来操作了。这次课程设计提升了我们的动手能力。谢谢学校给予我们这次机会。

参考文献: 叶继华主编,《汇编语言与接口技术》,机械工业出版社

13

燕山大学汇编语言课程设计

附录一

分类统计字符个数的程序清单及注释:

DATA SEGMENT

STRING DB 81 DB ?

DB 80 DUP (?) ;定义字符串并分配内存单元 LETTER DB 0 ;定义存储单元letter DIGIT DB 0 ;定义存储单元digit OTHER DB 0 ;定义存储单元other

STR1 DB 'NUMBER OF LETTER=$' ;定义提示字符串STR1 STR2 DB 'NUMBER OF DIGIT=$' ;定义提示字符串STR2 STR3 DB 'NUMBER OF OTHER=$' ;定义提示字符串STR3 DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA MOV DS,AX LEA DX,STRING MOV AH,10

INT 21H ;字符串的输入

LEA DI,STRING+2 ;将第一个字符的偏移地址赋给DI SELECT: ;对字符串中的每个字符进行分类 MOV AL,[DI] CMP AL,0DH

JE EXIT ;字符串以回车符结束,若是回车符则跳转至

;EXIT,退出

CMP AL,30H ;与ASCII码中的‘0’,即30H比较

JB O ;小于30H的,为其他类型字符,跳转至O CMP AL,39H ;与ASCII码中的‘9’,即39H比较

JBE D ;小于或等于39H的(但不小于30H),为数字,

14

燕山大学汇编语言课程设计

;跳转至D

CMP AL,41H ;与ASCII码中的‘A’,即41H比较 JB O ;小于41H的(但大于39H),为其它类型字符,

;跳转至O

CMP AL,5AH ;与ASCII码中的‘Z’,即5AH比较 JBE L ;小于或等于5AH(但不小于41H),为大写字母,

;跳转至L

CMP AL,61H ;与ASCII码中的‘a’,即61H比较 JB O ;小于61H的(但大于5AH),为其它类型字符,

;跳转至O

CMP AL,7AH ;与ASCII码中的‘z’,即7AH比较 JBE L ;不大于 7AH的(但不小于61H),为小写字母,

;跳转至L

JMP O ;剩余的大于7AH,为其他类型字符,跳转至O L:INC LETTER ;属于LETTER类型,则LETTER增1 INC DI

JMP SELECT ;返回继续比较下一个字符

D:INC DIGIT ;属于DIGIT类型,则DIGIT增1 INC DI

JMP SELECT ;返回继续比较下一个字符

O:INC OTHER ;属于OTHER类型,则OTHER增1 INC DI

JMP SELECT ; 返回继续比较下一个字符;

EXIT: ;输出LETTER,DIGIT,OTHER类型的计数结果 MOV DL,0DH MOV AH,02

INT 21H ;回车 MOV DL,0AH MOV AH,02

INT 21H ;换行 LEA DX,STR1 MOV AH,9

INT 21H ;输出提示字符串 XOR AH,AH

MOV AL,LETTER CALL TURN ;调用子程序TURN,将结果以十进制形式输出 LEA DX,STR2

15

燕山大学汇编语言课程设计

MOV AH,9

INT 21H ;输出提示字符串 XOR AH,AH MOV AL,DIGIT CALL TURN ;调用子程序TURN,将结果以十进制形式输出 LEA DX,STR3 MOV AH,9

INT 21H ;输出提示字符串 XOR AH,AH MOV AL,OTHER CALL TURN ;调用子程序TURN,将结果以十进制形式输出 MOV AH,4CH INT 21H

TURN PROC NEAR ;子程序TURN,用于将二进制数转换成

;十进制数

MOV BL,10 ;求十进制数的十位数 DIV BL PUSH AX

MOV DL,AL ;将十进制数的十位数转换成十进制数并输出 ADD DL,30H MOV AH,2 INT 21H POP AX

MOV DL,AH ;将十进制数的个位数转换成十进制数并输出 ADD DL,30H MOV AH,2 INT 21H

MOV DL,0DH MOV AH,02

INT 21H ;回车 MOV DL,0AH MOV AH,02

INT 21H ;换行 RET

TURN ENDP CODE ENDS

16

燕山大学汇编语言课程设计

END START

附录二

Print MACRO ADDR ;输出字符串的宏 PUSH DX PUSH AX

LEA DX,ADDR MOV AH,09 INT 21H POP AX POP DX ENDM

STOP MACRO z,y FS1

B&z:MOV AH,1 INT 21H CMP AL,'P' JZ B&y JMP B&z B&y: ENDM

FS1 MACRO PUSH DX PUSH AX

MOV DX,06C6H MOV AL,070H OUT DX,AL POP AX POP DX ENDM

SHOW MACRO

;暂停操作 ;修改8254芯片的工作方式;输出播放状态的宏

17

燕山大学汇编语言课程设计

PUSH DX

PUSH AX

MOV DX,0C33H ;确定光标的位置 MOV AH,15

INT 10H ;获取光标位置 MOV AH,2

INT 10H ;置光标到DX位置 LEA DX,SHOW0 MOV AH,09H

INT 21H MOV DX,0E33H MOV AH,2 INT 10H

LEA DX,SHOW4 MOV AH,09H INT 21H SET POP AX POP DX

ENDM

SET MACRO PUSH DX PUSH AX

MOV DX,0C17H MOV AH,15 INT 10H MOV AH,2 INT 10H POP AX POP DX ENDM

SETZT MACRO ADD PUSH DX PUSH AX MOV AH,15

;在光标的位置输出想输出的字符串把光标置回原来的位置 ;输出播放状态 18

; 燕山大学汇编语言课程设计

INT 10H

MOV DX,0D33H MOV AH,2 INT 10H

LEA DX,ADD MOV AH,09H INT 21H POP AX POP DX ENDM

DATA SEGMENT ;定义数据段 MENU DB \H ;菜单数据

DB \ DB \

DB \YI TIAN CHANG DI JIU >>\

DB \ DB \ DB \

DB \ DB \ DB

\ DB \

SHOW0 DB \ ;播放状态框数据

SHOW1 DB \ SHOW2 DB \ SHOW3 DB \ end!\ ERROR1 DB \ EX DB \ EXIT! \

19

燕山大学汇编语言课程设计

SHOW4 DB \

Music1_F DW 880,988,1046,988,1046,1318,988,659 ;歌曲1的频率数据表

DW 659,880,784,880,1046,784,881,659 DW 659,689,659,689,1046,659,881,1046 DW 1046,1046,988,740,740,988,988,881 DW 880,988,1046,988,1046,1318,988,881 DW 659,659,880,784,880,1046,784,881 DW 659,689,1046,988,988,1046,1175,1175 DW 1318,1046,881,1046,988,880,880,988 DW 831,880,881,1046,1175,1318,1175,1318 DW 1568,1175,881,784,784,1046,988,1046 DW 1318,1318,881,881,880,988,1046,988 DW 1175,1175,1046,784,784,881,1397,1318 DW 1175,1046,1318,1318,881,1318,1760,1568 DW 1568,1318,1175,1046,881,1046,1175,1046 DW 1175,1175,1568,1318,881,1318,1760,1568 DW 1318,1175,1046,881,1046,1175,1046,1175 DW 1175,988,880,881,880,988,1046,988 DW 1046,1318,988,659,659,880,784,880 DW 1046,784,881,659,659,689,659,689 DW 1046,659,881,1046,1046,1046,988,740 DW 740,988,988,881,880,988,1046,988 DW 1046,1318,988,881,659,659,880,784 DW 880,1046,784,881,659,689,1046,988 DW 988,1046,1175,1175,1318,1046,881,1046 DW 988,880,880,988,831,880,881,1046

DW 1175,1318,1175,1318,1568,1175,881,784 DW 784,1046,988, 1046,1318,1318

DW 881,881,880,988,1046,988,1175,1175 DW 1046,784,784,881,1397,1318,1175,1046 DW 1318,1318,881,1318,1760,1568,1568,1318 DW 1175,1046,881,1046,1175,1046,1175,1175

20

燕山大学汇编语言课程设计

DW 1568,1318,881,1318,1760,1568,1318,1175 DW 1046,881,1046,1175,1046,1175,1175,880 DW 880,881,880,988,988,-1 Music1_T DW 300 DUP(100) ;歌曲1的频率时长数据表 Music2_F DW 262,262,294,262,349 ;歌曲2的频率表

DW 330,262,262,294,262 DW 392,349,262,262,523 DW 440,349,262,262,466 DW 466,440,262,392,349,-1 Music2_T DW 50,50,100,100,100 DW 100,100,50,50,100,100 DW 100,100,100,50,50,100 DW 100,100,100,100,100,50 DW 50,100,100,100,100,100

Music3_F DW 371,495,495,495,624,556,495,556,624 ;频率表 DW 495,495,624,742,833,833,833,742,624 DW 624,495,556,495,556,624,495,416,416,371 DW 495,833,742,624,624,495,556,495,556,833 DW 742,624,624,742,833,990,742,624,624,495 DW 556,495,556,624,495,416,416,371,495,-1 Music3_T DW 80,100,50,80,80,100,50,80,80 ;时间表 DW 100,50,80,80,120,40,50,100,50 DW 80,80,100,50,80,80,100,40,50,50 DW 150,50,100,50,50,50,100,50,50,50 DW 100,50,50,50,150,50,100,50,50,50 DW 100,50,50,50,100,50,50,50,150

Music4_F DW 2 dup(262,294,330,262) ;频率表

21

燕山大学汇编语言课程设计

DW 2 dup(330,349,392,19) DW 2 dup(392,440,392,349,330,262) DW 2 dup(294,196,262,19),-1 Music4_T DW 8 dup(100) ;时间表 DW 8 dup(100)

DW 2 dup(50,50,50,50,100,100) DW 8 dup(100)

DATA ENDS

STACK SEGMENT STACK ;堆栈段 DB 200 DUP(0) STACK ENDS

CODE SEGMENT ;代码段 ASSUME DS:DATA,CS:CODE,SS:STACK START:MOV AX,DATA MOV DS,AX

MAIN PROC NEAR ;主程序的功能主要是判断选择的操作并调用相应的子程序进行相应的操作 Print MENU ;输出菜单

SHOW ;输出播放状态框 SETZT SHOW1 ;设置播放状态 INPUT:SET

MOV AH,01 INT 21H

CMP AL,'Q' ;判断选择的选项 JE EXIT1

CMP AL,'A' JNZ OP2

CALL MUSIC1

22

燕山大学汇编语言课程设计

JMP INPUT OP2:CMP AL,'B'

JNZ OP3 CALL MUSIC2 JMP INPUT OP3:CMP AL,'C' JNZ OP4

CALL MUSIC3 JMP INPUT OP4:CMP AL,'D' JNZ ERROR CALL MUSIC4 JMP INPUT

ERROR:SHOW ERROR1 JMP INPUT EXIT1:SETZT EX MOV AH,4CH INT 21H RET MAIN ENDP

MUSIC1 PROC LEA SI,Music1_F LEA DI,Music1_T SETZT SHOW2 R1:MOV CX, DS:[SI] MOV BX, DS:[DI] CMP CX,-1 JZ PLAY_END1 MOV AH,1 INT 16H CMP AL,'M' JZ TT1 CMP AL,'S' JNZ A1 STOP 1,2 A1:CALL SOUND

;音乐1的子函数23

燕山大学汇编语言课程设计

ADD SI,2 ADD DI,2 JMP R1 PLAY_END1:FS1

SETZT SHOW3 TT1:FS1 RET MUSIC1 ENDP

MUSIC2 PROC LEA SI,Music2_F LEA DI,Music2_T SETZT SHOW2 R2:MOV CX,DS:[SI] MOV BX,DS:[DI] CMP CX,-1

JE PLAY_END2 MOV AH,1 INT 16H CMP AL,'M' JZ TT2 CMP AL,'S' JNZ A2

STOP 3,4 A2:CALL SOUND ADD SI,2 ADD DI,2 JMP R2 PLAY_END2:FS1

SETZT SHOW3 TT2:FS1 RET MUSIC2 ENDP

MUSIC3 PROC LEA SI,Music3_F

;音乐2的子函数 ;音乐3的子函数 24

燕山大学汇编语言课程设计

LEA DI,Music3_T SETZT SHOW2 R3:MOV CX,DS:[SI]

MOV BX,DS:[DI] CMP CX,-1

JE PLAY_END3 MOV AH,1 INT 16H CMP AL,'M' JZ TT3 CMP AL,'S' JNZ A3 STOP 5,6 A3:CALL SOUND ADD SI,2 ADD DI,2 JMP R3 PLAY_END3:FS1

SETZT SHOW3 TT3: FS1 RET MUSIC3 ENDP

MUSIC4 PROC LEA SI,Music4_F LEA DI,Music4_T SETZT SHOW2

R4:MOV CX,DS:[SI] MOV BX,DS:[DI] CMP CX,-1

JE PLAY_END4 MOV AH,1 INT 16H CMP AL,'M' JZ TT4

;音乐4的子函数 ;取出频率

;取出频率的时长 25

燕山大学汇编语言课程设计

CMP AL,'S' JNZ A4

STOP 7,8 A4:CALL SOUND ADD SI,2 ADD DI,2 JMP R4 PLAY_END4:FS1

SETZT SHOW3 TT4:FS1 RET MUSIC4 ENDP

;参数BX,CX

SOUND PROC NEAR PUSH DX PUSH AX PUSH CX PUSH DI PUSH SI

MOV DX,06C6H MOV AL,076H OUT DX,AL MOV DX,12H MOV AX,348CH DIV CX

MOV DX,06C2H OUT DX,AL MOV AL,AH OUT DX,AL

CALL DELAY POP SI POP DI POP CX POP AX POP DX RET

;进行发声的子程序 ;调用延时子程序 26

燕山大学汇编语言课程设计

SOUND ENDP

DELAY PROC NEAR ;延时子程序 DELAY1:MOV CX,2801 LOP:LOOP LOP DEC BX

JNZ DELAY1 RET DELAY ENDP

MOV AH,4CH INT 21H CODE ENDS

END START

27

本文来源:https://www.bwwdw.com/article/3qi7.html

Top