例10.4 编写一个把字符串中空格和TAB压缩掉的子程序Compress,字符串String是以ASCII码0为结束符。
| 解: | |||||
| .MODEL | SMALL, C | ||||
| .DATA | |||||
| 
       SPACE  | 
    EQU 20H | ||||
| 
       TAB  | 
    EQU 9H | ||||
| 
       Buff  | 
    DB "12 3 4 Ab cdef", 0 | ||||
| .CODE | |||||
| Compress | PROC USES AX BX SI DS, String:FAR PTR BYTE | ||||
| LDS | SI, String | ;SI用于扫描字符串的指针 | |||
| MOV | BX, SI | ;BX用于存放结果的指针 | |||
| .REPEAT | |||||
| 
       MOV  | 
    AL, [SI] | ||||
| 
       INC  | 
    SI | ||||
| 
       .IF AL!=SPACE && AL!=TAB  |  
  |||||
| MOV | [BX], AL | ||||
| INC | BX | ||||
| 
       .ENDIF  | 
  |||||
| .UNTIL AL==0 | |||||
| RET | |||||
| Compress | ENDP | ||||
| .STARTUP | |||||
| INVOKE Compress, ADDR Buff | |||||
| .EXIT | 0 | ||||
| END | |||||
从上面四个例子,我们不难看出处理字符串的一般方法,感兴趣的读者可自行编写实现字符串变小写、整体拷贝、逆转和查找等功能的子程序,甚至还可以建立起自己的字符串处理库文件。