057.基于逆向比较实现高级语言中的trim()函数

本文介绍了一个名为Str_trim的过程,该过程能有效删除字符串末尾的所有指定字符,通过在待删除字符前插入空字节实现。文章提供了使用Irvine32.inc库的汇编语言示例代码,展示了如何对不同字符串应用此过程,包括去除特定字符和空格。
       Str_trim 过程可以删除字符串尾部的全部空格(或者任何重复的其他字符).其实现思路是:在想要移除的字符前面插入一个空字节,根据字符串在内存中的存放规则,这一操作使得这个字节后面所有的待取出内容变得无意义。
;trim trailing characters    trim.asm

;test the trim procedure.trim removes
;trailing all occurrences of a selected
;character from the end of a string

include irvine32.inc

Str_trim PROTO,
	pString:PTR BYTE,		;point to string
	char   :BYTE			;character to remove

Str_Length PROTO,
	pString:PTR BYTE		;pointer to string

ShowString PROTO,
	pString:PTR BYTE

.data
	string_1 BYTE 0
	string_2 BYTE "@@@",0
	string_3 BYTE "Hello###",0
	string_4 BYTE "Hello",0
	string_5 BYTE "H#",0
	string_6 BYTE "#H",0

.code
	main PROC
		call Clrscr

		invoke Str_trim,ADDR string_1,'!'
		invoke ShowString,ADDR string_1

		invoke Str_trim,ADDR string_2,'@'
		invoke ShowString,ADDR string_2

		invoke Str_trim,ADDR string_3,'#'
		invoke ShowString,ADDR string_3

		invoke Str_trim,ADDR string_4,'#'
		invoke ShowString,ADDR string_4

		invoke Str_trim,ADDR string_5,'#'
		invoke ShowString,ADDR string_5

		invoke Str_trim,ADDR string_6,'#'
		invoke ShowString,ADDR string_6

		call WaitMsg
		exit

main ENDP

;-------------------------------------------------
ShowString PROC USES edx,pString:PTR BYTE
;Display a string surround by brackets.
;-------------------------------------------------
.data
	lbracket BYTE "[",0
	rbracket BYTE "]",0
.code
	mov edx,OFFSET lbracket
	call WriteString

	mov edx,pString
	call WriteString
	mov edx,OFFSET rbracket
	call WriteString
	call Crlf
	call WaitMsg
	call Crlf
	ret
ShowString ENDP


END main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值