TOM 发表于 2017-4-30 13:28:51

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后面告诉程序起始位置;

TOM 发表于 2017-4-30 13:30:23

小累,未完待续……

大L 发表于 2020-2-21 18:29:24

No excuse for going in the wrong direction.
页: [1]
查看完整版本: C语言--学习笔记--第十课