-110- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
ES:DI寄存器组合、DF标志。同时还有一个指令前缀--REP。 我们来讨论最后一个问题:如何在一个字符串中间插入一个新字符串? 不知道大家能否独立地编制出一般方法的程序,笔者在下面给出了一个: INSSTR.ASM |
|||||||||||||||||||||
data string buffer substrg data code main main move_str not_end: |
segment assume db'The sa db 9 dup db'sunshi ends segment assume proc mov mov mov mov int mov call int mov mov call int mov int endp proc push push mov add cmp jnz mov mov jmp |
ds:data me is presented to all (?) ne',0 cs:code far ax,data ds,ax dx,offset string ah,9 21h bx,9 move_str 21h bx,offset substrg di,9 insert_str 21h ah,4ch 21h near si ax si,offset string si,bx byte ptr [si],'$' not_end al,byte ptr [si] byte ptr [si+8],al return |
those who love sunshine',0dh,0ah,24h ;初始化DS寄存器指向数据段 ;显示源字符串 ;在源字符串的第九个字符位置插入新串 ;调用MOVE_STR子过程空出新串的位置 ;显示源字符串 ;BX寄存器指向将插入的子串 ;DI寄存器指向插入点 ;调用INSERT_STR将子串插入源串 ;显示处理后的字符串 ;结束程序 ;MOVE_STR子过程 ;保存SI寄存器 ;保存AX寄存器 ;SI寄存器指向源字符串 ;计算字符串的分离点 ;分离点是字符串结尾吗? ;若不是结尾转NOT_END ;取得最后的'$'字符 ;将此字符后移8个字节 ;返回主过程 |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |