【80X86汇编语言学习】【字符串处理】字符串操作举例strcat

来源:互联网 发布:win10 触摸屏手势软件 编辑:程序博客网 时间:2024/05/16 09:27



例子:写一个在字符串1后追加字符串2的子程序。折字符串均为0结尾

DSEGSEGMENTBUFFER1  DB'Hello World ',0 DB50 DUP(0)BUFFER2 DB' Welcome !!!',0DSEGENDSCSEGSEGMENTASSUMEDS:DSEG,CS:CSEGSTART:MOVAX,DSEGMOVDS,AX;MOVSI,OFFSETBUFFER1CALLDMESSCALLNEWLINE           ;显示buff1信息;MOVSI,OFFSETBUFFER2CALLDMESSCALLNEWLINE           ;显示buff2信息;MOVSI,OFFSETBUFFER1MOVDI,OFFSETBUFFER2CALLSTRCAT             ;将字符串2添加到字符串1中MOVSI,OFFSETBUFFER1CALLDMESS              ;显示添加之后的字符串CALLNEWLINEMOVAX,4C00HINT21H;子程序名:DMESS;功   能:显示一个以0结尾的字符串;入口参数:SI = 显示字符串的首地址;出口参数:无DMESS PROCDMESS1:MOVDL,[SI]INCSIORDL,DL;OR操作使CF=0,ZF会反映运算结果JZDMESS2MOVAH,2INT21HJMPDMESS1DMESS2:RETDMESS ENDPNEWLINEPROCPUSHAXPUSHDXMOVDL,0DHMOVAH,2 INT21HMOVDL,0AHMOVAH,2 INT21HPOPDXPOPAXRETNEWLINE ENDP;子程序名:STRCAT;功   能:在字符串1末尾,添加字符串2;入口参数:DS:SI = 字符串1其实地址的段值:偏移;          DS:DI = 字符串2起始地址的段值:偏移;出口参数:无;说   明:不考虑在字符串1后是否留有足够的空间STRCATPROCPUSHESPUSHAXPUSHCXPUSHSIPUSHDICLD               ;清DF的方向标志位PUSHDSPOPES        ;使ES等于DSPUSHDI  ;保存DIMOVDI,SI  ;将SIXORAL,AL     ;清空AL,使AL = 0 MOVCX,0FFFFHREPNZSCASB     ;扫描SI指向的字符串,将DI指向字符串的结尾处LEASI,[DI-1] ;将SI指向字符串中的最后一个字符,非零POPDI         ;MOVCX,0FFFFHREPNZSCASBNOTCX         ;确认字符串中的长度SUBDI,CX      ;将DI,重新指向字符串的开头XCHGSI,DI      ;交换SI 与 DI TESTSI,1       ;判断SI指向的字符串的地址是否奇数地址JZSTRCAT1  MOVSB           ;如果是奇数地址,首先保存一个字节DECCXSTRCAT1:SHRCX,1REPZMOVSWJNCSTRCAT2MOVSBSTRCAT2:POPDIPOPSIPOPCXPOPAXPOPESRETSTRCATENDPCSEGENDSEND START

0 0
原创粉丝点击