在大学的时候,汇编就是学的很烂.一是对汇编这门语言没概念,二是那些指令集很难记清楚,用的机会也少,自然学的不好.但是现在觉得相当有必要重头学习一下汇编.部分原因我在上一篇写完设备模型的总结时提到了而.最近在看一本书《ARM:Assembly Language Programming》,作者是Peter Knaggs & Stephen Welsh.作者在开头也提出学习汇编的必要性和重要性,借他们的话重新说一下:
他们首先用三个问句来引出为什么要学习汇编:
外科医生为了知道手术刀的用法而需要学习冶金吗?飞行员需要学习热力学理论来理解飞机引擎是如何工作的?报社的记者要学习电子学来理解照相机如何工作的?答案当然是“NO”,那么为什么要让学生学习汇编语言和计算机结构呢?
第一就是教育和培训不是一码事,大学就应该学大学里该教的内容,当然学生也得好好学.
第二是汇编语言是计算机体系结构和计算机软件的基础
第三:汇编可以帮助我们更好的理解数据类型,指针,堆栈、函数调用、递归调用以及参数传递,汇编可以更直接的访问IO和设备,帮助理解设备驱动等等.
总之汇编会告诉我们计算机系统内部正在发生什么
而按照目前我个人的体会是:
学习汇编可以让我更好的写C,学习汇编可以让我更好的理解loader,学习汇编可以让我更好的理解进程和内存管理,虚拟存储器和存储器映射等知识.总之,好处多多.目前汇编成了我的一个瓶颈,那搞定它可以让我上一个台阶.
接下来学习汇编的环境为:操作系统为ubuntu,编译器是arm-linux-gcc,平台是s3c2440(ARM920).
ARM汇编的指令集就那些,但是windows下的arm汇编和linux的arm汇编有细微区别.windows下是用ADS codewarrir等环境来开发,编译器是armasm,而linux用的是gnu arm,更个接近于AT&T风格.偏向于linux下的环境,所以就选择了GNU ARM汇编.
学习GNU ARM汇编的计划和目标:
ARM体系结构
ARM下的指令集
GNU汇编的风格
在s3c2440平台上的验证
当然最终的目的还是为了学习loader和linux.
开始吧,新的学习目标~~~
关键字:汇编 编译器 linux
引用地址:
GNU ARM汇编--(一)开篇
推荐阅读最新更新时间:2024-03-16 14:35
汇编写51单片机之按键检测
二话不说,先上代码: ORG 00H LOOP: JB P3.4,LOOP LCALL DELAY JB P3.4,LOOP LOOP1:JB P3.4,LOOP JB P1.0,TC1 SETB P1.0 JMP LOOP TC1: CLR P1.0 JMP LOOP DELAY: MOV R7,#50 D1: MOV R6,#50 D2: DJNZ R6,D2 DJNZ R7,D1 RET END 我就不说什么数码管的静态显示,动态显示了,会点LED了,数码管就是比较复杂的点LED。所以现在来说检测io口的状态。我的按键是P3.4,平常位高电平,按下即为低电平。实现:按键按一下灯的状态就变为相反状态 ORG 00H L
[单片机]
单片机汇编实验五-2:单片机与PC机串行通信实验
实验要求:AT89S52串行通信口工作在方式1,8位UART方式,允许接收,9600bps。在PC机上运行串口调试软件。编程实现:AT89S52内部定时器1,按方式1工作,每1秒钟内部RAM30H单元内容加1,并通过串行通信口送PC机显示。 //This is the fifth_2 program of homework //This is made by WQ Data:2013/3/4/ ORG 0000H AJMP MAIN ORG 0023H //0023H 串口中断程序的入口地址 AJMP Transfer ORG 000BH //000BH 计时器程序T0
[单片机]
六 linux UART串口驱动代分析
1、对UART驱动添加设备信息 对于2440的UART,内核已经对其完整的配置不需要做写入任何的代码, 这里要说明的是,在学习的裸机的时候,我们知道,UART相应的引脚可以配置称为红外IR,这里串口2就被配置成了红外驱动。 对于平台设备,首先要说明的应该是s3c2410_uartcfg结构体,该结构体定义在,Serial_s3c.h(includelinux)文件中 structs3c2410_uartcfg {undefined unsigned char hwport; /* 硬件端口编号比如UART0 UART1 等等*/ unsigned char unused; //
[单片机]
OK6410汇编程序练习
尝试使用一下6410的汇编,发现跟当年的51差不多,一步一步的学习 ;************************************************************************************************************* ;* 文件名: ok6410.s ;* 功能: S3C6410 汇编 ;* 作者: cp1300@139.com ;* 创建时间: 2013年1月4日21:27 ;* 最后修改时间:2013年1月4日 ;* 详细: ;****************************************
[单片机]
第005课 linux进阶命令(文件查找,文件解压操作详解)
001节_Linux进阶命令__find命令 我们在Windows中搜索文件,一般查找文件需要传入两个条件: 1)在那些目录中查找; 2)查找的内容; 在Linux中,查找文件的也需要这两个条件,不同于Windows使用搜索框查找,Linux中使用 find 命令查找文件。 find 命令: *目的:查找符合条件的文件 *格式: find 目录名 选项 查找条件 举例1: find /work/001_linux_basic/dira/ -name test1.txt 说明: a)/work/001_linux_basic/dira/指明了查找的路径 b)-name表明以名字来查找文件
[单片机]
linux2.6.32.2 mini2440平台移植-- 激活 RTC 驱动
RTC的英文全称是Real-Time Clock,翻译过来是实时时钟芯片. RTC是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲,RTC经过8254电路的变频产生一个频率较低一点的OS(系统)时钟TSC,系统时钟每一个cpu周期加一,每次系统时钟在系统初起时通过RTC初始化。8254本身工作也需要有自己的驱动时钟(PIT)。 1.2.1 在初始化文件中加入 RTC 设备结构 Linux-2.6.32.2 内核对 2440 的 RTC 驱动已经十分完善了,但并未在 mach-mini2440.c 中的设备集中加入它,因此并没有被激活,加入 RTC 结构体如下红色字体: ;在 mini2440 设备集中加入 RTC
[单片机]
Linux头文件中s3c2410 GPIO的宏
一、GPIO寄存器定义 1.#define GPCON(x) __REG2(0x56000000, (x) * 0x10) 这句是定义2410的GPIO的控制寄存器,注意:__REG2的参数是寄存器的物理地址,这个物理地址经_REG2宏转换为虚拟地址,对照2410的手册可以得到一下对应关系: GPCON(1) ------ PORT A 0x56000000 GPCON(2) ------ PORT B 0x56000010 GPCON(3) ------ PORT C 0x56000020 GPCON(8) ------ PORT H 0x56000070 2.#define GPDAT(x) __REG2(0x56
[单片机]
用汇编实现I2CBUS总线协议
摘要: 本文简要介绍了I2C串行总线结构和特点,并结合其在单片机(GMS97C2051)上的应用,以24LC01BEEPROM为例,给出了用汇编语言实现该协议的程序。
关键词: I2C总线 单片机
I2C总线
PHILIPS公司早在十几年前就推出了I2C串行总线,它具备多主机系统所需的包括裁决和高低速设备同步等功能高性能串行总线。
I2C总线硬件结构
I2C串行总线有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线睥设备的串行数据SDA都接到总线的SDA线,各设备的时钟线SCL接到总线的SCL。典型的I2C总线结构如图1。
为了避免总线信号的混乱,
[应用]