文档详情

基本结构程序设计.ppt

发布:2025-03-28约2.87万字共10页下载文档
文本预览下载声明

【例】将N个不同的无符号数a1,a2,...,an由小到大进行排序。若每个数占一个字,则N个数可定义如下:

ADWa1,a2,a3,...,an。它们的内存分配分别为A[0],A[2],A[4],...,A[2n]交换YNYNN外循环次数N-1送CX,0送BXCX送DX,2送SIa[bx]a[bx+si+2]修改指针SI+2送SI,内计数减1内计数为0?修改指针BX+2送BX,取回外循环次数,外计数减1外计数为0?Y开始结束CMPAX,A[BX+SI]JNAL1

XCHGAX,A[BX+SI]

MOVA[BX],AX

L1:ADDSI,2LOOPLOOP2

ADDBX,2

MOVCX,DX

LOOPLOOP1

MOVAH,4CH

INT21HCODEENDS

ENDSTARTDATASEGMENTADW1223,83,456,355,948,……789

CNTEQU$-A/2DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA

MOVDS,AX

MOVCX,CNT-1

MOVBX,0LOOP1:MOVDX,CX

MOVSI,2LOOP2:MOVAX,A[BX]分析:需要使用两重循环实现。从MESS1中取一个字符,与MESS2逐个比较,符合要求的送STRING。重复这个过程,直到完成为止。【例】:已知字符串MESS1中包含50个互不相等的字符,字符串MESS2中包含30个互不相等的字符,找出既在MESS1中出现,也在MESS2中出现的字符,组合成一一新的字符串,保存到STRING中,并把新字符串长度保存在COUNT。DATASEGMENTMESS1DB‘AB7D……TB5’;共50个字符MESS2DB‘9DAC……FG’;共30个字符STRINGDB30DUP(?);给STRING分配存储空间COUNTDB?;用于统计新字符串字符数DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,MESS1;MESS1首地址送SILEABX,STRING;STRING首地址送BXMOVCX,50;MESS1长度,作为外循环次数MOVCOUNT,0;用COUNT统计STRING长度参考程序AGAIN:MOVAL,[SI];从MESS1中取出一个字符PUSHCX;CX入栈MOVCX,30;MESS2长度,内循环次数LEADI,MESS2;MESS2首地址送DICONTI:CMPAL,[DI];比较两个字符是否相等JNZNEXTMOV[BX],AL

显示全部
相似文档