汇编 赋值语句语句解释,求指点

您当前位置:&->&&->&
更新时间:
文件大小:3.1MB
语言要求:简体中文
浏览次数:人浏览
同类热门资料
资料下载地址
(确认已经开启迅雷或电驴)
内容简介:
本书是全国高等教育自学考试指定教材《 汇编语言程序设计》(计算机及应用专业&&专科)的同步辅导用书,完全遵循自学考试大纲的要求,总结出汇编语言程序设计课程的知识体系和要点,针对重点与难点设计典型例题并细致地分析,并通过大量模拟试题的练习进行强化。
本书共分7章,第1章介绍了计算机系统的基本组成、 CPU的寄存器组中各寄存器的作用和 CPU的存储器组织;第2章讲述了的寻址方式和指令系统;第3章详细介绍了汇编语言程序设计中语句的格式和伪指令;第 4章至第7章分析了顺序程序设计、分支程序设计、循环程序设计的基本方法和设计技巧。每章均包括&学习目的和要求&、&知识体系&、&例题分析&、&练习题及参考答案&4个部分,条理清晰、重点明确、为广大读者学习和巩固汇编语言程序设计课程知识提供了一条很好的学习捷径。
本书的特色是在尽可能覆盖全部考核内容的基础上,加强对考核重点与难点的分析与练习,可供参加高等教育计算机及应用专业自学考试的考生作为复习参考,也可作为自学考试辅导教师的教学参考用书。
内容截图:
相关学习资料
友情链接:
&&&& &&&&&&&&&&&&&&&&
学习资料库,由广大资源爱好者通过共享互助而共享各种学习资料,但学习资料库无法保证所共享资料的完整性和合理性
版权所有 Gzip enabled【C/C++】(20)
#include&stdio.h&
void show()
for(i=0;i&100;i++){
for(j=2;j&=i;j++){
if(i%j==0)
printf(&%d&,i);
pushl %ebx
//将%ebx压入栈,%ebx作为变量i的寄存器
subl $24, %esp
//栈顶指针减24
movl $0, %ebx
//先把i=0存到%ebx寄存器
//无条件,直接跳转到L2
//执行第二个for循环的语句
movl %ebx, %eax
//把%ebx(i)复制给 %eax
//R[%edx]:R[%eax] = 符号位扩展R[%eax],转换为4字节(把%eax符号位扩展到%edx,此时%edx存放的是%ebx(i)的符号位)
idivl %ecx
//R[%edx] = R[%edx]:R[%eax] % R[%eax] = R[%edx]:R[%eax] /(把i%j存放到%edx中,把i/j存放到%eax)
testl %edx, %edx
//测试双字,与关系,S1 & S2(判断%edx是否为0,即判断i%j是否为0)
//相等|零时候跳转(
if(i%j==0)--&L3,if(i%j!=0)执行接下去L8的语句
addl $1, %ecx
cmpl %ebx, %ecx
//判断 j &= i
//如果不符合
j &= i ,即
j&i ,即该数是素数,就执行接下去L5的输出语句
//直接跳转到L5
movl $2, %ecx
//把j=2存放到%ecx
//直接跳转到L3
movl $2, %ecx
//把j=2存放到%ecx
cmpl %ecx, %ebx
//比较i和j
//如果i&j 跳转到 L6 ,否则执行下面L5
//printf 代码块,输出素数
movl %ebx, 8(%esp)
movl $.LC0, 4(%esp)
movl $1, (%esp)
call __printf_chk
addl $1, %ebx
cmpl $100, %ebx
//判断i&100
//如果i=100了,就跳到L1
cmpl $1, %ebx
//比较i和1
//如果i&=1 的话,跳转到 L9,否则执行下面的代码(所以是从i=2开始是直接执行下面的代码)
movl %ebx, %eax
//把 %ebx (i) 复制到%eax中
shrl $31, %eax
//将 %eax 进行逻辑右移31位(和上面一句联合起来的效果就是将%eax设置为全0)
leal (%ebx,%eax), %edx
andl $1, %edx
cmpl %eax, %edx
//判断%eax和%edx是否相等
movl $2, %ecx
//%ecx存放j变量,所以先把j=2存放到%ecx
//无条件跳转到L8
//等到i=100时,跳转到这,程序结束
addl $24, %esp
//栈顶指针加24
//将%ebx弹出栈
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:7674次
排名:千里之外
原创:39篇
转载:24篇
(1)(28)(9)(26)求汇编语言与C语言的比较?_单片机_百科问答
求汇编语言与C语言的比较?
提问者:孔宝宁
汇编语言作为一个符号化的机器语言,其代码执行效率高,运行速度快,对DSP内核管理方便,可以充分发挥DSP的硬件性能,非常适合于编写实时性要求较高的控制程序。但其开发的工作量大,程序的可读性差。相比之下,作为高级语言的c具有可读性强、编程简单和调试方便的特点。C语言是目前非常流行的一种编程语言,除具有高级语言使用方便灵活、数据处理能力强、 编程简单等优点外,还可实现汇编语言的大部分功能,如可直接对硬件进行操作、生成的 目标代码质量较高且执行的速度较快等。所以在工程上对硬件处理速度要求不很高的情况下, 基本可以用C代替汇编语言,编写接口电路的控制软件。但C也不能完全取代汇编语言,如在一些对速度要求很高的实时控制系统中,以及对硬件的特殊控制方面,C有时也不能完全很好胜任,还需要汇编语言来编写。因为汇编语言目标代码更精练,对硬件直接控制能力更强和执行速度更快,但汇编语言编程烦难、表达能力差也显而易见。比较好的解决办法是C与汇编语言混合编程,即用C编写软件的调度程序、用户界面以及速度要求不高的控制部分,而用汇编语言对速度敏感部分提供最高速度的处理模块,供C调用。这种方法提供了最佳的软件设计方案,做到了兼顾速度效率高和灵活方便。单片机里的C语言和普通的C语言有什么区别?还有就是如果用C++代替C语言用在单片机上,可不可以用?答案;没有区别。只是生成的最后代码(机器代码不同,事实上,是生成的汇编代码不同,再由汇编代码生成机器代码。第二个,可行,不过,要有对应的C++编译器才行。一般的应用不会用到C++,因为C++编译器是很大的,开发起来很费事。并且C++并不像C那样比较&标准化&,可能会出现移植问题。单片机c语言?其实就是C语言,应该比纯C语言还简单点。 它类似口语似的对单片机操作,
首先你要买本C语言的书。我给你推荐本唐浩强版《C语言程序设计》蛮好的,很多人用。 这里有唐浩强的视频教程网址.cn/html/92/171092_itemid_36945.htmlC语言规范只有一种,那就是ANSI C 不同的平台(比如电脑用的和单片机专用)或者编译器(比如TC和GCC)之间的语法差异并不大,那么自成一派的种种版本的C语言差别在哪里呢? 那就是C强大的库函数了。ANSI C并没有规定什么库函数,就连小小的printf()函数(printf也不是C内部的哦,所以一定记得加上头文件stdio.h),各自的实现方式也是千差万别。但是这并不影响我们的使用。只要掌握了C的基本语法,会常用的库函数,就够用了。 这一点在单片机上体现得尤为明显。由于单片机的特殊性,特别是性能的限制,如内存、处理器等等,使它的库函数与我们常用的有较大不同。但就语法而言,还是遵循ANSI C的。 至于汇编语言,我想楼主理解错了吧?汇编语言是另一种语言,和C语言是两码事。C语言是用汇编语言设计出来的,而C语言可以嵌入汇编语言。尤其是单片机中,因为汇编语言比C效率更高(也更麻烦),所以对性能要求比较苛刻的场合同常用汇编语言来写。汇编语言是一种与具体CPU及其它硬件息息相关的语言,比如:现在的PC(80X86系列CPU),Intel的MCS51、MCS96及兼容单片机、日立的H8系列单片机,摩托罗拉M68系列单片机、PIC系列单片机它们都有汇编语言,但大相径庭。汇编语言与机器语言存在一一对应关系,所以它们的编译器非常容易编写,另外由于汇编语言的每个指令都与硬件息息相关,所以有极高的执行效率,和很小的体积。C、C++等高级语言往往更注重于算法和数据结构,它们的指令与机器语言不存在一一对应关系,所以编写针对硬件的结果是体积大了数倍,效率反而更低下。另外,高级语言针对非PC机需要严重依赖开发包,但很多非很流行的CPU往往并没有提供开发包,这时候汇编语言就是唯一的选择。汇编语言由于与硬件息息相关,所以也存在移植困难、对硬件不了解,几乎无法编写的缺点。 总体来说,高级语言通常用于PC机和流行系统的软件开发。汇编语言通常用于单片机开发、PC机硬件驱动程序开发、机床控制系统开发等等,对于这些场合,往往需要一些定制的硬件即外部机构,而这些通常很难被标准化和模块化。开发包来开发硬件通常需要专门的特定硬件来支持,并且可扩展性非常差,利用高级语言和专用开发包来开发这些咚咚,往往是成本高出很多,但效果还是不尽人意。 大街上的自助投币饮料售货机、ATM通常是某些公司的成形产品,不会有太大的改动,它们通常用它们厂家内部的专用工具和开发包开发(外人要不到的),如果你自己设计的话,汇编语言可能是你唯一的工具,甚至有可能要和机器语言直接打交道。可以用汇编来写,当然也可以用高级语言,如c语言来写,只要有对应此硬件的编译器就行了 如果要用汇编写,当然也必须有对应该硬件电路的汇编程序才行. 另外补充一点,程序最重要的不是语言类型,而是设计思想!只要思想正确任何语言都行如果芯片是可以编程的,那无所谓用哪种语言来编写,因为最后都要经过编译汇编,生成机器码 比如单片机,你可以用汇编来写,也可以用C来写,还可以用C++写,只要你的编译器支持将这些东西转换成需要的机器码就可以初学者刚接触到的大都是低性能的8位机,如51、AVR、PIC之类,这些单片机的共同特点便是运算速度低下,为了充分利用硬件性能,在开发实时控制系统时,汇编语言无疑是最能保证运行效率的。但是这也带来了许多麻烦,比如代码不易维护,其他开发人员难以阅读,理解等等。另外,开发周期长,移植性极差也是汇编语言的一个缺陷。奋斗了数个日夜的代码换个型号就没法用了,想必也是十分令人郁闷的事情。 我的建议是是C和汇编都要学习,汇编不要求熟练掌握,但至少要知道什么样的C代码会大致造成怎样的汇编代码,这点对与底层硬件打交道的程序员来说很重要,比如用51编程时程序里用了一大堆浮点数,那你的程序就等着看乌龟爬啦。而一个复杂的系统通常用C编写更有利于维护和总体把握,同时现在很多单片机的编译器也能支持C和汇编的混合编程,在关键算法的地方采用汇编也是一个很好的选择。 另外,较为新型的单片机,比如AVR,在开发内核时便与其C编译器同步进行,可以说是为C语言量身定做的单片机,在这类单片机上运行由C编译的程序可以说效率并不会比汇编低很多。
回答者:雷艺力
Mail: Copyright by ;All rights reserved.

我要回帖

更多关于 汇编 赋值语句 的文章

 

随机推荐