Code Example Passes String From C to Assembly Language

ID: Q29113

5.10 6.00 6.00a 6.00ax 7.00 | 5.10 6.00 6.00a | 1.00 1.50

MS-DOS                      | OS/2            | WINDOWS
kbprg

The information in this article applies to:

SUMMARY

The following code example demonstrates passing a string to an assembly language program that accesses the string, changes one character, and returns.

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 ; Assembler 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: kbinf 1.00 1.50 6.00 6.00a 6.00ax 7.00 KBCategory: kbprg KBSubcategory: CLngIss MASMLngIss Keywords : kb16bitonly

Last Reviewed: July 18, 1997