第五章 汇编语言程序设计-格式和实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

更多ppt课件尽在 http://sogouonline.taobao.com
2、符号常数 伪指令.set和.struct可以用来将常数值赋给符号名。注 意:符号常数不能重复定义 例: N .set buffer .set 512 4*N ;定义常数
更多ppt课件尽在 http://sogouonline.taobao.com
旺旺丗你是爱我的天使
http://sogouonline.taobao.com
• 使用.set伪指令将符号常数赋值给寄存器。
例:将符号常数AuxR1赋给寄存器AR1。 AuxR1 .set AR1 MVMM AuxR1, SP
更多ppt课件尽在 http://sogouonline.taobao.com
旺旺丗你是爱我的天使
http://sogouonline.taobao.com
旺旺丗你是爱我的天使
http://sogouonline.taobao.com
1、标号 用作标号的符号在程序中表示地址,与所在程序的位置有 关。在同一个文件中局部使用的标号必须是唯一的。 例: .global label1 NOP ADD B label ;定义label为全局符号
label, B label1 ;分支转移到label1
SPC的值
2.助记符指令区
1.
助记符区
机器指令助记符,一般大写 汇编伪指令和宏命令,以.开始且为小写 ※ 一定不能从第一列开始,否则被认为是语句标号 2. 操作数区 操作数可以是常数、符号或表达式 与指令之间以空格分开 操作数之间以逗号分开 操作数前缀规定:#后操作数为立即数,*后操作数为间 接地址,@后为7位偏移地址。
三、汇编源程序中的符号
• 符号用于wk.baidu.com号、常数和替代字符 • 符号最多200个字符,有字母、数字、$和下划线_
• 符号不能以数字开头,中间不能有空格 • 符号区分大小写(AB、Ab、ab不同) • 符号仅在定义它的汇编程序中有效,除非用.global伪指令
声明为全局符号
更多ppt课件尽在 http://sogouonline.taobao.com
汇编语言程序的编写方法

汇编语言源程序格式 汇编语言中的常数与字符串 汇编源程序中的符号 汇编源程序中的表达式
一、汇编语言源文件格式

(1)助记符指令语法格式
[label][:]
mnemonic [operand list] [;comment]
[标号区][:] 助记符区
XN .set 5
4、替代符号
可将字符串(变量)赋给符号,这时符号名与该变量等效, 成为字符串的别名。替代符号可以被重新定义。 例: .asg “high”, AR2 5、局部标号 是一种特殊的标号,使用的范围和影响是临时性的。局部 标号两种定义方法: (1)用$n来定义,n为0~9的十进制数字。 (2)用name?来定义,name是任何一个合法的符号名。

***** ***** ***** ***** ***** ***** ***** ***** *****
*
example.asm
*
***** ***** ***** ***** ***** ***** ***** ***** ***** .title “example.asm” .mmregs stack .usect “STACK”,10H ; 为堆栈指定空间 .bss a,4 ; 为变量分配9个字的空间 .bss x,4 .bss y,1 .def start .data table: .word 1,2,3,4 ; 变量初始化 .word 8,6,4,2 .text
[;注释区]
;符号SYM1=2 ;将2装入AR1 ;初始化字( 016H ) ;返回
更多ppt课件尽在 http://sogouonline.taobao.com
旺旺丗你是爱我的天使
二、汇编语言中的常数与字符串
http://sogouonline.taobao.com

汇编器支持8种类型常数,每个常数在汇编器内部都使用
2.条件表达式


汇编器支持关系运算符,可用于任何表达式
常用的关系运算符有: = 赋值; = = 等于; != 不等于; ﹥= 大于或等于;﹤=小于或等于;﹥大于;﹤小于
3.表达式的溢出

汇编器会在执行算数操作后,检查上溢和下溢的条件

一旦发现溢出,就发出结果将被截断的警告 汇编器不检查乘法的溢出状态
[标号区][:]
指令
[;注释区]
XN
.set
5
; 符号XN赋值为5
start:
AR0= #XN A =A+ (AR0)<<0
; 将5装入AR0中 ; (AR0)+A赋给A
汇编语句书写规则

语句必须以标号、空格、*号或 ;号开头。 标号可选,如使用,必须在第一列。 各区之间用一个或多个空格分开,Tab等效于空格。 注释可选。从第一列开始用 * 号或 ;号; 从其他列开始,用 ;号。 源程序分行写用\结束前一行,余下部分在下一行继续。
更多ppt课件尽在 http://sogouonline.taobao.com
旺旺丗你是爱我的天使
http://sogouonline.taobao.com
6、字符常数 包括在单引号内,每个字符在内部表示为8位ASCII码。 字符常量与字符串的差别:字符常量代表单个整数值, 字符串由多个字符组成。 例:‘a‟内部表示为61H „C‟内部表示为43H „ ‟内部表示00H 7、字符串 用双引号括起来的一串字符。

助记符指令语法格式: ;符号SYM1=2 ;将2装入AR1 ;初始化字( 016H ) ;返回
[标号区][:] 助记符 [操作数] [;注释区]
SYM1 .set 2 start: STM # SYM1,AR1 .word 016H RET

代数指令语法格式:
[标号区][:] 指令
SYM1 .set 2 start: AR1= #SYM1 .word 016H RET
32位保存,常数不作符号扩展。





