![]() | 第5章 子程序和串处理 | -107- | |||||||||||||||||||
search: nextchar: cmp_next: out_di: outloop: continue: exit: |
cmp jz inc cmp jnz jmp mov cmp jz lodsb inc cmp jz jmp mov sub mov mov rol rol rol rol push and xlat mov int pop loop mov int mov int inc jmp mov |
al,byte ptr [di] nextchar di byte ptr [di],0 search exit bx,di byte ptr [si],0 out_di bx al,byte ptr [bx] cmp_next continue ax,di ax,offset string bx,offset ascii cx,4 ax,1 ax,1 ax,1 ax,1 ax ax,000fh ah,0eh 10h ax outloop ax,0e0dh 10h al,0ah 10h di next_str ah,4ch |
;将取到的字符与DI指向的字符进行比较 ;若相同则继续比较其余字符 ;不相同则DI寄存器指向下一个字符 ;DI寄存器已经指向字符串末尾了吗? ;未到末尾,转SEARCH继续比较 ;已到末尾,转EXIT结束程序 ;BX寄存器取得字符串指针 ;已经比完所有字符了吗? ;比完所有字符,转OUT_DI输出DI的值 ;取得待查字符串的下一个字母 ;BX中的指针加1,指向下一个字符 ;比较两个字符 ;两字符相同,转CMP_NEXT比下一个字符 ;两字符不同,转CONTINUE ;DI寄存器中的指针送入AX寄存器 ;计算待查字符串在源串中的偏移位置 ;BX寄存器指向ASCII表 ;输出4个数位 ;AL寄存器循环左移4位 ;暂存AX寄存器 ;保留AX寄存器的低4位 ;取得对应的ASCII码 ;利用10H中断的0EH功能 ;输出AL寄存器中的字符 ;取回AX寄存器 ;处理下一个数位 ;输出回车符 ;输出换行符 ;DI寄存器指向下一个字符 ;转NEXT_STR继续搜索待查串的首字符 ;结束程序 |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |