机器码和伪指令

Mov  立即数受限的原因:因为根据下图,mov的机器指令中立即数最多能有12位,其中有四位代表移位,所以立即数最多能有8位。

伪指令有两种:操作类伪指令和定义类伪指令

定义类伪指令

Global 定义一个全局的变量

Data 定义数据段

Ascii 定义一个字符串

Byte 定义一个字节数据

Word 定义一个字数据

Equ  定义一个宏

例子:

操作类伪指令(实际用其他指令替代)

Ldr  伪指令:作用是把一个立即数存入寄存器中,和访存ldr指令重名, 替代的时候能用mov或者mvn实现的话,就优先用这两个指令,不能用的时候用先将数据存入内存,然后用真正的ldr访存。(别问我为什么对pc基址变址立即数为啥是0,我也不懂,我认为按照正常逻辑应该是8啊)

Nop 伪指令:空指令,其实用的是mov。

例子:

来自为知笔记(Wiz)

时间: 2024-11-05 04:12:21

机器码和伪指令的相关文章

ARM汇编伪指令

伪指令的意义 伪指令不是指令,伪指令和指令的根本区别是经过编译后会不会生成机器码. 伪指令的意义在于指导编译过程. 伪指令是和具体的编译器相关的,我们使用gnu工具链,因此学习gnu环境下的汇编伪指令. gnu汇编中的一些符号 @ 用来做注释.可以在行首也可以在代码后面同一行直接跟,和C语言中//类似 # 做注释,一般放在行首,表示这一行都是注释而不是代码. :以冒号结尾的是标号 . 点号在gnu汇编中表示当前指令的地址 # 立即数前面要加#或$,表示这是个立即数 常用gnu伪指令 .globa

3.Arm机器码

首先汇编程序转化为机器码,才能在机器内运行. 首先我们对上面的裸机的代码中生的.elf文件进行反汇编: start.elf: file format elf32-littlearm ? Disassembly of section .text: ? 50008000 <_start>: .text .global _start _start: [email protected]和str的操作 ????mov r0,#0xff 50008000:????e3a000ff ????mov????r

汇编语言(王爽) 第1章基础知识

1.1 机器语言 机器语言就是机器指令的集合.机器指令是啥呢?就是一列二进制的数据,计算机把它转成高低电平,使计算机的其他器件驱动并运算.(计算机如何使用2进制语言?) 早期程序都是用机器语言写的,但是有个问题就是太麻烦,数据信息太长,写错一个0或1就会来BUG了. 这种机器语言根本不是人写的,注定会被淘汰. 1.2 汇编语言 这个时候,汇编语言就挺身而出. 汇编语言就是机器语言的便于记忆的格式把 一个指令1000100010001000 表示把寄存器A1的内容弄到寄存器A2上.如下 操作介绍:

arm汇编

(汇编)指令是CPU机器指令的助记符,经过编译后会得到一串10组成的机器码,可以由CPU读取执行.(汇编)伪指令本质上不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码. ARM官方的ARM汇编风格:指令一般用大写.Windows中IDE开发环境(如ADS.MDK等)常用.如: LDR R0, [R1] GNU风格的ARM汇编:指令一般用小写字母.linux中常用.如:ldr r0, [r1] ARM采用RISC架构,CPU本身

汇编语言学习笔记2

1.严格来说汇编语是由以下三部分组成: 1.汇编指令:助记符,即用英语字符替换机器码 2.伪指令:由编译器编译执行,即Mov等控制指令 3.其它符号:由编译器编译执行,计算机是不能识别"+","-"等符号,所以需要编译器编译成机器语言 2.汇编语言的核心是汇编指令,他决定汇编语言的特性 3.我们都知道CPU是计算器的核心部分,想让CPU工作,必须向他提供指令和数据,指令即告诉计算机让它做什么,数据是告诉计算机,让它拿哪些数据做 4.指令和数据在存储器中存放,也就是平

《汇编语言》第一节学习心得

这学期初识<汇编语言>,只知道有这么一节课却不曾知道讲述的是什么.尽管是选修课,但由于学分需要也有自身的好奇使得自己坚持选择了这门课.仅学习完第一章后列出学习心得. ①机器语言是机器指令的结合,机器指令即一台机器可以正确执行的命令.早起的程序设计均使用机器语言,运用0.1数字编程的程序代码进行指令,但操作内容极为冗长繁琐,1个有用的程序最少也要有几十行机器码,而一旦有一个数字输入错误,程序就会运行有所错误,而检查过程也会非常困难,极为的不方便. ②在机器语言不方便的情况下,汇编语言由此诞生,主

汇编语言基础知识总结

这学期选修了汇编语言课程,通过大一一年对于C语言以及C++的学习,已经认识到了计算机语言给人们生活带来了许多便捷,之前对于汇编语言的印象是与计算机病毒有关.个人认为作为计科系的学生,不能只掌握高级程序设计语言,而忽略了计算机底层知识和低级语言.第一节课介绍了汇编语言的基础知识,我对这一部分进行了梳理和总结. ·汇编语言的特点 汇编语言的主体是汇编指令.汇编指令是机器指令的助记符,从目标代码的长度和程序运行时间的角度上看,汇编语言程序与机器语言程序是等效的.不同的CPU有不同的汇编指令,汇编语言不

Part3_lesson3---ARM伪指令学习

1.ARM机器码 对elf格式的文件进行反汇编可得到相应汇编文件的机器码: arm-linux-objdump -D -S start.elf 机器码的解析,可以参考文件ARM Architecture Reference Manual的The ARM Instruction Set章节. 2.定义类伪指令 伪指令前面加上"."号是GNU的一个特点!! .global:标明一个全局的符号. .data:标明接下来的数据会存放到数据段里面去.即,这是一个数据段. 那么在数据段当中能够定义

12.ARM伪指令操作

12.ARM伪指令操作 首先ARM伪指令包括: ARM机器码 定义类伪指令 操作类伪指令 ? ARM机器码: 其实任何一种处理器可以运行的叫机器码,机器码是从汇编程序通过汇编器转换来的.接下来看看机器码的信息.流程:图1-1. 图1-1 在上一节里,建立好了一个简单的汇编工程,在start.S只有三行代码:图1-2: 图1-2 接下来对产生的elf文件来进行反汇编,命令是: arm-linux-objdump -D -S gboot.elf >dump,将反汇编的代码存到dump文件,dump文