学习汇编到底有什么作用?虽然在学却不太真正明白

如题所述

汇编语言是对一种cpu体系结构的展示,是cpu指令集的体现。学习汇编一方面是理解cpu的机器代码如何表述高级语言的表达的程序逻辑,另一方面是学习cpu的指令集设计特点和功能。比如,汇编的指令为什么会有转移指令类、逻辑运算指令类、位操作指令类、系统调用(或者软中断)等等,他们如何在C语言中体现,都关系到一款cpu是否能够支持高级语言的特性。学习汇编并不意味着将来肯定会用汇编编写程序,这在现在效率是很低下的。但是做cpu设计的人,在自己设计的cpu编译器还没有设计出来前,必须要用手写汇编的程序测试cpu的正确性。
此外,汇编语言还用在一些高级语言无法表达或者编译器无法只能产生高级指令的情况,例如,x86 cpu中有一些重要的寄存器如cr0,cr1等等,要读取或者改写这些寄存器的值,C语言是办不到的,就需要内嵌一条汇编来实现,你可以参见linux内核代码相关内容。
还有,奔腾以后的cpu都支持mmx指令集,我不说的太复杂了,如果你有兴趣再联系我,这种指令集里的指令可以加速向量运算,但是编译器不能智能的把c语言的一些向量运算识别出来换成这种指令,这时候就需要用汇编写出库函数提供给那些普通高级语言用户使用。
总之,汇编语言是计算机体系结构中一个重要组成部分,不可或缺。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-13
汇编是一门低级语言,它涉及到电脑的硬件的部分,理解起来有一定难度,需要一步一步的操作.
但是学好汇编就可以对电脑的硬件以及系统的工作原理方式等等有所了解,好处是非常大的.
一个会高级语言的高手不一定会汇编,但会汇编的高手一定会高级语言.
汇编虽然难,但是用处非常大,对学习硬件知识有很大帮助.
建议各种语言都了解一下.
如果要学习底层的,硬件方面的知识,就可以选择汇编.
如果要学习操作系统,大型软件等,就可以选择C\C++等语言.
如果做网站开发,开发一些小软件等,就可学JAVA\.NET本回答被提问者采纳
第2个回答  2008-10-13
由8031内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒L1,L3,L5,L7亮,第六秒钟L2,L4, L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮......一直循环下去。 ORG 0000H AJMP START ORG 001BH ;T1中断入口地址 AJMP INT_T1 ORG 0100H START: MOV SP,#60H MOV TMOD,#10H ;置T1为方式1 MOV TL1,#00H ;延时50mS的时间常数 MOV TH1,#4BH MOV R0,#00H MOV R1,#20 SETB TR1 SETB ET1 SETB EA ;开中断 SJMP $ INT_T1: ;T1中断服务子程序 PUSH ACC ;保护现场 PUSH PSW PUSH DPL PUSH DPH CLR TR1 ;关中断 MOV TL1,#00H ;延时50mS常数 MOV TH1,#4BH SETB TR1 ;开中断 DJNZ R1,EXIT MOV R1,#20 ;延时一秒的常数 MOV DPTR ,#DATA ;置常数表基址 MOV A,R0 ;置常数表偏移量 MOVC A,@A+DPTR ;读常数表 MOV P1,A ;送P1口显示 INC R0 (ANL 00,#07H)!!! 这一句我不知道起什么作用请高手指点 EXIT: POP DPH ;恢复现场 POP DPL POP PSW POP ACC RETI ;LED显示常数表 DATA: DB 0FAH,0F5H,0AFH,05FH,0AAH,55H,00H,0FFH END
相似回答