ASM编程.pptVIP

  • 15
  • 0
  • 约5.14千字
  • 约 27页
  • 2017-12-26 发布于河北
  • 举报
ASM编程

汇编语言(ASM)编程 清华大学电子工程系 2004年3月 内容提要 汇编程序的一般结构 与C程序比较 开发工具的安装和使用 TM, PD30SIM, KD30 本次实验 参考文档 Document 6020e_ASM program 汇编编程手册 6020e_software manual 指令手册 各开发软件的Help中的Manual 教材第三章 指令系统 汇编程序的一般结构 C程序结构的一个简单例子 #include “stdio.h” void main() { int a, b, i; a=3; b=0; for (i=0; i5; i++) b + = a; …… } 汇编程序的一般结构 汇编程序结构(1) - Section .include sfr62s.inc .section memory, data ;数据段 result: .blkb 1 temp: .blkb 1 .section prog, code ;代码段 reset: mov.b MyAge, temp mov.b temp, result …… 汇编程序的一般结构 汇编程序结构(2) …… .section cons_var, romdata ; ROM 数据区 MyAge: .BYTE 26 .section inter, romdata .org Vvector+ (8*4) .lword reset .end M30624FGFP Memory Map 汇编程序需要多做一些工作 需要定义每个Section的起始地址; 需要指定基址寻址方式的首地址和堆栈的首地址; 需要设置中断向量表; 需要在使用RAM区之前清零; 其他设置:根据使用的外设,设定相关的寄存器和I/O控制寄存器。 附加工作1 - Section起始地址 需要定义每个Section的起始地址 VramTOP .equ 000400H VprogTOP .equ 0F0000H Vintbase .equ 0FA000H Vvector .equ 0FFFDCH .section memory, data .org VramTOP …… 在实际设计中,这些值根据所选的MCU片子来定 附加工作2 - 基址寻址设置 基址寻址方式 SB_base .equ 380H ;基址 .section memory, data result: .blkb 1 .section prog,code .org VprogTOP .sb SB_base ;寄存器地址声明 .sbsym result ;变量声明其寻址方式 ldc #SB_base, SB ;对基址寄存器赋值 …… 附加工作2 -堆栈设置 两种堆栈:堆栈指针ISP和USP 用何种堆栈,由堆栈指针选择标志位(U标志)选取。 U = 0 选取中断堆栈指针 ISP U = 1 选取用户堆栈指针 USP SP指针位置如何设定: 栈顶指针 Push : SP = SP – 1 Pop : SP = SP + 1 相关设定代码: VIstack .equ 2C00H ldc #VIstack, ISP ;赋值 附加工作3-设置中断向量表 可变中断向量表 Vintbase .equ 0FA000H LDINTB #USER_vector_table ;设置寄存器 INTB .section val_vect,romdata .org Vintbase ; 指定中断向量 表起始位置 USER_vector_table: .lword dummy ; No0 Break Interrupt .lword dummy

文档评论(0)

1亿VIP精品文档

相关文档