ARM汇编中用宏和子程序实现1+2+。。。+N

子程序:

   AREA MAIN, CODE, READONLY
    ENTRY
    CODE32
start
    MOV     R2,#0
    MOV     R3,#0           ;R3存放累加和,初始值为0
    LDR     R1,=n
    LDR     R1,[R1]         ;将n的值存入R1   
    BL      add             ;调用add子程序
stop
    MOV     R0,#0x18
    LDR     R1,=0x20026
    SWI     0x123456
add
    MOV     R2,R1      
    ADD     R3,R3,R2
    SUBS    R1,R1,#1
    BNE     add
    LDR     R1,=dst
    STR     R3,[R1]         ;累加和写入dst单元
    MOV     PC,LR           ;子程序返回
    
     AREA  NUM,DATA,READWRITE
n    DCD     100 
dst  DCD     0
     END
宏指令:

  方法一:

    MACRO     
        ADD_START                ;宏名
        LCLA sum                 ;定义局部变量
        LCLA n
sum SETA 0                       ;给变量赋值
n   SETA 100 
     MOV     R1,#n
add
     MOV     R2,R1      
     ADD     R3,R3,R2
     SUBS    R1,R1,#1
     BNE     add
     LDR     R1,=sum
     STR     R3,[R1]          ;累加和写入sum单元

     MEND
        
    AREA Example,CODE,READONLY  
    ENTRY
    CODE32                      
start
     MOV     R2,#0
     MOV     R3,#0            ;R3存放累加和,初始值为0     
     ADD_START
over
    END  

方法二:

 MACRO
$lable addrt $a,$b
$lable.add
        ADDS $a,$a,#1
        ADDS $b,$b,$a
        CMP  $a,#100
        BNE  $lable.add
        MOV R2,$b
  MEND
    
    AREA  add, CODE, READONLY  
	ENTRY                                 
	CODE32 
	                               
START    MOV  R0, #1                          
         MOV  R1, #1
        
Hong  addrt R0,R1
         
