开始执行程序时,必须先给迟塌程序计数器PC赋以第一条指令的首地址00H,然后就进入第一条指令的取令的取指令阶段。
第一条指令的执行过蚂埋程:
取指令阶段:
①将程序计数器PC的内容(00H)送至地址寄存器AR,记为PCAR。
②程序计数器PC的内容自动加1变为01H,为取下一个指令字节作准备,记码物圆为PC+1PC。
③地址寄存器AR将00H通过地址总线送至存储器,经地址译码器译码,选中00号单元,记为ARM。
④CPU发出"读"命令。
⑤所选中的00号单元的内容B0H读至数据总线DB,记为(00H)DB。
⑥经数据总线DB,将读出的B0H送至数据寄存器,记为DBDR。
⑦数据寄存器DR将其内容送至指令寄存器IR,经过译码,控制逻辑发出招待该条指令的一系列控制信号,记为DRIR,IRID、PLA。经过译码,CPU"识别"出这个 *** 作码就是MOVA,03指令,于是,它"通知"控制器发出执行这条指令的各种控制命令。
进程。进程进程就是程序的一次执行过程,程序是静态的,它作为系统中的一种资源是永远存在的。从文理上剖析程序的意思。文理上讲,程序的含义是指事物发展的既有次序和脉络以及方式、方法碰乱租。
[释义](名)事情进行的先后,指“会议”等庄重场合的安排。[例句]制定程序。(作宾语)程序是这样安排的。程序是指示计算机每一步动作的指令,也是一个可执行文件是笑兆不是有点纳闷,其实啊,这个程序譬如全运会、音乐会的程序等,指的是“行事的先后次序。进程是执行程序的一次执行过程,他是一个动态的概念,是系统资源分配的单位陪贺3、线程一个进程中可以包含若干个线程,线程是cpu调度和执行的单位。
/*收集并存储信息*/
从while循环开始讲吧, 程序要你输入一个电影名, 当gets()函数返回值不为NULL并且输入的字符串的首元素不为空字符时,进入循环体
接着用malloc()函数分配film结构空间,并让结构指针current指向它
首次循环时head = NULL, 所以头指针指向了current, 接着让current->next的虚渗值为NULL, 表示暂无下一部影片
然后调用strcpy()函数将input字符串即电影名复制到结构成员current->title中
接着让你输入影片评分,将值放进current->rating中
第二个while循环清空输入行
程序提示输入下一部影片, 然后让结构指针prev指向current
第一次循环结束,head和prev都指向current
当输入的第二个电影名符合while()循环条件,程序继续执行循环体
这里不同的是分支语句, 这次head的值不再是NULL,所以让成员prev->next(这个握并值前面已经设置为NULL)指向了新分配的内存
/*给出电影列表*/
如果执行到head仍为NULL,则无电影输入
否则将打印输入的电影列表
让结构指针current指向头指针head
当while循环判断current != NULL, 即current不等于空指针时,从头指针开始打印信息, 然后让current->next赋值给current,让current指向下一个结构, 继续打印电影信息
/*任务已完成, 因此释放所分配的内存*/
原代码为:
current = headwhile (current != NUll)
{
free(current)
current = current -> next
}
是错误的
因为当free了current的空间时,将不能再把current->next赋给current, 它们所处的内存已被释放
正确代码为:
current = head
while(current != NUll)
{
prev = current->next
差皮脊 free(current)
current = prev
}
有不懂的可以继续追问
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)