文档详情

北理工汇编上机实验3.docx

发布:2025-04-13约1.65千字共4页下载文档
文本预览下载声明

实验3—字符匹配程序:从键盘上输入一个字符串,回车结束并回显。用串操作指令设计程序,实现在输入的字符串存储区中寻找空格字符,退出时给出是否找到的信息,并给出具体位置。

流程图:

开始

开始

输入字符串并回显

MOVCX,NUM

查找目标字符

ZF=0?

CX=0?

CMPD6,0

显示空格和所在空格的位置

显示总共有多少个空格

显示无

结束

Y

Y

Y

N

N

N

三、源代码:

DATASSEGMENT

S1DB14H,50DUP(0)

D1DB100,0,100DUP(0)

D2DB0DH,0AH,$;回车换行

D3DBYESLOCATION:$

D4DBNO$

D5DW0;存放有几个空格

D6DB100DUP(0);存放空格的位置信息

D7DB$

DATASENDS

CODESSEGMENT

ASSUMECS:CODES,DS:DATAS

START:

CLD

MOVAX,DATAS

MOVDS,AX

MOVES,AX

LEADX,D1

MOVAH,0AH;

INT21H

LEADX,D2;回车换行

MOVAH,09H

INT21H

MOVSI,0

MOVCH,0

MOVCL,D1[1];字符

MOVBX,2

LEADI,OFFSETD1[BX]

MOVAL,;空格赋给AL

LP:

REPNESCASB;不相等时重复扫描字符串

JNZOVER;当前字符不为空格时跳转到over程序

MOVBH,0;

MOVBL,D1[1]

SUBBX,CX

MOVD6[SI],BL;D6里存着位置的信息

INCSI

INCD5;找到一个空格,D5中存放的空格数量就增加1

CMPCX,0;CX=0终未查到

JNELP;CX不等于0时,继续扫描

OVER:

CMPD5,0

JENOCH;若没有扫描到空格,跳转到noch,即显示no,表示没有空格

LEADX,D3;若扫描到空格,则显示D3中的yes,location

MOVAH,09H

INT21H

MOVCX,D5;CX中存空格数量

MOVSI,0

SHOW:;显示位置location

MOVAL,D6[SI];将位置的数字置为被除数

MOVAH,0;余数清零

MOVBL,10

DIVBL

MOVBH,AH

CMPAL,0;有无进位判断

JEBUXIAN

ADDAL,30H;显示位置

MOVDL,AL

MOVAH,02H

INT21H

BUXIAN:

MOVAL,BH

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

INCSI

LEADX,D7

MOVAH,09H

INT21H

LOOPSHOW

JMPSTO

NOCH:

LEADX,D4;显示没找到空格

MOVAH,09H

INT21H

STO:

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

三、DEBUG结果:

开始未输入字符串:

输入字符串并回显:

扫描空格期间,数据段一直无变化,最后显示出找到空格,并显示空格位置

显示全部
相似文档