例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 | |||||
从上面四个例子,我们不难看出处理字符串的一般方法,感兴趣的读者可自行编写实现字符串变小写、整体拷贝、逆转和查找等功能的子程序,甚至还可以建立起自己的字符串处理库文件。