STOP	
		 MOV  R0, #0X18		
		 LDR  R1, =0X20026
		 SWI  0X123456                                
       END



  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 基本知识 1-1 汇编语言介绍 1-1-1 程序设计语言分类 1-1-2 汇编语言程序设计的意义 1-2 位及字节 1-3 二进制数 1-3-1 数字系统 1-3-2 补码 1-3-3 BCD码 1-4 十六进制表示法 1-5 ASCII码 1-6 个人计算机组成 1-6-1 处理器 1-6-2 内部存储器 1-6-3 段与地址 1-6-4 寄存器 1-7 硬件中断 课后习题 第2章 程序加载并执行 2-1 操作系统的组成 2-2 BIOS启动程序 2-3 系统加载程序 2-4 堆栈 课后习题 第3章 NASM汇编语言基础 3-1 源程序行格式 3-2 伪指令 3-2-1 定义含有初值的数据 3-2-2 定义不含初值的数据 3-2-3 INCBIN伪指令 3-2-4 EQU伪指令 3-2-5 TIMES伪指令 3-3 有效地址 3-4 常量 3-4-1 数字常量 3-4-2 字符常量 3-4-3 字符串常量 3-4-4 浮点数常量 3-5 表达式 3-5-1 OR运算符 3-5-2 XOR运算符 3-5-3 AND运算符 3-5-4 移位运算符 3-5-5 加及减运算符 3-5-6 乘及除运算符 3-5-7 单元运算符 3-6 临界表达式 3-7 局部标号 3-8 预处理器 3-8-1 %define指令 3-8-2 %undef指令 3-8-3 %assign指令 3-8-4 多行 3-8-5 条件汇编 3-8-6 预处理循环 3-8-7 文件引用指引 3-8-8 标准 3-8-9 汇编语言指引 3-9 目标文件格式 3-10 NASM汇编程序安装 3-11 范例 课后习题 第4章 一般指令 4-1 源操作数与目的操作数 4-2 MOV传送指令 4-3 XCHG互换指令 4-4 有效地址送寄存器指令LEA 4-5 指针送寄存器指令LDS及LES指令 4-6 压入PUSH及弹出POP指令 4-7 存储寄存器PUSHA及POPA指令 4-8 标志寄存器传送PUSHF及POPF指令 4-9 没有运算的NOP指令 课后习题 第5章 基本输入与输出 5-1 软件中断INT指令 5-2 将一个字符串输出到屏幕 5-3 从键盘输入一个字符 5-4 将一个字符输出到屏幕 5-5 从键盘输入一个字符串 5-6 将一个字输出到屏幕 5-7 显示内存内容 5-8 键盘输入控制 5-8-1 由键盘输入字符 5-8-2 直接由键盘输入或输出字符 5-8-3 直接由键盘输入字符 5-8-4 直接由键盘输入字符 5-8-5 由键盘输入字符串 5-8-6 检查键盘缓冲区 5-8-7 清除键盘缓冲区 5-8-8 从键盘缓冲区读取字符 5-8-9 测试键盘缓冲区是否有字符 5-8-10 传回控制键状态 5-9 屏幕输出控制 5-9-1 显示字符 5-9-2 显示字符串 5-9-3 设定光标位置 5-9-4 向上滚动屏幕 5-10 打印机输出控制 5-10-1 输出字符至打印机 5-10-2 打印一个字符 5-10-3 取得打印机状态 课后习题 第6章 程序流程控制 6-1 标志寄存器 6-2 改变标志的指令 6-3 条件转移指令 6-4 比较两个整数 6-5 无条件转移指令JMP 6-6 循环指令LOOP 6-7 选择结构 6-8 循环结构 课后习题 第7章 算术运算 7-1 定点数与浮点数 7-2 带符号及无符号整数 7-3 加法及减法 7-4 乘法 7-5 除法 7-6 BCD十进制数运算 7-6-1 BCD加法 7-6-2 BCD减法 7-6-3 BCD乘法 7-6-4 BCD除法 7-6-5 BCD应用 7-7 综合例题 课后习题 第8章 8-1 单行 8-1-1 %define指令 8-1-2 %undef指令 8-1-3 %assign指令 8-2 多行 8-2-1 显示字符串 8-2-2 显示字符 8-2-3 读取字符 8-2-4 显示字节 8-2-5 读取字符串 8-2-6 字符串转换为数值 8-2-7 数值转换为字符串 8-2-8 数值输出至屏幕 8-3 条件汇编 8-4 预处理循环 8-5 源程序文件的包含内容 8-6 相关汇总 课后习题 第9章 过程 9-1 过程的定义 9-2 过程里的局部变量 9-3 传值调用 9-4 传址调用 9-5 堆栈传递参数 9-6 内存传递参数 课后习题 第10章 字符串处理 10-1 声明字符串 10-2 字符串长度 10-3 基本字符串指令 10-4 转换指令XLATB 10-5 字符串 课后习题 第11章 位运算 11-1 位基本运算 11-2 位屏蔽 11-3 AND指令 11-4 OR指令 11-5 XOR指令 11-6 NOT指令 11-7 TEST指令 11-8 改变位位置 11-9 左移及右移 11-10 算术左移及算术右移 11-11 循环位移 11-12 位移及循环位移指令总结 11-13 综合例题 课后习题 第12章 文件处理 12-1 输入及输出层次 12-2 输入及输出概念 12-3 标准的文件代号 12-4 建立一个文件代号 12-5 打开一个文件 12-6 关闭一个文件 12-7 从文件或设备读取数据 12-8 数据写入文件或设备 12-9 移动文件指针 12-10 检查并修改文件属性 12-11 建立新文件 12-12 删除文件 12-13 文件改名 12-14 建立或删除子目录 12-15 取得当前目录 12-16 改变当前目录 12-17 取得缺省的磁盘驱动器 12-18 改变缺省的磁盘驱动器 12-19 低级输入及输出 课后习题 第13章 数据结构 13-1 数组声明 13-2 数组查找 13-3 使用XLATB指令转换 13-4 排序 13-5 队列 13-6 堆栈 13-7 链表 课后习题 第14章 浮点数运算 14-1 80x87协处理器的运算 14-2 浮点堆栈 14-3 状态字 14-4 控制字 14-5 数据类型 14-5-1 二进制整数 14-5-2 聚集十进制数 14-5-3 实数 14-5-4 七种数据类型值的范围 14-6 80x87指令集 14-7 范例 课后习题 第15章 连接程序 15-1 建立NASM源程序 15-2 将目标文件连接成.exe文件 15-3 显示DOS的BIOS区域数据 15-4 系统设备数据 15-5 内存容量 课后习题 附录 NASM汇编语言指令

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值