ARM汇编基础(1)--ADS1.2安装与第一个ARM汇编程序

前言

最近的工作是与逆向相关, 用到ARM汇编, 以前在大学时学过x86汇编和ARM开发, 自我感觉当时学的还挺好, 很久没用也生疏了. 正好趁着这个机会也复习一下ARM汇编.

关于ARM的介绍和理论知识,此处就不再赘述. 进入正题:

安装ADS1.2

安装过程很简单, 没什么技术含量. 但是, win7可能会碰到卡在100%的问题, 网上有很多解决的办法, 但好像都不管用. 我用XP的虚拟机装的ADS1.2, 在XP系统上安装很顺利.

第一个ARM汇编程序

新建一个工程, 然后再按照一下步骤设置, 关于设置参照一下链接即可

http://blog.csdn.net/calvinlee1984/article/details/6898850

再新建一个普通文件命名为test.s, 写入一下代码,

 1 addr equ 0x80000100
 2     area text,code,readonly
 3     entry
 4     code32
 5 start ldr r0, =addr
 6     mov r1, #10
 7     mov r2, #20
 8     add r1, r1, r2
 9     str r1, [r0]
10     b start
11 end

功能:  实现了10 + 20 , 并将结果存入到0x80000100地址空间内.

完成之后将此源文件添加到工程里面, 先make一下,看有没有错误之类,接着, 再设置断点, 启动调试器adx

可以调出内存和寄存器视图, 一步步跟踪寄存器和内存的变化.

时间: 2024-10-11 10:52:11

ARM汇编基础(1)--ADS1.2安装与第一个ARM汇编程序的相关文章

ARM汇编基础(iOS逆向)

1. ARM汇编基础 在逆向一个功能的时候,往往需要分析大量的汇编代码,在iOS逆向中,ARM汇编是必须掌握的语言,本文总结了ARM汇编的基础知识,如果你想了解更多,请参考狗神的小黄书<iOS逆向逆向工程>或ARM官方手册. 1.1 寄存器,内存和栈 在ARM汇编里,操作对象是寄存器,内存和栈 ARM的栈遵循先进后出,是满递减的,向下增长,也就是开口向下,新的变量被存到栈底的位置;越靠近栈底,内存地址越小 一个名为stackPointer的寄存器保存栈的栈底地址,成为栈地址. 可以把一个变量给

ARM汇编基础

ARM是基于RISC指令架构下的处理器,现在有ARM#,ARM-Cortex-M#,ARM-Cortex-R#,ARM-Cortex-A#很多版本.学习处理器,还是从最简单的入手,就像学习x86汇编,先学习8086一样. 1.ARM汇编分类 标准汇编:ARM公司标准的汇编环境,只有ARM编译器才可以使用,如ADS集成开发环境.GNU汇编:Linux下的GNU交叉工具链中的汇编环境,我们一般选用这种模式. 2.ARM七种工作模式 (1)用户模式(USR):正常程序执行模式,不能直接切换到其他模式(

ARM汇编基础--几个简单实例

实例1: 求1+2+3+......+100的和, 并将结果存入0x80000100地址空间中. 1 area text, code, readonly 2 entry 3 code32 4 start 5 mov r1, #0 6 mov r2, #100 7 loop 8 add r3, r3, r1 ;累加 9 add r1, r1, #1 ;自增 10 cmp r1, r2 11 ble loop 12 ldr r2, =0x80000100 13 str r3, [r2] ;保存结果

python基础(2):python的安装、第一个python程序

1. 第一个python程序 1.1 python的安装 自己百度,这是自学最基本的,安装一路确定即可,记得path下打钩. 1.2 python的编写 python程序有两种编写方式: 1.进入cmd控制台,输入python进入编辑模式.这时候我们可以直接编写python程序 2.也可以在.py文件中编写python代码.通过python命令来执行python代码 注意:python2默认的编码是ASCII码编码,处理不了中文,需要替换成utf-8编码.python3默认的编码为unicode

ARM汇编指令汇总

1.ARM汇编的格式:    在ARM汇编里,有些字符是用来标记行号的,这些字符要求顶格写:有些伪码是需要成对出现的,例如ENTRY和END,就需要对齐出现,也就是说他们要么都顶格,要么都空相等的空,否则编译器将报错.常量定义需要顶格书写,不然,编译器同样会报错.    2.字符串变量的值是一系列的字符,并且使用双引号作为分界符,如果要在字符串中使用双引号,则必须连续使用两个双引号.    3.在使用LDR时,当格式是LDR r0,=0x022248,则第二个参数表示地址,即0x022248,同

如何实现对ARM汇编指令的调试?

学习ARM汇编语言时,少不了对ARM汇编指令的调试.作为支持多语言的调试器,gdb自然是较好的选择.调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控.为了在x86平台上执行ARM指令,可以使用qemu模拟器执行ARM汇编指令,具体的调试方法,一起来看看吧. 一.准备ARM汇编程序 首先,我们构造一段简单的ARM汇编程序作为测试代码main.s. .globl _start _start: mov R0,#0 swi 0x00900001 以上汇编指

ARM汇编指令特点

根据朱有鹏老师课程笔记整理而来: (汇编)指令是CPU机器指令的助记符,经过编译后会得到一串1 0组成的机器码,由CPU读取执行. (汇编)伪指令本质上不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码. 两种不同风格的ARM指令 ARM官方的ARM汇编风格:指令一般用大写.Windows中IDE开发环境(如ADS.MDK等)常用.如: LDR R0, [R1] GNU风格的ARM汇编:指令一般用小写字母.linux中常用.如:

嵌入式Linux ARM汇编(六)——GNU ARM汇编编程

嵌入式Linux ARM汇编(六)--GNU ARM汇编编程 不同的汇编器对汇编语言的语法要求不一样.目前常用的ARM汇编环境有以下两种: A.ARM ASM:ARM公司的汇编器,适合在Windows平台下使用 B.GNU ARM ASM:GNU交叉编译工具链中的汇编器,适合于Linux开发平台. GNU汇编器是GNU工具集的一部分,用于将汇编语言文件转化为二进制obj文件.GNU汇编器针对的是多种处理器架构,这意味着GNU汇编器的语法不同于ARM工具链的汇编器. 一.GUN ARM汇编指令格式

arm汇编--ubuntu12.04 安装arm-linux交叉编译环境

1. 安装标准的C开发环境,由于Ubuntu安装默认是不安装的,所以需要先安装一下:sudo apt-get install gcc g++ libgcc1 libg++ make gdb 2.从ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain/下载最新版本的交叉编译器,我下载的是cross-3.2.tar.bz2,解压到Downloan目录,会生成home/Downloads/usr/local/arm/,然后sudo cp -r arm /u