-112- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
可见这个问题的核心是两次将字符串移动位置。我们刚刚学过CMPS指令,它可以直接比较在存储器中的两串数据,那么有没有串指令可以直接在内存中移动数据串呢? 回答是肯定的。请看程序INSSTR1.ASM: INSSTR1.ASM |
|||||||||||||||||||||
data string buffer substrg data code main main move_str |
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 push push push mov mov mov mov add |
ds:data me is presented to all (?) ne' cs:code far ax,data ds,ax dx,offset string ah,9 21h bx,8 move_str 21h bx,offset substrg di,9 insert_str 21h ah,4ch 21h near ax cx si di es ax,data es,ax si,offset string+55 di,si di,bx |
those who love sunshine',0dh,0ah,24h ;初始化DS寄存器 ;DX寄存器指向字符串STRING ;显示字符串 ;BX寄存器设置字符串中间空出的字符数 ;调用MOVE_STR子过程分离字符串 ;显示分离后的字符串 ;BX寄存器指向子串 ;DI寄存器设置插入点 ;调用INSERT_STR子过程插入子串 ;显示完整的字符串 ;结束程序 ;MOVE_STR子过程 ;保存将要使用的寄存器 ;设置ES寄存器指向数据段 ;SI寄存器指向源字符串末尾 ;DI寄存器指向源串末尾后第八个字节处 |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |