INF: Example of Passing C Strings to Assembly Language

ID Number: Q29113

5.00 5.10 6.00 6.00a 6.00ax 7.00 | 5.10 6.00 6.00a

MS-DOS | OS/2

Summary:

The following code is a program example that passes a string to an

assembly language routine. The routine will access the string, change

one character, and return.

More Information:

Sample Code 1

-------------

/* Compile options needed: none

*/

#include <string.h>

#include <stdio.h>

void main(void); /* Prototype for main */

void extern changit(char *); /* Assembly routine declaration*/

char s[10]; /* String to be changed */

void main()

{

strcpy(s,"xxxxxxxxx"); /* Initialize string to x's */

printf("s = %s\n",s);

changit(s); /* Call assembly routine */

printf("s = %s\n",s); /* See if string changed */

}

Sample Code 2

-------------

;Assembly language routine -- assemble with /Mx

;Assemble options needed: none

.MODEL SMALL

.CODE

PUBLIC _changit

_changit PROC

push bp ;Entry sequence

mov bp,sp

mov bx,[bp+4] ;Put array address in bx

mov [bx+8],byte ptr 'Y' ;Change the 9th character

;0 is the first, 1 is second...

pop bp ; Exit sequence

ret

_changit ENDP

END

Additional reference words: 5.00 5.10 6.00 6.00a 6.00ax 7.00