为什么学习汇编

        对于为什么学习汇编这个问题,我觉得应该从开始学习51单片机开始说起,因为以前的51单片机都是用汇编语言写的,看了郭天祥写的书,里面提到他开始学习单片机时,花了好多时间学习汇编,然后用汇编语言写程序,也许,这也是我第一次听到汇编这个词。那时候,我还只学过c语言。

        第二次接触接触这个词应该是在学习《接口技术与微机原理》时,虽然有认真在听,但是由于老师讲的效果不好,我也没听懂,于是课程上完了,我还是没有学会汇编这门语言,后来参加软考,报了中级嵌入式,又要考到汇编,想学好汇编的冲动更大了,但是最后因为没有找到学习的方法,最终还是不了了之,并且因此在软考中把那道将近10分的汇编大题给失去了。后来在网上找了视频看,介绍了一本学习汇编的书,王爽老师的《汇编语言》。边看视频边看书,终于将汇编语言入门了。用了大概三个月的时间,断续断续的将视频和书看完了。现在想来,学习汇编这门语言真的是有必要的。

       首先,学习汇编有利用我们更好地理解计算机工作的原理,作为IT界的一员,每一天都要接触到电脑,不理解其工作原理将情何以堪。汇编语言是除机器语言以外最低级的语言,因为它直接更硬件打交道,我们可以通过一些命令直接访问计算机的硬件设备,如显卡,键盘等。在此,为实现这些功能,我们通过调用BIOS和DOS提供的中断例程实现。比如说我们通过调用int 9号中断对键盘输入进行处理,调用int 16h 0 号子程序中断读取键盘缓冲区的键盘输入。另外我们可以通过一些in 和 out读写命令对各个端口进行读写。还有我们可以找到b800这块字符模式显示缓冲区,在屏幕上显示我们要显示的颜色和设置背景。这些我们每天都在接触的,但是却不知道怎么实现的,通过学习汇编语言我们一下子领悟到了。这正是学习它的乐趣。

       其次,学习汇编让我们以后打代码更有效率。判断一个程序员的优劣,很多时候通过看它打的代码就可以知道了。而如何写下高效率的代码相信对于学习过汇编的人一定是知道的,因为汇编语言提供我们的寄存器太少了,总共就只有14个,包括通用寄存器AX,BX,CX,DX四个,段寄存器四个SS,ES,DS,CS,其中有IP寄存器与CS寄存器搭配指示了当前CPU将要读取指令的地址,SP寄存器与SS寄存器搭配指向栈顶元素,DS数据段寄存器则主要用来保存数据,ES附加段寄存器通常用作扩展段使用。还有指针寄存器BP,可以和通用寄存器一样分为两个独立的八位的寄存器。还有DI和SI两个变址寄存器,常与段寄存器搭配使用,有点相当于我们C语言中常用的数组,最后还有一个标志寄存器FLAG,FLAG特殊之处在于它是按位存储信息。从上面可以看出,编写汇编代码时可以用的资源太少了,这也是造就它高效的原因。因此,学习汇编语言更加有利用我们编程,有利于我们创建高效代码。

       最后,学习汇编我们不再怕栈和指针。栈是一个特殊的数据结构,很多人在一开始用它的时候,总是感到头疼,这主要就是因为我们没有搞清楚什么是栈,栈是用来干什么的。而在汇编语言中,每编写一个比较长的代码或者要临时保存数据时,首先想到的就是栈,汇编语言中寄存器就那么多,每个寄存器都要用的充分,当然就算我们一开始比较讨厌栈,不喜欢使用栈,但是在这里不得不逼你使用它,知道最后你发现了它的便利性,最终喜欢上它。再就是指针,汇编语言还有一个比较大的特点就是你要时时刻刻关注代码执行到哪了,CS:IP指向哪个地址,因此我们经常会使用-T指令进行单步调试。这里CS:IP指向的地址,其实就相当于我们的指针,指针也就是一个指向我们存储数据的工具,很多人会编程,会打代码,可是就是不喜欢用指针,有的甚至打了几年的代码甚至还是不太会用指针,就是因为他们对地址不太感冒。以前我也是这样,但是现在,通过学习了汇编之后,我感觉我再回去看有关指针的C语言代码,已经没有那么头疼,反倒是现在有想去用下指针写下C语言的冲动了。

       这是我第一次写博客,这个博客,算是对这几个月来学习汇编语言的一个总结。最后我想说,虽然汇编语言是一门相对低级落后的语言,但是却是一门最基础的语言,我们在学习了一些高级语言的时候,不妨回头再学学一点低级的语言巩固自己的编程基础,我们不把汇编语言当做我们开发语言,但是我们可以通过学习汇编,更加深入的了解到怎么学好编程,打好代码。



  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值