如何学习单片机的汇编语言

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-17
如何学习汇编语言?

学习汇编语言过程:
一,要有一定的微机硬件基础知识,因为汇编很底层,更加接近机器语言,往往很多的东西要从机器层面来支持理解。
二,最好先学习一门高级语言,因为高级语言更接近人的语言,相对比较容易理解。掌握了一门高级语言后再学汇编,一来不易产生畏惧感,二来遇到问题,只能局限于已学的汇编知识来来思考遇到的问题,此时跳出汇编,旁援掌握的语言有助拓新思路,而不只局限与汇编一个思路。
三,细致,踏实的学习态度是少不了的,更为重要的是实践。比喻为:犹如一个战士进入敌营中心地带,要冷静,小心,还要勇敢,智慧,要在敌中心步步为胜,留意敌人的一举一动,将敌一扫而光,不可大意一步,因为接近核心了,稍一大意有可能留下极大隐患。
四,一个狂热的学习劲头,是学习的动力。勤奋,刻苦,等品质也将帮你一路顺进。

1、需要先熟悉电路尤其是数字电路知识。
2、明白常规的数制:主要是2进制和16进制。
3、理解常规概念:比如时钟、时钟周期,工作时序等;还需要懂得地址、寻址、PC等常规概念。
4、指令无需强记,只要明白指令类型、指令字长和指令运行周期等即可。
当然,上述要求只是初步要求。汇编语言是与硬件紧密联系的编程语言,没有电子硬件基础,学起来有种学天书的感觉,所以,硬件扫盲是必须的;另外,要先从51单片机的汇编学比较好,因为它的资料多,硬件相对简单,指令丰富,最主要它是一款“大众”机,提供帮助的资源很吩咐!

我也学习单片机寻址有很多方式:(举几个例子给你吧)
1. 寄存器寻址

寄存器寻址就是操作数存放在寄存器中,指令中指定的寄存器的内容就是操作数。
2. 直接寻址
直接寻址方式就是在指令中直接给出操作数所在存储单元的地址。此时,指令中操作数部分是操作数所在地址。
3. 立即数寻址
立即数寻址就是操作数在指令中直接给出,或者说指令操作码后面立即给出一字节或两字节操作数
4. 寄存器间接寻址
寄存器间接寻址是把指定寄存器的内容作为操作数地址,该地址所指定的单元内容作为操作数。
为了区分寄存器寻址和寄存器间接寻址,在寄存器间接寻址中,所用到的寄存器的前面要加间接寻址符“@”。
例:寄存器R0内容为30H,片内RAM 30H单元的内容为45H。
解:指令“MOV A,R0”的功能是将R0的内容30H传送给累加器A,指令执行结果是累加器A中的内容为30H。
指令“MOV A,@R0”的功能是将R0的内容30H作为操作数的地址,根据这一地址找到内部RAM 30H单元,将其内容45H传送至累加器A,指令执行结果是累加器A中内容为45H。
5. 变址寻址(基址寄存器+变址寄存器间接寻址)
例如:指令“MOVC A,@A+DPTR”是变址寻址。
解:假设DPTR的内容为2030H,累加器A的内容为12H。
该指令的功能是将2030H和12H相加,得到2042H作为操作数地址,在程序存储器中找到2042H单元,将其内容送至累加器A。
6. 相对寻址
例如:在程序存储器中2000H单元有一条双字节的相对转移指令“SJMP 75H”。
解:程序存储器2000H、2001H单元的内容80H、75H是“SJMP 75H”的机器语言代码。

你的C语言学得很好,再学其他语言,就易如反掌了,汇编语言是直接面对硬件的语言,学汇编之前,必须了解你所学单片机的内部硬件结构,各个寄存器的功能,输出输入端口等.
我个人的经历可以供你参考,在学单片机之前,我只是在大学里学过BASIC语言,工作中接触到单片机,以为它很神秘,深入学习后,才发现,单片机是非常简单的,汇编的编程思路和BASIC基本相似,从入门学习单片机到第一个产品开发成功,我只用了1个半月的时间,这都归功于我的BASIC功底.
别人能行的事,你肯定也能行.相信自己,努力

在汇编里一般寻址都带@符号
在一般寻址里,用@R1,@R0的比较多,R2,--7不能用这类指令
其中R1,R0存放的是指针,优点是寻址快,使用方便,但寻址范围最大256
例如我想取空间为RAM200处的物理位置的数据
语句如下:
MOV R0,#200 ;将地址放入R0
MOV A,@R0 ;将200地址的数据取出放入A
MOV A,#12H ;立即数0x12放入A
MOV @R0,A ;将A中的数据放入200地址
此外还有@DPTR指针,这类指针的地址是16位,最大64k主要是针对于外部的RAM空间寻址,指令时MOVX A,@DPTR,
方法类似于上面的介绍

