本人小白一枚,刚入职场,职业嵌入式开发。在学校学习Linux操作系统与ARM编程的一些基础知识。也不是什么985,211名校毕业,只是一个普通的本科生,在生活中为了那么一丝生存而努力着。
由于工作需要,以后涉及到Linux系统中的底层驱动或者uboot启动文件,所以想把以前略懂的汇编再捡起来,重新学习。这也是小吴第一次写博客,有不好地方,还望多多包涵,相信写着写着,就会越来越好了。
本系列博客是基于王爽著的汇编语言(第3版)中,对重要内容提取,顺手做笔记而来。有需要的可以一起学习,有问题大家一起探讨,谢谢。下面开始我们的第一章。以后每天晚上不定时更新,如果没有更新,以后会慢慢补回来的。
第一章 基础知识
1.1机器语言
机器语言是机器指令的集合。机器指令展开来讲就是一台机器可以正确执行的命令。
1.2汇编语言的产生
汇编语言是为了解决机器语言带来的麻烦而产生。汇编语言的主体是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上。
例如:机器指令1000100111011000表示把寄存器BX的内容送到AX中。汇编指令则写成movax,bx。
操作:寄存器BX的内容送到AX中
机器指令:1000100111011000
汇编指令:mov ax,bx
(寄存器,简单来讲是CPU中可以存储数据的器件,一个CPU中有多个寄存器。AX、BX只是其中的寄存器的代号。)
1.3汇编语言的组成
汇编语言发展至今,有以下3类指令组成。
(1) 汇编指令:机器码的助记符,有对应的机器码。
(2) 伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
(3) 其他符号:如+、*、-、/等,由编译器识别,没有对应的机器码。
汇编语言的核心是汇编指令,它决定了汇编语言的特性。
1.4存储器
CPU是计算机的核心部件,它控制整个计算机的运作并进行运算。要想让一个CPU工作,就必须向它提供指令和数据。指令和数据在存储器中存放,也就是我们平时说的内存。
要灵活的运用汇编语言,我们首先要了解CPU是如何从内存中读取信息,以及向内存中写入信息的。
1.5指令和数据
指令和数据是应用上的概念。在内存或者磁盘中,指令和数据没有任何区别,都是二进制信息。CPU在工作的时候,会把信息看做指令或者数据。
例如,内存中的二进制信息1000100111011000.,算机可以看做大小为89D8H的数据来处理,也可以将其看作指令mov ax,bx来执行。
1000100111011000 89D8H(数据)
1000100111011000 mov ax,bx(程序)
不早了,今天先到这里。明天继续,虽然今天的东西挺基础的。