C语言--学习笔记--第十课
编辑edit test.asm 编译masm test; link test;void showstr(char * str) /*1、void showstr()后面没有";" 2、记住(char * str)参数*/
{
int i = 0;
while(str)
{
printf("%c",str);
i++;
}
printf("\n");
}
main()
{
char str1;
char str2;
scanf("%19s",str1);
scanf("%19s",str2);
showstr(str1);
showstr(str2);
}
先封装一个函数;char*str 与int申请字节等价???
函数分解;
main()
{
char str1;
char str2;
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++;
}
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后面告诉程序起始位置;
小累,未完待续…… No excuse for going in the wrong direction.
页:
[1]