二进制整型常数(如011B或011b) 八进制整型常数(如10Q或10q或010) 十进制整型常数(如23) 十六进制整型常数(如78H或78h) 浮点常数(如-3.1e-5) 字符常数(如‘A‟或‘b‟) 字符串(如“sample program”) 汇编-时间常数(如SYM1 .set 2)
stack
.title “example.asm” .mmregs ;定义存储器映射寄存器 .usect “STACK”,10h ; 为堆栈指定空间 .bss a,4 ; 为变量分配9个字的空间
更多ppt课件尽在 http://sogouonline.taobao.com
旺旺丗你是爱我的天使
http://sogouonline.taobao.com
更多ppt课件尽在 http://sogouonline.taobao.com
;寄存器AR2
旺旺丗你是爱我的天使
http://sogouonline.taobao.com
例:$n定义的局部标号 $1 LD ADDRA, A ; $1:将ADDRA装入累加器A .newblock ;取消$1的定义,使之可被再次使用 BC $1, ALT ; $2 ADD ADDRC,A
第五章 TMS320C54x的 汇编语言程序设计
汇编程序语法
TMS320C54x的汇编源程序包含:


汇编语言指令(assembly language instructions) 汇编伪指令(assembler directives) 宏伪指令(macro directives)
注释(comments)。
旺旺丗你是爱我的天使
3.注释区
http://sogouonline.taobao.com


注释开始在第一列,必须用;或*开头
注释开始在其他列,只能用;开头 允许源语句中仅有注释 ;********************************** * exam.asm * ************************************
1.语句标号区

必须从第一列开始 可以长达32个字符


由A-Z、a-z、0-9、_或$组成,不能以数字开头
对大小写敏感 后可跟[:],冒号不作为标号名的一部分


若无标号,语句的第一列必须是空格、星号或分号
使用标号时,标号值为段程序计数器SPC的当前值 若标号独占一行,将指向下一行指令,值为下一条指令的
更多ppt课件尽在 http://sogouonline.taobao.com
1、二进制整型常数(0、1) 最多16位二进制数字;后缀为B或b
例:10001000B=136(十进制) 0101010B=42 (十进制)
旺旺丗你是爱我的天使
http://sogouonline.taobao.com
2、八进制整型常数(0、1-7) 最多6位八进制数字;后缀加Q或q,或前缀加0
例:“example” 定义了一个长度为7的字符串example
更多ppt课件尽在 http://sogouonline.taobao.com
旺旺丗你是爱我的天使
http://sogouonline.taobao.com
8、汇编-时间常数 • 使用.set伪指令给符号赋常数值,该符号就成为汇编时 间常数,等效于一个常数。 例:将常数18赋给符号nan_hua可采用如下指令: nan_hua .set 18 LD #nan_hua, A
3、预先定义的符号常数 (1)$代表段程序指针SPC的当前值; (2)寄存器符号AR0~AR7; (3)存储器映射寄存器由汇编器设置为符号,
_large_model指定存储器模式。
更多ppt课件尽在 http://sogouonline.taobao.com
旺旺丗你是爱我的天使
http://sogouonline.taobao.com
[操作数区]
[;注释区]
; 符号XN赋值为5
start:
STM ADD
#XN, AR0 ; 将5装入AR0中 *AR0, #0, A ; (AR0)+A赋给A
*助记符(指令)一定不能从第一列开始,否则视为标号。
*汇编器只识别每行前200个字符,超过则截断并发出警告。
汇编语言源文件格式
(2)代数指令语法格式
http://sogouonline.taobao.com
1.运算符
TMS320C54x汇编器使用与C语言相似的优先级
表4-1 可以用在表达式中的运算符
更多ppt课件尽在 http://sogouonline.taobao.com
旺旺丗你是爱我的天使
http://sogouonline.taobao.com


常数、符号,或用算数运算符连结起来的常数和符号。 有效范围:-32768~32767(16位带符号二进制数的范围)
影响表达式计算顺序的3个因素:
• 圆括号
• 运算符优先级(同C语言运算符优先级)
• 从左到右计算
更多ppt课件尽在 http://sogouonline.taobao.com
旺旺丗你是爱我的天使
例:124Q=84(十进制) 0226=150 (十进制)
3、十进制整型常数(0、1-9) 无后缀 例: 65535=65535(十进制) -32768=-32768 (十进制)
更多ppt课件尽在 http://sogouonline.taobao.com
4、十六进制整型常数(0、1-9、A-F) 4位十六进制数字;后缀加H或h,或前缀加0x;必须以数 字开始
例:name?定义的局部标号 mylab? NOP ;局部标号‘mylab‟的定义 B mylab? ;分支转移到mylab
更多ppt课件尽在 http://sogouonline.taobao.com
旺旺丗你是爱我的天使
http://sogouonline.taobao.com
汇编源程序中的表达式
旺旺丗你是爱我的天使
http://sogouonline.taobao.com
例:10H=16(十进制) 0x12=18 (十进制)
5、浮点常数 浮点数表示方法:[〒][n].[n][E|e][〒][n] n代表十进制数,浮点数前可带+或-,必须指定小数点。
例:99.e8为有效浮点数,但99e8为非法浮点数。 4.0 .4 -.314e13 +314.59e-2
相关文档
最新文档