先把基本的指令命令是什么意思弄明白,然后再看些别人的程序,当能比较熟练时,可以开始编写一些小程序进行锻炼。

现在实际应用中很少用到汇编了,c是主流,汇编能看懂就行

  • 怎样才能学好单片机?是要先学C语言,好学汇编语言
    答:1、扎实学好C语言,尤其搞清地址、指针、内存、管理概念和精髓 2、尽管学好汇编,更有利于对单片机原理的理解,并比C语言速度要快,但从目前的发展和单片机成本来看,从实用的角度,学习汇编,并不是一个值得推荐的选择;3、搞清51系列单片机基本原理和基本结构 4、会用KEIL C开发环境 5、知道一些基本的...
  • 如何学好汇编语言?
    答:2. 多动手写程序,哪怕是书中的例子,看完题目就把书合上,先写一遍,然后和书中的对比一下。每章后面的题更要弄懂,因为接下来的几章中还会碰到这个题的延伸部分。3. 不会就问,多与人交流,下面有个王爽汇编的论坛,里面的人都是在学王爽的汇编教材,经常拿出自己的程序在论坛里和人交流。
  • 学习汇编语言需要如何入门?
    答:汇编是执行效率最高的语言了 但是也非常的依赖于硬件,已经基本功能多用中断调用来实现,所以也需要了解 比如寄存器,可以有什么运算,一般做法 其实最简单,就是看实现什么功能是怎么实现的,你就可以很快的投入应用 这样你很快就是高手,学会稍微的变化还是比较容易的,最难就是记忆那些特殊的处理方法 而...
  • 要学习汇编语言要用什么软件?
    答:1,上位机汇编(即PC机汇编);可以采纳"烛秋"网友的回答。2,如果是学习单片机汇编,你可以使用一个很古老的软件,WAVE汇编软件。我就是从这个软件开始学的单片机。推荐你用Keil,单片机汇编是底层语言,电子专业的起步必经之路(其实也可以跳过),学起来之后,就回到C语言的平台上了,只有各别特殊的地方...
  • 单片机,怎么学?
    答:个人经验,仅供参考:学习单片机之前,必须要掌握一基本的知识,否则只是学着玩,达不到实用阶段。要掌握的知识是初步的数学 电学物理 英语基础,在此基础上入手,可以轻松很多,单片机最好是从汇编语言学起,这样才能了解单片机的工作原理。汇编语言C语言都是人类语言的扩展 当你入门后,会发现单片机很容易...
  • 51单片机汇编语言学习软件
    答:如果单纯只是想在普通计算机上学习汇编语言的话,那么用Turbo ASM集成开发环境不错。或者微软的MASM环境。但我记得这些都得在DOS方式下运行。还有一个叫做EMU8086的软件,对学习汇编有巨大的帮助。找找看。如果是想用51的汇编语言的话,可能需要支持51的仿真环境才行。
  • 51单片机是什么?如何学习它的编程?都用在哪些方面
    答:单片机学习的4个阶段 一、整体了解 要知道 单片机是什么?单片机有何用?如何系统学习单片机?单片机系统设计的流程是怎样的,需要掌握哪些辅助软件?了解这些之后,我们的学习就有了目标和方向。二、揭秘 单片机很难学,是因为其内部结构、编程语言抽象,且实际应用中与其他电子技术和元器件知识相互关联,需...
  • 51单片机汇编语言基础书籍: 谁有推荐关于学习51单片机汇编语言基础...
    答:《MCS-51/96系列单片机原理及应用》,这个主要是针对汇编的,但是摸索透了之后也要学着接触C。还有,如果想真正学好单片机,光看书是肯定不行的,在网上买一块开发板,照着实验过一遍,保准你不说精通也学成高手了。
  • 单片机的汇编语言怎么写?
    答:假设您使用的是8051单片机,下面是一种可能的汇编语言代码实现,将ROM 2000H单元中的内容传送到内部RAM 20H单元中:cssCopy codeMOV DPTR,#2000H ; 将ROM地址2000H的内容存储到DPTR寄存器中MOV A,@DPTR ; 将DPTR寄存器中地址对应的ROM中的值传送到累加器A中MOV @20H,A ; 将累加器A中的值传送到...
  • 如何学习汇编语言和反汇编相关问题
    答:这只有厂家的资料中才有的。学汇编能做什么,起码可做很多只学C语言做不到的事,比如加,解密。比如在前期的3Q大战中要有话语权,要真知事情的真象,这只有熟知熟用汇编的人才可办到。我的观点,你就是只想做程序员那只会C都要还远远的不够,更不要谈你想怎么真正的开发,应用设计计算机了,因这...