DEC DX`
JNZ REPEAT ;对所有重复字符都进行查找 LEA SI,STRN ;删除重复字符 MOV CL,LEN MOV CH,0
CYCLE: MOV AL,[SI]
CMP AL,0 ;是重复字符吗?
JNZ NEXT ;不是,查找下一个字符 DEC CX ;递补字串长度送CX JZ DONE CALL DELE DEC SI NEXT: INC SI LOOP CYCLE MOV AH,4CH INT 21H DELE PROC PUSH SI PUSH CX CLD
MOV DI,SI INC SI REP MOVSB POP CX POP SI RET
DELE ENDP CODE ENDS
END START
;若是最后字符不递补 ;删除该空字符并递补 ;对递补子串从头处理 ;空字符处为目的首址 ;下一个地址为源串首址实验9 排序程序设计
一.实验目的
掌握数据排序的一些常用算法,了解数列的有序、无序、升序和降序的概念。
二.实验内容
使用“冒泡排序”法,将内存中10个数据由小到大排序(每个数为16位二进制);
三.实验要求
1.复习排序的几个基本算法;
2.准备数据,按选择好的算法编写源程序。数据以DW定义和键盘输入两种方法提供。
四.实验环境
PC微机
DOS操作系统或 Windows 操作系统
MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境
五.实验步骤
1.将编写好的源程序输入,建立源程序文件且存盘; 2.汇编、连接和运行此程序;
3.运行成功后,将程序的数据区建立方式改为键盘输入,由小到大排序改为由大到小排序,修改后重新调试、运行; 4.记录并分析排序的效率。
六.实验报告要求
1.对照参考程序,画出程序流程图。
2.说明所使用算法,是否为最优算法,与你知道的其它算法比较,指出它们的差别。
七.思考题
如果要求显示排序结果,程序应如何修改?
参考程序清单、
code segment
org 100h
assume cs:code,ds:code
main: jmp start array dw 1234h,5673h,7fffh,8000h,0dffh
dw count equ start:
mov shr dec mov again:
mov and je xor xor again1:
mov cmp jle xchg mov mov nchg:
inc inc dec jnz loop exit: int code
ends end
0ab5h,0369h,005fh,5634h,9069h $-array cx,count cx,1 cx bl,-1 dx,cx bl,bl exit bl,bl si,si
ax,array[si] ax,array[si+2] nchg
array[si+2],ax array[si],ax bl,-1 si si dx again1 again 20h main
实验10 计算机钢琴程序
一.实验目的
1.掌握利用PC机扬声器发出不同频率声音的方法; 2.学习利用系统功能调用从键盘上读取字符的方法。
二.实验内容
编写程序,使PC机成为一架可弹奏的“钢琴”。当按下数字键1-8时,依次发出1,2,3,4,5,6,7,I八个音调。当按下CTRL-C,则退出“钢琴”状态。
三.实验要求
1.了解PC机发音的原理; 2.编写发音程序。
PC机扬声器电路图如下:
扬放与 61H端口第1位 声大门 8253 器 器 61H端口第0位 定时器2
计数值(地址42H) 控制字
(先送低位,再送高位) (地址43H)
通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形。当与门打开后,经过放大器的放大作用,便可驱动扬声器发出不同频率的音调。要使音调的声音持续一端时间,只要插入一端延时程序之后,再将扬声器切断(关闭与门)。
另外,要使计算机成为可弹奏的钢琴,需要使用系统调用的01H功能以接收键入字符,并且要建立一张表,使键入字符与频率构成一个对应关系。
键入字符 音 符 频率值 1 1 524 2 2 588 3 3 660 4 4 698 5 5 784 6 6 880 7 7 988 8 8 1048 四.实验环境
PC微机
DOS操作系统或 Windows 操作系统
MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境
五.实验步骤
1.将编写好的源程序输入,建立源程序文件且存盘; 2.汇编、连接和运行此程序;
相关推荐: