c语言谁给我解释解释 19行到37行的 每一步的意思啊 这是一个行数表示的程序

c语言谁给我解释解释 19行到37行的 每一步的意思啊 这是一个行数表示的程序,第1张

fp=fopen(FileName,"r"); //以读的方式打开文件

20: if (fp!=NULL){ //文件不为空

21: lineno=1; //这是初始化 ,文件元素个数

22: flag=1; //标记

23: while(1){

24: c=fgetc(fp); //在文件里以一个char类型取数据

25: if(c==EOF) break; //文件结束了

26: if(flag==1){ //

27: printf("%3d:",lineno);

28: lineno++; //累加

29: flag=0; //flag 就像是一个锁一样的,一会打开一会关闭

30: }

31: if(c=='\t'){ //如果是'\t' 输入" "

32: printf(" ");

33: }else{

34: printf("%c",c);

35: }

36: if(c=='\n'){ //如果换行符,flag置1

37: flag=1;

main()

   {

int i;//定义一个整型变量i

     for(i=3;i<10;i++) /循环输出3-10(不包括10),能被4整除的不被输出(即输出35679)/

         {

if(i%4==0)//判断能不能被4整除

                continue;//可以被整除则跳过此次循环,比如当i=4的时候,判断能被4整除了,则执行到\

//执行到continue的时候,将跳过接下来要执行的,直接到i=5的情况。(和break区别)

           else

                 printf(“%d,”,i);//当i不被4整除,则输出。

          }                            

}

//结果为:35679

//-----------------------------------------------------------

main()

         {  int x;

              x=3;//初始化x = 3

              do

              {  printf(“%d”,x--);//先输出X的值(3),再将X-1

                }while(!x); //X 不等于0,所以!x 等于0,即跳出循环                

          }

//结果为:3

//-----------------------------------------------------------------

main()

       { int a=8 , b=1;//定义并初始化a,b

a=a+b;//a = 9

b=ab;//b = 9

printf("%d,%d",a,b);    }

//结果为:9,9

//---------------------------------------------------------------------------

       fun(int a, int b)//定义一个函数,传入a,b两个参数(其实就是比较两个数的大小,把大的返回)

        { if(a>b) return (a);//如果a>b,就返回a

          Else  return (b);  }//否则(即b>=a),就返回b

        main()

       { int x=3,y=8,z=6,r;

          r=fun(fun(x,y),2z);//分两步,第一,比较x和y,得到xy中最大的(显然y比较大为8),第二,把x,y中最大的(y)和2Z比较(即8和26比较),显然2z比较大为12,所以r=12

          printf(“%d\n”,r);  }

//结果为:12

//------------------------------------------------------------------------

     main()

      { int n;

         For(n=3; n<=10; n++)

           { if(n%5= =0)break;//break和continue的区别来了,break是直接跳出循环,continue是只跳过这次玄幻,比如n=5的时候,正好可以被5整除等于0,则执行break;就直接跳出循环了,而continue,则还会执行n=6,n=7的情况

             Printf(“%d”,n); }            }

//结果为:34

;定义堆栈段

stack segment stack

db 100 dup()

stack ends

;定义数据段

data segment

hello db "hello,world!",0dh,0ah,"$"

xxx db ()

data ends

;代码段

code segment

assume cs:code,ds:data,ss:stack ;指定段地址

start:

;下面两行是设置数据段地址

mov ax,data

mov ds,ax

;下面两行是键盘输入并回显,将输入存到al中

mov ah,1

int 21h

;将al存到xxx中

mov xxx, al

; 以下几行是回车换行

mov ah,2

mov dl,0ah

int 21h

mov ah,2

mov dl,0dh

int 21h

;输出xxx

mov ah,2

mov dl,xxx

int 21h

总体作用就是输入一个字符回显以后再显示出来,

DATAS

SEGMENT

;数据段定义伪指令,数据段名为DATAS

STRING

DB

'Hello

World!',13,10,'$'

;一个字符串以$结尾

DATAS

ENDS

;数据段结束

CODES

SEGMENT

;代码段定义

ASSUME

CS:CODES,DS:DATAS

;利用ASSUME伪指令指定某个段分配给哪一个寄存器,它并没有把段地址装入段寄存器,所以一般在代码段开始处,还必须把段地址装入相应的段寄存器(如DS)中。但是代码段和堆栈段不需要这样,CS、SS是由系统负责设置的

START:

MOV

AX,DATAS

;取段地址送入AX

MOV

DS,AX

;把段地址装入DS

LEA

DX,STRING

;LEA装入有效地址。将STRING的有效地址(或段内偏移量)送入DX,此时DX就指向了STRING所对应的一个存储单位

MOV

AH,9

INT

21H

;调用21H中断的9号功能。9号功能用于显示字符串,即在屏幕上显示由DX指向的字符串(即STRING指向的字符串),汇编语言规定,9号功能显示符串以'$'

结束。13,10(0DH,0AH)是回车和换行符的ASCII码。

MOV

AH,4CH

INT

21H

;调用21H中断的4CH功能,即返回到DOS

CODES

ENDS

;代码段结束

END

START

;从START处开始执行指令

总结:该程序就是将以STRING为首地址的字符串利用9号功能号输出显示在屏幕上,即在屏幕上显示Hello

World!并回车换一行。通常我们输出完一串数据或者字符串都是需要回车换一行的。

注:21H中断9号功能的使用要点

1、被显示的字符串应该以'$'作为结束符号

2、把要被显示字符串所在的首地址赋给DX

第一个是常开触点X0,意思是当X0为ON,导通运行后面的指令,X0为OFF,不导通不运行后面的指令。下面的T0,M1,M8002等常开触点都是。

第二个是常闭触点T1,意思是当T1为ON,不导通不运行后面的指令,T1为OFF,导通运行后面的指令。下面的M1常闭触点也是。

第三个T0 K2是定时器,定时2100ma后下面的T0触点为ON。下面的T1 K1同理。

C0 D0是计数器,意思是C0计数到D0个后,C0触点为ON,(这里这个D0不知道有什么意义,因为这个程序中把D0固定成4了,所以C0是计数4个,那可以直接用 C0 K4呀,为啥要用D0呢,还得多个MOV赋值)。

[= C0 K1]的意思是当C0中的数据等于1时 导通运行后面的指令。下面的同理。

(Y0)的意思是输出Y0,下面的同理。

RST C0是将C0复位成0,即复位了C0触点,也复位的C0的计数个数。下面同理。将M1复位0,也就是复位成OFF。

MOV K4 D0的意思是将十进制常数4赋值给寄存器D0。

上升沿触点M0,意思是当M0由OFF变成ON时发出一个扫描周期的脉冲。

SET M1是将M1置位,执行后M1为ON。

下降沿触点X,意思是当X0由ON变成OFF时发出一个扫描周期的脉冲。

望采纳。。。。。。

以上就是关于c语言谁给我解释解释 19行到37行的 每一步的意思啊 这是一个行数表示的程序全部的内容,包括:c语言谁给我解释解释 19行到37行的 每一步的意思啊 这是一个行数表示的程序、(入门级)C语言程序 看不懂,求详细每行注释、帮忙下解释下下面汇编程序每一行代码功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10116556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存