Code Example Passes String From C to Assembly Language

Last reviewed: July 17, 1997
Article 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:

  • Microsoft C for MS-DOS, versions 5.1, 6.0, 6.0a, and 6.0ax
  • Microsoft C for OS/2, versions 5.1, 6.0, and 6.0a
  • Microsoft C/C++ for MS-DOS, version 7.0
  • Microsoft Visual C++ for Windows, versions 1.0 and 1.5

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


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: July 17, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.