strlwr.asm

来自「汇编编程艺术」· 汇编 代码 · 共 68 行

ASM
68
字号
StdGrp		group	StdLib, StdData
;
StdData		segment	para public 'sldata'
		extrn	$lwrtbl:byte
StdData		ends
;
stdlib		segment	para public 'slcode'
		assume	cs:StdGrp
;
		extrn	sl_strdup:far
;
; strlwr- Converts to lower case all upper case characters in the string
;	  pointed at by es:di.
;
; strlwrm- Same as above except it creates a new string then converts the
;	   characters in the new string.  The original string is unchanged.
;
; inputs:
;		es:di-  Buffer for destination string.
;
; outputs:
;		es:di-  Points at converted string (points at new string
;			for strupr2).
;
		public	sl_strlwr
;
sl_strlwr	proc	far
		push	es
		push	ds
		push	ax
		push	bx
		pushf
		push	si
		push	di
;
		mov	si, es
		mov	ds, si
		mov	si, di
		lea	bx, StdGrp:$lwrtbl
ToUprLp:	lodsb
		xlat 	StdGrp:$lwrtbl
		stosb
		cmp	al, 0
		jne	ToUprLp
;
		pop	di
		pop	si
		popf
		pop	bx
		pop	ax
		pop	ds
		pop	es
		ret
sl_strlwr	endp
;
;
		public	sl_strlwrm
;
sl_strlwrm	proc	far
		call	sl_strdup
		jc	RetFar			;Return if error.
		jmp	near ptr sl_strlwr
RetFar:		ret
sl_strlwrm	endp
;
stdlib		ends
		end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?