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:
The following code example demonstrates passing a string to an assembly language program that accesses the string, changes one character, and returns.
/*
* 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 */
}
; 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