【单片机】汇编指令入门学习|单片机启动代码汇编

本文详细介绍了嵌入式硬件中的汇编指令,包括MSP430和ARM指令集的基础知识。内容涵盖了汇编指令入门、MSP430的伪指令、IAR下的汇编和启动代码,以及ARM汇编指令集和寻址方式。通过实例解析了各种指令的功能和应用场景,是学习嵌入式硬件和汇编编程的实用参考资料。
摘要由CSDN通过智能技术生成

 目录

汇编指令入门学习

【汇编指令】MSP430汇编指令 

IAR下的汇编/单片机启动代码汇编

ARM 汇编&ARM 指令集 学习笔记         


汇编指令入门学习

  在进行汇编程序设计时,MSP430的指令系统是程序的主体,但为了方便程序编制,还定义了一些指令,这些指令不参与和影响程序的执行,也不在计算机中运行,这类指令称为伪指令。

一般汇编器伪指令能帮助用户完成以下事情:

·将代码和数据汇编到规定的段中

·在存储器中用未初始化的变量保留空间

·控制汇编后列表文件的格式

·初始化存储器

·汇编条件块

·定义全局变量

·规定汇编器可以从中获得宏的库

·产生符号化的调试信息

模块控制伪指令:

NAME,PROGRAM—程序模块的开始

MODULE,LIBRARY—库模块的开始

ENDMOD—当前汇编模块的结束

END—汇编文件的结束

符号控制伪指令:EXTERN(IMPORT)-引入外部符号PUBLIC(EXPORT)-输出符号

段控制伪指令:ASEG—绝对段的开始RSEG—相对段的开始STACK—定义堆栈 段COMMON—定义公共段ORG—定位指针ALIGN—校准PC
EVEN—PC对准偶地址

数值分配伪指令:

SET(ASSIGN,VAR)—赋临时值

EQU(=)—赋永久值,当前模块内有效

DEFINE—定义文件内有效的值

数据定义与分配伪指令::

DB—定义字节(8bit)

DW—定义字(16bit)

DL—定义32bit整数

DF—定义32bit float

DS n—定义n个连续的字节

DC8 DB 生成(8位)常量/字符串

DC16 DW 生成(16位)常量

DC32 DL 生成32位常量

DC64 生成32位常量

DF32 DF 生成32位浮点常量

DF64 生成64位浮点常量

.double 生成48位TI格式的 浮点常量

.float 生成32位TI格式的 浮点常量

DS8 DS 分配8位整数空间DS16 DS 2 分配16位整数空间DS32 DS 4 分配32位整数空间DS64 DS 8 分配64位整数空间

 MSP430汇编指令集

MSP430汇编指令集 - 百度文库

百度文库

MCS-51指令详解

http://www.51c51.com/web/zhilin.htm

 ;说明:为了使MCS-51单片机初学者快速入门,迅速掌握单片机指令含意、操作码、操作数及;对应地址,汇编语言怎样编写等,现按指令操作码按顺序编写,可对照本公司编写的<<MCS-51八位高档单片计算机及其应用>>一书第145页指令手册查看,更详细资料请阅 第四章 MCS-51指令系统" 及第124页指令系统摘要。并在仿真器上装入;JJM.HEX文件,并对有关单元置数,用单步(F8)验证其正确性及其运行结果。

        ORG     0000H

        NOP                 ;空操作指令

        AJMP    L0003   ;绝对转移指令

L0003:  LJMP    L0006   ;长调用指令

L0006:  RR      A       ;累加器A内容右移 (先置A为88H)

      INC     A           ; 累加器A 内容加1

       INC     01H     ;直接地址(字节01H)内容加1

       INC     @R0     ; R0的内容 (为地址) 的内容即间接RAM加1

                        ;(设R0=02H,02H=03H,单步执行后02H=04H)

       INC     @R1     ; R1的内容 (为地址) 的内容即间接RAM加1

                         ;(设R1=02H,02H=03H,单步执行后02H=04H)

       INC     R0      ; R0的内容加1 (设R0为00H,单步执行后查R0内容为多少)

       INC     R1      ; R1的内容加1(设R1为01H,单步执行后查R1内容为多少)

        INC     R2      ; R2的内容加1 (设R2为02H,单步执行后查R2内容为多少)

       INC     R3      ; R3的内容加1(设R3为03H,单步执行后查R3内容为多少)

        INC     R4      ; R4的内容加1(设R4为04H,单步执行后查R4内容为多少)

        INC     R5      ; R5的内容加1(设R5为05H,单步执行后查R5内容为多少)

        INC     R6      ; R6的内容加1(设R6为06H,单步执行后查R6内容为多少)

        INC     R7      ; R7的内容加1(设R7为07H,单步执行后查R7内容为多少)

        JBC     20H,L0017; 如果位(如20H,即24H的0位)为1,则转移并清0该位

L0017:         ACALL   S0019   ;绝对调用

S0019:  LCALL   S001C   ;长调用

S001C:  RRC     A       ;累加器A的内容带进位位右移(设A=11H,C=0

                         ;单步执行后查A和C内容为多少)

        DEC     A       ;A的内容减1

        DEC     01H     ;直接地址(01H)内容减1

        DEC     @R0     ;R0间址减1,即R0的内容为地址,该地址的内容减1

        DEC     @R1     ; R1间址减1

        DEC     R0      ; R0内容减1

        DEC     R1      ; R1内容减1

        DEC     R2      ; R2内容减1

        DEC     R3      ; R3内容减1

        DEC     R4      ; R4内容减1

        DEC     R5      ; R5内容减1

        DEC     R6      ; R6内容减1

        DEC     R7      ; R7内容减1

        JB      20H,L002D;如果位(20H,即24H的0位)为1则转移

L002D:  AJMP    L0017    ;绝对转移

        RET                 ;子程序返回指令

        RL      A       ;A左移

        ADD     A,#01H  ;A的内容与立即数(01H)相加

        ADD     A,01H   ; A的内容与直接地址 (01H内容)相加

        ADD     A,@R0   ; A的内容与寄存器R0的间址内容相加

        ADD     A,@R1   ; A的内容与寄存器R1的间址内容相加

        ADD     A,R0        ; A的内容与寄存器R0的内容相加

        ADD     A,R1        ; A的内容与寄存器R1的内容相加

        ADD     A,R2        ; A的内容与寄存器R2的内容相加

        ADD     A,R3        ; A的内容与寄存器R3的内容相加

        ADD     A,R4        ; A的内容与寄存器R4的内容相加

        ADD     A,R5        ; A的内容与寄存器R5的内容相加

        ADD     A,R6        ; A的内容与寄存器R6的内容相加

        ADD     A,R7        ; A的内容与寄存器R7的内容相加

        JNB     30H,L0041   ;直接位(30H)为0相对转移

L0041:  ACALL   S0100   ;绝对调用

        RETI                ;中断返回指令

        RLC     A       ;带进位位左移

        ADDC    A,#02H  ;A带进位位与立即数(#02H)相加

        ADDC    A,02H   ; A带进位位与直接地扯(02H内容)相加

        ADDC    A,@R0   ; A带进位位与R0间扯内容相加

        ADDC    A,@R1   ; A带进位位与R1间扯内容相加

        ADDC    A,R0        ; A带进位位与R0内容相加

        ADDC    A,R1        ; A带进位位与R1内容相加

        ADDC    A,R2        ; A带进位位与R2内容相加

        ADDC    A,R3        ; A带进位位与R3内容相加

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值