[C] 纯文本查看 复制代码 编辑edit test.asm 编译masm test; link test;
void showstr(char * str) /*1、void showstr()后面没有";" 2、记住(char * str)参数*/
{
int i = 0;
while(str[i])
{
printf("%c",str[i]);
i++;
}
printf("\n");
}
main()
{
char str1[20];
char str2[20];
scanf("%19s",str1);
scanf("%19s",str2);
showstr(str1);
showstr(str2);
}
先封装一个函数;char*str 与int申请字节等价???
函数分解;
main()
{
char str1[20];
char str2[20];
char * _show_str = 0;
int _show_i=0;
int _ret_kind = 0;
goto _main;
_show_str:
_show_i = 0; /*因为有两处调用,所以初始值必须有,不能省略*/
while(*(_show_str+_show_i))
{
printf("%c",_show_str[_show_i]);
_show_i++;
}
printf("\n");
if(_ret_kind == 1)
goto _showstr_1end;
if(_ret_kind == 2)
goto _showstr_2end;
_main:
scanf("%19s",str1);
scanf("%19s",str2);
_show_str = str1;
_ret_kind = 1;
goto _show_str; /*先压入参数;明白了,先给参数goto到函数的时候,根据里面一个参数的数值,然后再从参数里面返回到主程序*/
_showstr_1end:
/* showstr(str1); */
_show_str = str2;
_ret_kind = 2;
goto _show_str;
_showstr_2end:
/* showstr(str2); */
;
}
可以运行;
==============================================================
汇编:
assume cs:code ; main()
code segment ; {
;int a;
;int b;
a dw 0
b dw 0
mov a,1
mov b,1
mov ax,a
mov bx,b
add ax,bx
code ends ; {
end
--------------
a dw 申请两个字节; b db 申请一个字节;
编辑edit test.asm 编译masm test; link test;
=========================================
正确的代码:
assume cs:code
code segment ;代码段开始;
a dw 0
b dw 0
start: mov a,1
mov b,1
mov ax,a
mov bx,b
add ax,bx
mov ax,4c00h
int 21h ;这两句代码是程序执行完后返回DOS
code ends ;代码段结束;
end start ;一定要在end后面告诉程序起始位置;
|