1*94eb4751STimo Kreuzer#include <asm.inc> 2*94eb4751STimo Kreuzer#if 0 34fec953eSTimo Kreuzer page ,132 44fec953eSTimo Kreuzer title strset - set all characters of string to character 54fec953eSTimo Kreuzer;*** 64fec953eSTimo Kreuzer;strset.asm - sets all charcaters of string to given character 74fec953eSTimo Kreuzer; 84fec953eSTimo Kreuzer; Copyright (c) Microsoft Corporation. All rights reserved. 94fec953eSTimo Kreuzer; 104fec953eSTimo Kreuzer;Purpose: 114fec953eSTimo Kreuzer; defines _strset() - sets all of the characters in a string (except 124fec953eSTimo Kreuzer; the '\0') equal to a given character. 134fec953eSTimo Kreuzer; 144fec953eSTimo Kreuzer;******************************************************************************* 154fec953eSTimo Kreuzer 164fec953eSTimo Kreuzer .xlist 174fec953eSTimo Kreuzer include cruntime.inc 184fec953eSTimo Kreuzer .list 194fec953eSTimo Kreuzer 204fec953eSTimo Kreuzerpage 214fec953eSTimo Kreuzer;*** 224fec953eSTimo Kreuzer;char *_strset(string, val) - sets all of string to val 234fec953eSTimo Kreuzer; 244fec953eSTimo Kreuzer;Purpose: 254fec953eSTimo Kreuzer; Sets all of characters in string (except the terminating '/0' 264fec953eSTimo Kreuzer; character) equal to val. 274fec953eSTimo Kreuzer; 284fec953eSTimo Kreuzer; Algorithm: 294fec953eSTimo Kreuzer; char * 304fec953eSTimo Kreuzer; _strset (string, val) 314fec953eSTimo Kreuzer; char *string; 324fec953eSTimo Kreuzer; char val; 334fec953eSTimo Kreuzer; { 344fec953eSTimo Kreuzer; char *start = string; 354fec953eSTimo Kreuzer; 364fec953eSTimo Kreuzer; while (*string) 374fec953eSTimo Kreuzer; *string++ = val; 384fec953eSTimo Kreuzer; return(start); 394fec953eSTimo Kreuzer; } 404fec953eSTimo Kreuzer; 414fec953eSTimo Kreuzer;Entry: 424fec953eSTimo Kreuzer; char *string - string to modify 434fec953eSTimo Kreuzer; char val - value to fill string with 444fec953eSTimo Kreuzer; 454fec953eSTimo Kreuzer;Exit: 464fec953eSTimo Kreuzer; returns string -- now filled with val's 474fec953eSTimo Kreuzer; 484fec953eSTimo Kreuzer;Uses: 494fec953eSTimo Kreuzer; 504fec953eSTimo Kreuzer;Exceptions: 514fec953eSTimo Kreuzer; 524fec953eSTimo Kreuzer;******************************************************************************* 53*94eb4751STimo Kreuzer#endif 544fec953eSTimo Kreuzer 55*94eb4751STimo Kreuzer .code 564fec953eSTimo Kreuzer 57*94eb4751STimo Kreuzer public __strset 58*94eb4751STimo Kreuzer.PROC __strset 59*94eb4751STimo Kreuzer// Prolog. Original sources used ML's extended PROC feature to autogenerate this. 60*94eb4751STimo Kreuzer push ebp 61*94eb4751STimo Kreuzer mov ebp, esp 62*94eb4751STimo Kreuzer push edi // uses edi 63*94eb4751STimo Kreuzer#define string ebp + 8 // string:ptr byte 64*94eb4751STimo Kreuzer#define val ebp + 12 // val:byte 654fec953eSTimo Kreuzer 664fec953eSTimo Kreuzer 67*94eb4751STimo Kreuzer mov edi,[string] // di = string 68*94eb4751STimo Kreuzer mov edx,edi // dx=string addr; save return value 694fec953eSTimo Kreuzer 70*94eb4751STimo Kreuzer xor eax,eax // ax = 0 71*94eb4751STimo Kreuzer or ecx,-1 // cx = -1 72*94eb4751STimo Kreuzerrepne scasb // scan string & count bytes 73*94eb4751STimo Kreuzer add ecx,2 // cx=-strlen 74*94eb4751STimo Kreuzer neg ecx // cx=strlen 75*94eb4751STimo Kreuzer mov al,[val] // al = byte value to store 76*94eb4751STimo Kreuzer mov edi,edx // di=string addr 774fec953eSTimo Kreuzerrep stosb 784fec953eSTimo Kreuzer 79*94eb4751STimo Kreuzer mov eax,edx // return value: string addr 804fec953eSTimo Kreuzer 81*94eb4751STimo Kreuzer// Epilog. Original sources used ML's extended PROC feature to autogenerate this. 82*94eb4751STimo Kreuzer pop edi 83*94eb4751STimo Kreuzer pop ebp 844fec953eSTimo Kreuzer 85*94eb4751STimo Kreuzer ret // _cdecl return 86*94eb4751STimo Kreuzer 87*94eb4751STimo Kreuzer.ENDP // __strset 884fec953eSTimo Kreuzer end 89