第四章 汇编语言和伪指令

合集下载

第4章汇编语言程序设计伪指令的功能和应用程序设计的步骤和基本方法汇编的概念顺序程序分支程序循环程序子

第4章汇编语言程序设计伪指令的功能和应用程序设计的步骤和基本方法汇编的概念顺序程序分支程序循环程序子
格式:字符名称 BIT 位地址
AQ BIT P0.0 DEF BIT 00H
把P0.0的位地址赋给字符AQ,把位地址00H赋 给字符DEF。在其后的编程中,AQ可作P0.0使用, DEF可作位地址30H使用。
7.定义空间伪指令:
格式:〔标号:〕DS 表达式 功能:从标号指定的地址单元开始,保留若干个存储
常用的伪指令有以下几种:
⒈ 起始伪指令 ORG(Origin)
格式:ORG 16位地址 功能:规定ORG下面第一条指令的起始地址为
ORG指定的16位地址。
ORG 0100H START:MOV A,#05H
ADD A,#08H MOV 20H,A
①MOV A,#05H指令的第一个字节地址为0100H, ②标号START代表的地址为0100H。
⒉ 结束伪指令 END
格式:END 功能:汇编语言源程序的结束标志。
在END后面的指令,不被汇编。
⒊ 等值伪指令 EQU(Equate)
格式:字符名称 EQU 数据或符号
例如: PW EQU 2000H MOV DPTR, #PW ;(DPTR)=2000H
这里将PW等值为数值2000H,在指令中PW就可 以代替2000H来使用。
第二节 汇编语言程序设计举例
一. 顺序程序
顺序程序是指按顺序依次执行的程序, 顺序程
序结构虽然比较简单,但它是构成复杂程序的基础。
• 【例4-2】编写16位二进制数求补程序。 • 设16位二进制数存放在R1、R0中,求补以后的
结果则存放于R3、R2中。
CONT:
ORG 0200H
MOV A,R0 CPL A ADD A,#1 MOV R2,A MOV A,R1 CPL A ADDC A,#80H MOV R3,A RET

微机原理第四章

微机原理第四章
汇编语言有两种类型语句,即指令和伪指令,前者属于指令性语句,后 者属于指示性语句 指令性语句:指令,由汇编程序翻译成机器指令,在汇编过程中产生对 应的目标代码 典型的汇编指令是:ADD AX, [SI] 指示性语句:为汇编程序提供一些信息,让汇编程序在汇编过程执行某 些特定的功能,不产生目标代码 典型的伪指令是:COST DW ? ;定义一个字空间,并将标 识符COST指向该字空间
16
4、分析运算符
1、 算术运算符 + X / MOD SHL SHR
可以对数据进行运算,运算结果仍然为数据,但对地址不能进行乘除 运算。
例如: 20A1H+1040H 21H SHL 2 = 84H
17
2、 逻辑运算符 AND OR NOT XOR
只能对常数进行运算,得到的结果也是常数 既可以作指令助记符,又可以作汇编语言的运算符 指令助记符是在程序执行时运算的,运算符是在汇编过程进行的 例如: AND DX, PORT AND 0FEH
20
4、分析运算符(数值返回运算符) OFFSET SEG TYPE SIZE LENGTH
(1)OFFSET:取变量或标号的偏移地址值 格式:OFFSET 变量或标号 (2)SEG:取变量或标号的段基址 格式:SEG 变量或标号
21
(3)TYPE:返回变量的类型属性或标号的距离属性 格式:TYPE 变量或标号 A1 DB 20H,30H A2 DW 0438H L1:MOV AH, TYPE A1 MOV BH, TYPE A2 MOV BL, TYPE L1 (4)LENGTH:当变量中使用DUP时,LENGTH返回此变量所包含的 单元数,对其它变量则返回1
4321H, 2255H LABC LABD ;AL=21H ;AX=4321H

伪指令和汇编语言

伪指令和汇编语言

从指定单元开始,定义若干个字(双字节数)。
例如:
ORG 8000H
HETAB:
DW 7234H,8AH,10
汇编后则:
(8000H)=72H (8001H)=34H (8002H)=00H (8003H)=8AH (8004H)=00H (8005H)=0AH
03 常用旳伪指令
DS:定义空间命令
“DS <体现式>定义空间命令 格式: 标号: DS 数据或字符体现式 从指定单元开始,由数据或体现式 拟定保存若干个字节内存空间备用。 例如: ORG 8000H DS 08H DB 30H,8AH 即8000H~8007H单元保存备用 (8008H)=30H (8009H)=8AH
DATA和EQU旳区别在于DATA定义旳字符名称
作为标号登记在符号表中,故可先使用后定义;
而用EQU定义旳字符名称必须先定义后使用,其
原因是EQU不定义在符号表中。
03 常用旳伪指令
BIT:位地址符号命令

BIT<体现式>位地址符号命令
格式:
字符名称:
BIT 位地址
该命令把地址赋予标号段要求旳字符名称。
地址,位地址或立即数。
例如:
ORG 8000H
AA: EQU R6
;AA与R6等值
MOV A,AA
;A(R6)

03 常用旳伪指令
DATA:数据地址赋值命令
“ DATA<体现式>数据地址赋值命令 格式:
字符名称:
DATA 数据或体现式
此命令把数据地址或代码地址赋予标号段要求旳字符名称。
例如:INDEXJ DATA 8389H
定义了INDEXJ这个字符名称旳地址为8389H,主要用于

第四章 汇编语言程序设计

第四章 汇编语言程序设计

一、算术运算符
包括:+,-,*,/(取商),MOD(取余),SHL,SHR 特点:①运算对象及结果均为整数 ②地址只能加减 例: DA1 DA2 MOV MOV MOV MOV DB 1,2,3,4 DB 20 AX,30*5 汇编时 AL,31MOD5 AL,31/5 AL,DA2-DA1
MOV MOV MOV MOV
如:加法:1001、1D、2B……
特点:计算机能够直接识别,执行速度快;
但不方便记忆和编程
2、汇编语言(Assembly Language) 用助记符来表示指令,如:加法:ADD…… 特点:机器不能识别,需翻译;但仍然面向硬件, 执行速度较快;多用于编制系统程序、实时控制和通 信程序。 3、高级语言(High-level Language) 用数学语言和自然语言编程; 如:加法:+,输出:Printf… 特点:编程方便简单,无需了解机器硬件;但机器 不能识别,需要庞大的翻译系统,速度较慢。
类型 返回值 1 2 4 类型 返回值 -1 [FFH] -2 [FEH] DB DW DD
变量
标号
NEAR FAR
数值返回运算符(续)
LENGTH:
•对于一般变量,返回1; •对于DUP定义的变量,返回单元数(直接返回第一
个DUP前的N值); 说明:DUP为复制操作符,格式:N DUP(表达式); N表示复制次数,表达式为复制内容 例:2 DUP(1,2) 等价于 1,2,1,2
则:COUNT的值为5
COUNT表示:DA1,DA2占的字节总数(长度之和) 七、优先级(P136 表4-3)
4.3 伪指令语句
在汇编时进行处理,主要完成变量定义,段定义,
段分配,指示程序开始和结束等功能。

第4章 伪指令及汇编语言源程序

第4章   伪指令及汇编语言源程序
2019/4/12 9
第 4章
符号定义伪指令
2、 等号伪指令 = = 伪指令的格式与功能和 EQU 类似。不同的是, 在同一个程序中 = 可以对一个符号重复定义, EQU不能对同一个符号重复定义。 Y1=7 Y1=128 的定义是正确的。 而 Y1 EQU 7 Y1 EQU 128 的定义是错误的。
2019/4/12
24
第 4章
组合类型
组合类型规定本段与其他段的关系,有 4 种方式(默 认方式为NONE): NONE:连接时,表示本段与其他段在逻辑上没有 关系。 PUBLIC:连接时,本段将与其他同名、同类别的段 相邻地连接在一起,形成一个物理段,段的长度为 各PUBLIC段长度之和。 COMMON:连接时,本段将与其他同名、同类别 的段相覆盖,形成一个物理段,段的长度为最长的 COMMON段的长度。 STACK:表示此段为堆栈段,连接方式与PUBLIC 段相同。
2019/4/12
偏移地址低字节
偏移地址高字节
偏移地址低字节 偏移地址高字节
段地址低字节
段地址高字节
图4.2
15
第 4章
操作数是字符串
操作数为字符串时,内存中存放的是各字符的ASCII码。 例4-5 下面3个定义语句是等价的。 STR1 DB ‘ABCD’ STR1 DB ‘A’, ‘B’, ‘C’, ‘D’ STR1 DB 41H,42H,43H,44H 例4-6 下面2个定义语句是等价的 STR2 DB ‘AB’ STR2 DW ‘BA’ 当定义的字符串中字符多于2个时,只能使用DB定义,不 能使用DW。 STR3 DW ‘ABCD’ 是错误的定义方式。
2019/4/12
5
第 4章
操作码与操作数

第4章 伪指令、汇编语言程序结构及上机过程

第4章 伪指令、汇编语言程序结构及上机过程

表达式 表达式有算术表达式、关系表达式、逻辑表达式, 其对应的运算符见课本37页。
4.2 伪指令
伪指令是向汇编程序提供诸如:哪个段是数据段。 哪个段是代码段,程序何时结束、数据据段中的ห้องสมุดไป่ตู้内存变量等相关信息。 (1)数据定义伪指令 (2)段定义伪指令
(3)假定伪指令ASSUME (4)程序结束伪指令 (5)过程定义伪指令 (6)其它
(5)程序的调试:DEBUG 下面介绍几个最常用的DEBUG命令: (1)先进入DEBUG 并装入要调试的程序(例: SSD.EXE)
DEBUG SSD.EXE
(2)用反汇编命令U来确定所要设定的断点地 址.
-U
(3)从U命令的显示情况可确定要设置的断点 的位置.在确定断点后,就可以用G命令使程 序启动运行,同时设置断点. 例:-G=0 001D ;执行程序(从0到001D 单元) 程序将停在断点处,并显示出所有寄存器发 及各标志位的当前值,最后一行给出下一条 将要执行指令的地址、机器语言及汇编语 言.我们可以从寄存器的内容来了解程序运 行是否正确.
0C 08 34 12 41 42
SUM A1
STR
说明: (1)这里的SUM,A1,STR其实质为符号地址, 不同于高级语言的内存变量,也就是说不 能按内存变量一样去访问对应的数据。 (2)定义的16位数在内存存放时,其形式为 低8位在低地址,高8位在高地址。 (3)定义的字符数据按其ASCII码存放。
第四章 伪指令、汇编语言源程序结构及上机过 程
4.1 4.2 4.3 4.4 汇编语言中的语句 伪指令 源程序结构 汇编语言的上机过程
4.1 汇编语言中的语句
1.语句种类 (1)指令语句:完成一定的操作,能够翻译成机器代码 的语句,第三章介绍的指令所形成的语句. (2)伪指令语句:只是为程序在翻译语言程序时提供 有关信息,并不翻译成机器代码的语句. 注:汇编语言中还可以出现宏指令语句(12章)。

第四章-汇编语言程序的设计

第四章-汇编语言程序的设计

第四章汇编语言程序设计本章的汇编语言程序设计的主要容有:汇编语言程序设计概述、汇编语言程序的结构形式、汇编语言的伪指令。

(一个单片机应用系统和其它计算机系统一样,在完成一项具体工作的时候,它要按照一定的次序,去执行操作,这些操作实际上就是由设计人员,以单片机能够接受的指令编制的程序,那么无论计算机也好,单片机也好,实际上编制程序的过程,就是用计算机来反映设计者的编程思想,那么这一章中,我们将向大家介绍怎样使用单片机指令系统来编制一些应用程序。

在介绍之前,我们还是来学习汇编语言的一些基础知识)4.1 汇编语言程序设计概述1、计算机的汇编语言以助记符表示的指令,每一条指令就是汇编语言的一条语句。

(汇编语言程序设计实际上就是使用汇编指令来编写计算机程序。

汇编语言的语句有严格的格式要求)2、汇编语言的语句格式MCS-51汇编语言的语句格式表示如下:[<标号>]: <操作码> [<操作数>]; [<注释>]标号:指令的符号地址,有了标号,程序中的其它语句才能访问该语句。

①标号是由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。

②不能使用汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。

(同一个标号在程序中只能定义一次,不能重复定义;一条语句可以有标号,也可以没有标号,所以是否有标号,取决于程序中是否需要访问该语句。

)操作码:规定语句执行的操作容,操作码是以指令助记符表示的,是汇编指令格式中唯一不能空缺的部分。

操作数:给指令的操作提供数据或地址。

注释:是对语句或程序段的解释说明。

(在单片机中,这四个部分怎么加以区分呢?使用分界符)分界符(分隔符):用于把语句格式中的各部分隔开,以便于编译程序区分不同的指令段。

冒号(:)用于标号之后空格()用于操作码和操作数之间逗号(,)用于操作数之间,分割两个以上的操作数分号(;)用于注释之前。

第四章 汇编语言程序格式

第四章 汇编语言程序格式

.model small .data …… .code start: mov ax, @data mov ds, ax …… mov ax, 4c00h int 21h end start
9
段组定义伪操作
dseg1 dseg1 dseg2 dseg2 segment …… ends segment …… ends word public ‘data’
DATA_BYTE DATA_WORD
DB DW
10,4,10H,? 100,100H,-5,?
14
ARRAY
DB DB DW
‘HELLO’ ‘AB’ ‘AB’
ARRAY
48H 45H 4CH
4CH
4FH 41H 42H 42H 41H
PAR1 PAR2 ADDR_TABLE
DW DW DW
100,200 300,400 PAR1,PAR2
.STARTUP .EXIT [ return_value ]
13
数据定义及存储器分配伪操作:
[变量] 助记符 操作数 [ , 操作数 , … ] [ ; 注释] 助记符:DB DW DD DF DQ DT
DATA_BYTE 0AH 04H
10H
DATA_WORD 64H 00H 00H 01H FBH FFH -
12 ; (bx)=0 ; (bx)=2 ; (bx)=2
?
datagroup group data1,data2
code segment assume cs:code, ds:datagroup
; (bx)=0
程序开始和结束伪操作:
TITLE text
NAME module_name

ch4-1汇编语言程序设计(伪指令)

ch4-1汇编语言程序设计(伪指令)
什么是伪指令?
由汇编程序执行的“指令系统” 用于定义变量、分配存储区、定义逻辑段、
指示程序开始和结束等 在汇编时被解释执行,不产生任何目标代码
常用伪指令分类
数据定义伪指令 符号定义伪指令 段定义伪指令 过程定义伪指令 宏命令伪指令 结束伪指令
第四章 汇编语言程序设计
第四章 汇编语言程序设计
data SEGMENT
名字 Hello DB ‘Hello, world!’,0DH,0AH,’$’
data ENDS prog SEGMENT
伪指令
ASSUME CS:prog ,DS:data
start: MOV AX,data
MOV DS,AX
标号
LEA DX,hello
MOV AH,9
INT 21H 指令码 MOV AH,4CH
NUM:ADD AL,30H
RET
第四章 汇编语言程序设计
2.汇编语言与高级语言
• 汇编语言是一种依赖于计算机微处理器的语言 • 汇编语言一般不具有通用性和可移植性 • 进行汇编语言程序设计必须熟悉机器的硬件资
源和软件资源 • 高级语言是面向过程的语言 • 高级语言具有很好的通用性和可移植性
第四章 汇编语言程序设计
INT 21H
prog ENDS
操作数
END start
(4)操作数
常量 变量或标号 表达式 寄存器 存储器单元
第四章 汇编语言程序设计
第四章 汇编语言程序设计
表达式: 算术运算 逻辑运算 关系运算 取值运算和属性运算 其它运算
有数字表达式和地址表达式两种。 汇编时按优先规则对表达式进行计算,计算出
注意:
名字和标号: 标号后有冒号,在指令性语句前;名字后不加

单片机第4章汇编语言程序设计

单片机第4章汇编语言程序设计
将汇编语言程序汇编成目标程序后,还要进行 调试,排除程序中的错误。只有通过上机调试并得 出正确结果的程序,才能认为是正确的程序。
4.2 伪指令
伪指令是在机器汇编中告诉汇编程序 如何汇编、对汇编过程进行控制的命令。 伪指令与汇编语言指令不同,只在源程序 中出现,不产生任何机器代码,在程序的 运行过程中不起作用,故称为“伪指令”。
处理 判断 连接
2.绘制程序流程图 简单的问题可由文字说明, 当问题复杂时,将文字说明的步骤以图形符号表示, 称流程图。
3.编写源程序 用汇编语言把流程图所表明的 步骤描述出来,实现流程图中每一框内的要求,从 而编制出一个有序的指令流,即汇编语言源程序。
4.汇编、调试 汇编语言是用指令助记符代替机 器码的编程语言,所编写的程序是不能在计算机上 直接执行的,因此利用它所编写的汇编语言程序必 须转换为单片机能执行的机器码形式的目标程序才 能运行,我们把这一过程称为汇编,进行汇编的程 序称为汇编程序。
4. 定义字伪指令DW
[标号:] DW 16位字数据表
该指令的功能与DB相似, 区别仅在于从指定地
址开始存放的是指令中的16位数据, 而不是字节串。
每个16位数据要占两个存储单元, 高8 位先存(低位
地址), 低 8 位后存(高位地址)。
1403H 3CH
ORG 1400H DATA1:DW 324AH,3CH
散转程序是分支程序的一种, 它可根据运算结果或输入数 据将程序转入不同的分支。MCS - 51 指令系统中有一条跳转指 令JMP@A+DPTR,用它可以很容易地实现散转功能。该指令 把累加器的8位无符号数与16位数据指针的内容相加, 并把相加 的结果装入程序计数器PC,控制程序转向目标地址去执行。

汇编语言学习第4章

汇编语言学习第4章

不同而不同。
(名字项,常称为标号) 标号是程序设计人员自己定义的表示符号,用来表示本语句的符号地址
(即该指令的偏移地址,也就是该单元与其所处段基址的偏移量)是可有
可无的,只有当需要用符号地址来访问该语句时才需要。 2.operation(操作符)
操作符项可以是指令、伪操作或宏指令的助记符。对于指令,作用是指出
1.等价语句EQU
等价语句的一般使用格式如下: SYMBOL EQU EXPRESSION
作用是用左边的符号名代表右边的表达式。
注意:等价语句不会给符号名分配存储空间,符号名不能与其它符号同名, 也不能被重新定义。
(1)用符号名代表常量或表达式
例4.14 (2)用符号名代表字符串 例4.15 (3)用符号名代表关键字或指令助记符 例4.16
例4.21
2.定义字变量的伪指令为DW
一个变量占一个字空间
例4.22:WORD1 DW DW 89H, 1909H, -1 0ABCDH, ?, 0
上面的定义语句经汇编后所产生出的内存单元分配情况如下:
… 89 00 09 19 FF FF CD AB --00 00 …
例4.23
3.双字变量定义伪指令DD 每个双字变量占用二个连续的字单元(四个字节)。
功能和作用,而不应该只写出指令的动作。
4.2运算符号
4.2.1算术运算符
算术运算符有:+、-、*、/和MOD。 其中: +、-、*、/就是我们算术中常用的加、减、乘、除。 MOD算符是模运算。指除法运算后得到的余数。 例如:5 MOD 2为1。 注意:算术运算符可以用于数字表达式或地址表达式中,但当它用于地址 表达式时,只有当其结果有明确的物理意义时才是有效的。 例如:将两个地址相乘或相除是无意义的。地址可以做加减运算,但也必 须注意物理意义。例如把两个不同段的地址相加减也是无意义的。 例4.1 例4.2

第四章 汇编语言和伪指令

第四章 汇编语言和伪指令
用户自定义的有名称段
2、条件汇编伪指令 .if、.elseif、.else、.endif伪指令告诉汇编器按照表达 if、 elseif、 else、 endif伪指令告诉汇编器按照表达 式的计算结果对代码块进行条件汇编。 式的计算结果对代码块进行条件汇编。 标志条件块的开始, .if expression — 标志条件块的开始,仅当条件为真 (expression的值非0即为真)时汇编代码。 expression的值非0即为真)时汇编代码。 的值非 标志若.if条件为假 条件为假, elseif条 .elseif expression — 标志若.if条件为假,而.elseif条 件为真时要汇编代码块。 件为真时要汇编代码块。 标志若.if条件为假时要汇编代码块 条件为假时要汇编代码块。 .else — 标志若.if条件为假时要汇编代码块。 标志条件块的结束,并终止该条件代码块。 .endif — 标志条件块的结束,并终止该条件代码块。
5.调试工具 软件仿真器(Simulator) 软件仿真器(Simulator) .out文件调入到一个计算机的软件模拟窗口 将.out文件调入到一个计算机的软件模拟窗口 DSP代码进行软件模拟和调试及程序验证 代码进行软件模拟和调试及程序验证, 下,对DSP代码进行软件模拟和调试及程序验证, 它不需目标硬件支持,只需在计算机上运行。 它不需目标硬件支持,只需在计算机上运行。 硬件仿真器(XDS510) 硬件仿真器(XDS510) 通过仿真头将PC PC机中的用户程序代码下载到 通过仿真头将PC机中的用户程序代码下载到 目标系统的存储器中进行调试和程序验证。 目标系统的存储器中进行调试和程序验证。 TI公司推出的 公司推出的CCS集成环境将上述各步骤集成在一 公司推出的 集成环境将上述各步骤集成在一 个窗口环境下,大大方便了软件设计。 个窗口环境下,大大方便了软件设计。

第四章 伪指令及程序设计

第四章 伪指令及程序设计
7 2018/11/13 ASSUME CS:段名,DS:段名,SS:段名,ES:段名
assume指定段与段寄存器之间的关系,但并不为段寄存 器设定初值,程序中如果使用数据段或者附加段,需要明确 对DS、ES赋值。只要正确书写源程序,CS、IP和SS、 SP的值将会由连接程序正确设置 设置方法: MOV AX,STACK MOV SS,AX
2018/11/13
6
汇编程序的基本结构要求
完整的汇编程序要包括:段定义、段分配、设置段地址、返 回DOS语句、程序结束 和程序体。必要时加上过程调用。 完整汇编语言程序的典型格式 1. 段定义格式: 段名 …… SEGMENT
段名
ENDS
至少有一个代码段,堆栈段如果不定义,由计算机自动分配。 段名是由字母数字组成的,可以任意定义。 计算机识别不同的段靠 段分配ASSUME 语句完成
2018/11/13 20 Nhomakorabea PTR例 MUL BYTE PTR[BX] JMP JMP JMP
;限定存储器操作数的类型
WORD PTR[BX] ;段内转移 DWORD PTR[BX] ;段间转移 CS:IP FAR PTR LO ;段间转移
2018/11/13
21
THIS: 格式:变量/标号 EQU THIS 类型/距离 功能:该变量或标号的段地址和偏移地址与下一个存储 单元的地址相同,并具有THIS后的属性 Eg4-45:FIRST EQU THIS BYTE TABLE DW 200DUP(?) EG4-46 :SP1 EQU THIS FAR MOV AX,100
2018/11/13 23
4-3 8086宏汇编语言常用伪指令
11

第四章 伪指令

第四章  伪指令

数据定义伪指令的格式为: [变量名] DB(DW、DD、DQ、DT) 表达式1,表达式2,… 表达式1,表达式2……是给变量或指定的存储单元赋予初值,它们有以下几种形式: (a)数值表达式 数据定义伪指令可以为一个或连续的存储单元设置数值初值。 (b)字符串表达式 对于DB伪指令,字符串的长度允许超过2个字符,但不能超过255个字符,字符 串必须用单引号括起来,它可为字符串中的每个字符分配1字节单元,字符串 从左至右以字符的ASCII码形式按地址递增的顺序依次存放。 (c)?表达式 不带引号的?,用于为变量预留内存单元,暂时不存入数据,即表示所定义的 变量无确定的初值。 例如:A DW ?,?为变量A预留2个字单元。 (d)地址表达式 操作数为地址表达式时,只适用于DW和DD这两种数据定义伪指令。如果地址表 达式为一变量(标号)名,用DW伪指令则是取它的偏移地址来初始化变量;用 DD伪指令则是取它的段首地址和偏移地址来初始化变量。 (e)带DUP的表达式 格式为:n DUP (表达式),其中n为重复因子,只能取正整数,它表示定义了 n个相同的数据存储单元。
在8086汇编语言中,运算符分为:算术运算符、逻辑运算符、关系运算
符、数值返回运算符、属性运算符和字节分离运算符。
(一)、表达式
(1)数值表达式 数值表达式是由常量与算术运算符、逻辑运算符或关系运算符构成的有意 义的式子。数值表达式在汇编期间进行运算,运算结果为一数值常量,它 只有大小而没有属性。
数据定义伪指令的格式为: [变量名] DB(DW、DD、DQ、DT)
Байду номын сангаас
表达式1,表达式2,„
其中:变量名是可选项,它仅代表所定义数据存储区第一个单元的地址; DB、DW、DD、DQ和DT是伪指令符,具体一条数据定义伪指令取5种之一。 DB定义的是字节类型的变量,每个表达式被分配1个字节单元。 DW定义的是字类型的变量,每一个表达式被分配1个字单元(2个字节)。 DD定义的是双字类型的变量,每一个表达式被分配2个字单元(4个字节)。 DQ定义的是四字类型的变量,每一个表达式被分配4个字单元(8个字节)。 DT定义的是十字节类型的变量,每一个表达式被分配10个字节单元。

第四章 程序设计

第四章  程序设计

…………
R3=7,转向SUBR7
拟以多向分支 的形式实现
MOV DPTR, #JMPTAB
MOV A, R3
ADD A, R3 JMP @A+DPTR JMPTAB: AJMP SUBR0 ;转移指令表 AJMP SUBR1 …… AJMP SUBR7
三、循环结构与循环程序设计
循环结构使程序简练,大大节省存储空间。 循环程序包含四部分: 1、初始化部分 (循环计数器、变量置初值) 2、循环处理部分(主体,需要重复执行的部分) 3、循环控制部分(修改地址指针、修改变量、检测 循环结束条件)
TABLE: DB
…………
五、子程序设计
经常重复使用的程序宜设计成子程序。子程序 在结构上应具有通用性和独立性,编写子程序应 注意以下几点:
1. 子程序应取名,常用标号作为其名称,也代表子程序的入 口地址。 2. 主程序调用子程序必须有LCALL等指令实现,子程序返回 必须在末尾处执行RET等指令。
3. 调用子程序应特别注意保护现场和恢复现场。LCALL等指 令只自动对PC指针进行保护和恢复,其它重要内容,需要 客户自行编写现场保护与恢复的软件。 4. 调用子程序,要能正确传送参数,即要满足入口条件和出 口条件。
书例4.2.17-----看5分钟 该程序几个特点: 1. 求平方通过子程序实现。
(2)循环次数未知的程序
例2、设用户用键盘输入长度不超过100字节的字符串放在8031单片 机外部RAM以20H为首地址的连续单元,该字符串用回车符CR (‘CR’= 0DH)作为结束标志,要求统计此字符串的长度并存入内 部RAM的1FH单元中。
解:从首单元开始取数,每取一数判断其是否为‘CR’,是则结束。 ORG 1000H

汇编语言伪指令

汇编语言伪指令

汇编语言伪指令在编写汇编语言程序时,会用到另一类指令,这类指令仅供汇编程序将源程序翻译成目标程序时使用,本身并不形成机器码,这类指令称为伪指令。

由此可知,指令有二类:(1)汇编指令:是编译后产生气器码的指令。

(2)伪指令:仅供汇编程序使用,编译后不产生气器码的指令。

下面简洁介绍5条伪指令。

1. 汇编起点指令ORG(Origin)指令格式:ORG nn作用:将ORG nn 后的程序机器码或数据存放以nn为首地址的存储单元中。

如在下面的例4-1中,伪指令ORG 2000H 将目标程序从地址2000H处开头存放。

2. 定义字节指令DB (Define Byte)指令格式:[LABEL] DB N1,N2,…,Nm作用:将DB后的8位字节数据N1,N2,…,Nm依次存入以标号LABEL为首地址的存储单元中。

若无标号,则N1,N2,…Nm依次存放在DB上一条指令之后的存储单元中。

如在例4-1中伪指令DB 将字节数据55,38依次存放到以标号LABEL3为首地址的存储单元2100H~2101H中。

3. 定义字指令DW (Define Word)指令格式:[LABEL] DW NN1,NN2,…,NNm作用:将DW后的16位字数据NN1,NN2,…,NNm依次存放到以标号LABEL为首地址的存储单元中,若无标号,则NN1,NN2,…,NNm依次存放在DW上一条指令之后的存储单元中。

在例4-1中,伪指令DW 同样可将字数据5538存放到以标号LABEL3为地址的存储单元2100H~2101H中。

4. 等值指令EQU (Equate)指令格式:LABEL EQU nn作用:将16位地址nn赋给标号LABEL,在例4-1中,伪指令LABEL0 EQU 2100H将地址2100H赋给标号LABEL0。

5. 结束汇编指令END作用:汇编程序编译源程序时,遇到伪指令END,不管END下面是否还有其它指令都将停止编译。

例1 将地址为2100H存储单元中内容55与地址为2101H存储单元内容38进行十进制数相加,运算结果93存放在地址为2102H的存储单元中。

第四章伪指令

第四章伪指令

第四章伪指令汇编语言源程序由一系列语句构成,这些语句既可以是指令,也可以是伪指令。

指令是由CPU负责执行的,每一条指令都和一条机器语言相对应。

而伪指令是由汇编程序负责执行,完成一些内存单元分配、段之间的连接关系等操作,所以伪指令并不会生成机器指令,也就不会被CPU执行。

在本章中,重点讲解一些常用的伪指令及其功能。

4.1伪指令的分类及伪指令语句格式伪指令又称为伪操作,它虽然不会被CPU执行,但却可以指示汇编程序按照用户的意图,完成数据的定义、存储器的分配、指示程序结束等功能。

所以伪指令在汇编语言程序设计过程中具有重要的意义,希望读者在学习过程中应该加以高度重视。

4.1.1 伪指令的分类8088/8086的伪指令大致可分为以下八类:·数据定义伪指令;·符号定义伪指令;·段定义伪指令;·过程定义伪指令;·结束伪指令;·条件汇编伪指令;·结构、记录定义伪指令;·其他伪指令。

其中,条件汇编伪指令与结构、记录定义伪指令将在第八章予以介绍。

4.1.2 伪指令语句格式伪指令语句格式一般由四部分组成。

语句格式: [变量] 伪指令助记符参数1,参数2····参数n[;注释]说明:伪指令助记符规定了伪指令的功能。

一般伪指令都有参数,用于说明伪指令的操作对象,参数的类型和个数随着伪指令的不同而不同。

有时参数是常数或数值表达式,有时参数是一般的符号,有时是具有特殊意义的符号。

伪指令语句中的变量可有可无,如果伪指令语句中出现变量,则汇编程序使其记以第一个字节的偏移地址。

注释部分也是可有可无的,用于说明该伪指令的功能。

例如 VAR1 DW 1234H,5678H ;定义VAR1为字变量该语句中的VAR1为变量;DW为伪指令助记符;1234H与5678H为参数;分号后面给出的文字为注释。

4.2汇编语言中的数据项数据项是指令或伪指令语句操作对象的基本组成部分。

汇编语言程序格式、伪指令

汇编语言程序格式、伪指令
微机与接口技术
第4章 汇编语言程序设计
主要内容:
汇编语言源程序的结构 汇编语言语句格式 伪指令 功能调用 汇编语言程序设计
1
微机与接口技术
4.1 汇编语言源程序
1.机器语言(Machine Language)
用二进制表示指令和数据。 优点:执行速度快,占有内存少。 缺点:不直观,不易编写、阅读和理解,面向硬件,不 能移植。
MASM
汇编程序
PRODR.OBJ 文件
Link
连接程序
PRODR.EXE 文件
汇编语言程序的建立及汇编过程
4
微机与接口技术
上机过程: 1.调用编辑程序(例如:记事本)建立源文件。 以×××.asm命名文件。 2.用汇编程序masm(或asm)对源文件汇编产生目标文件 ×××.obj。 如果汇编出错则需重新调用编辑程序修改错误,直至汇编 通过为止。
2.汇编语言(Assembly Language)
用助记符书写指令,地址和数据也可用符号表示。 优点:编写、阅读和修改较方便,不易出错,执行速度与机 器语言相近。 缺点:面向硬件,不能移植。
2
微机与接口技术 汇编:把汇编语言源程序翻译成机器语言目标程序的过程。 汇编程序:完成汇编工作的系统软件。 •小汇编(ASM):需要64K内存支持 •宏汇编(MASM):需要96K以上的内存支持,功能更强。 汇编程序的主要功能: 1)检测源程序。 2)测出源程序中的语法错误,并给出出错信息。 3)产生源程序的目标程序,并给出列表文件。 4)展开宏指令。
24
微机与接口技术
(2) 逻辑运算符 AND、OR、XOR、NOT:只用于数值表达式 注:逻辑运算符和逻辑指令的区别:前者在汇编时 进行,后者在程序执行时由CPU执行 例:AND AX, 3FC0H AND 0FF00H 汇编后源操作数被翻译为:3F00H,所以上述指令与 AND AX, 3F00H等价。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2、链接命令文件 example.cmd 、
example.obj –o example.out –m example.map –e start ;输入文件 ;输出文件 ;map文件 ;程序从start(已定义的全局符号)地址处开始执 ;行
MEMORY {PAGE0: ROM: origin= 0e00h,length = 100h ;指定程序空间起始地址和长度 指定目标存储器结构 PAGE1: DARAM: origin= 0060h, length = 100h ;指定数据空间起始地址和长度 SARAM: origin= 0160h, length = 100h } 伪指令 SECTIONS { .text:> ROM PAGE0 ;将程序中的.text、.data段分配到程序空间 .data:> ROM PAGE0 控制段的构成与地址分配 .bss:>DARAM PAGE1 ;将.bss段分配到数据空间DARAM中 .stack: > SARAM PAGE1 ;将堆栈段分配到数据空间SARAM中 }
4、注释—用来说明指令功能,便于用户阅读。 、注释 用来说明指令功能 便于用户阅读。 用来说明指令功能, 注释可位于句首或句尾,位于句尾时, 注释可位于句首或句尾,位于句尾时,以分号 开始;从第一列开始时,也可以用“ “;”开始;从第一列开始时,也可以用“*”号; 注释可单独一行或数行; 注释可单独一行或数行; 注释是任选项 ;
2、助记符—助记符指令包括汇编语言指令、 、助记符 助记符指令包括汇编语言指令 助记符指令包括汇编语言指令、 汇编伪指令、宏指令和宏调用。 汇编伪指令、宏指令和宏调用。 助记符区不能从第一列开始, 助记符区不能从第一列开始,否则被认为是 标号; 标号; 汇编语言指令一般用大写; 汇编语言指令一般用大写; 伪指令和宏命令以句号“ 开始 且为小写; 开始, 伪指令和宏命令以句号“.”开始,且为小写;
段的使用非常灵活,但常用以下约定: 段的使用非常灵活,但常用以下约定: 此段存放程序代码。 少3种 此段存放初始化了的数据。 .data — 此段存放初始化了的数据。 此段为未初始化变量保留存储空间。 .bss — 此段为未初始化变量保留存储空间。 名称’ 定义一个有名段, .sect ‘名称’ — 定义一个有名段,放初始化了的 名称 数据或程序代码。 数据或程序代码。 段名” 字个数— 符号名 .usect “段名”,字个数 为一个有名称 段名 的段保留一段存储空间,但不初始化。 的段保留一段存储空间,但不初始化。
CH4 汇编语言和伪指令
—TMS320LF240x软件开发 TMS320LF240x软件开发 TMS320LF240x
4.1 TMS320LF240x软件开发过程 软件开发过程
1.建立源程序 用汇编语言或C语言编写源程序,扩展名分别 汇编语言或 语言编写源程序, 编写源程序 .asm和.c。 .asm文件中 除了DSP 文件中, DSP的指令外还有 为.asm和.c。在.asm文件中,除了DSP的指令外还有 汇编伪指令。 汇编伪指令。 汇编语言 编程过程复杂, 编程过程复杂,但程序执行效率高 C/C++语言 C/C++语言 编程容易, 编程容易,但程序执行效率不如汇编语言
二、伪指令(Directives) 伪指令 )
伪指令不生成最终代码(即不占据存储单元), 伪指令不生成最终代码(即不占据存储单元), 但对汇编器、链接器有重要指示作用, 但对汇编器、链接器有重要指示作用,包括段 Section)定义、条件汇编、文件引用、 (Section)定义、条件汇编、文件引用、宏定义 常用的汇编伪指令如下表所示。 等。常用的汇编伪指令如下表所示。
5.调试工具 软件仿真器(Simulator) 软件仿真器(Simulator) .out文件调入到一个计算机的软件模拟窗口 将.out文件调入到一个计算机的软件模拟窗口 DSP代码进行软件模拟和调试及程序验证 代码进行软件模拟和调试及程序验证, 下,对DSP代码进行软件模拟和调试及程序验证, 它不需目标硬件支持,只需在计算机上运行。 它不需目标硬件支持,只需在计算机上运行。 硬件仿真器(XDS510) 硬件仿真器(XDS510) 通过仿真头将PC PC机中的用户程序代码下载到 通过仿真头将PC机中的用户程序代码下载到 目标系统的存储器中进行调试和程序验证。 目标系统的存储器中进行调试和程序验证。 TI公司推出的 公司推出的CCS集成环境将上述各步骤集成在一 公司推出的 集成环境将上述各步骤集成在一 个窗口环境下,大大方便了软件设计。 个窗口环境下,大大方便了软件设计。
用户自定义的有名称段
2、条件汇编伪指令 .if、.elseif、.else、.endif伪指令告诉汇编器按照表达 if、 elseif、 else、 endif伪指令告诉汇编器按照表达 式的计算结果对代码块进行条件汇编。 式的计算结果对代码块进行条件汇编。 标志条件块的开始, .if expression — 标志条件块的开始,仅当条件为真 (expression的值非0即为真)时汇编代码。 expression的值非0即为真)时汇编代码。 的值非 标志若.if条件为假 条件为假, elseif条 .elseif expression — 标志若.if条件为假,而.elseif条 件为真时要汇编代码块。 件为真时要汇编代码块。 标志若.if条件为假时要汇编代码块 条件为假时要汇编代码块。 .else — 标志若.if条件为假时要汇编代码块。 标志条件块的结束,并终止该条件代码块。 .endif — 标志条件块的结束,并终止该条件代码块。
4.2.1 汇编语言源程序格式
TMS320LF240x汇编语言源程序以 汇编语言源程序以.asm为其 汇编语言源程序以 为其 扩展名, 扩展名,汇编代码的编写可以在任何一种文本编 辑器中进行。 辑器中进行。此文件经编译器编译后存储在程序 存储单元。 存储单元。 汇编语言源程序中可能包含汇编语言指令 汇编语言指令、 汇编语言源程序中可能包含汇编语言指令、汇 编伪指令(如 , 、宏指令(如 编伪指令 如.data,.set)、宏指令 如.macro) 、 注释等汇编语言要素 等汇编语言要素。 注释等汇编语言要素。 程序的编写必须符合一定的格式, 程序的编写必须符合一定的格式,以便汇编器 将源文件转换成机器语言的目标文件。 将源文件转换成机器语言的目标文件。
4.2 汇编语言程序的编写方法
1、汇编语言源程序 example.asm 、
注释区 .title “example.asm” ; 源程序名 .bss x,4 ; 为变量x分配4个字的空间 .bss y,1 ; 为变量y分配1个字的空间 标号区 table .word 1,2,3,4 ;变量初始化 .text ; 代码段 .def 助记符区 start ; 定义代码段的起始标号 start MAR *,AR0 ;设置ARP指向AR0 LAR AR0,#x 操作数区 ; 变量x地址装入AR0 LAR AR1,#3 ;加载3到AR1 LACC #0 ;(ACC)=0 Loop: ADD *+,AR1 ;将AR0指向的地址中的数据加到 ;ACC,且AR0内容加1,ARP指向AR1 BANZ loop,*-,AR0 ;AR1值不为0时循环,AR1值减1, ;ARP指向AR0 SACL * ;ACC内容存入y .end ;结束伪指令
1、标号—供本程序的其他部分或其他程序 、标号 供本程序的其他部分或其他程序 调用。 调用。 标号是可选项,冒号“ 标号是可选项,冒号“:”可加可不加。若 可加可不加。 使用标号, 使用标号,则标号必须从第一列开始 ; 标号可以长达32个字符,由A~Z、a~z、 标号可以长达32个字符, 32个字符 符号组成; 0~9、_、和$符号组成; 若不使用标号,则语句的第一列必须是空格、 若不使用标号,则语句的第一列必须是空格、 (;)或星号 或星号( 分号 (;)或星号(*); 标号分大小写,且第一个字符不能是数字; 标号分大小写,且第一个字符不能是数字;
定义存储器映射寄存器的符号名, .mmregs — 定义存储器映射寄存器的符号名, 这样就可以用AR AR0 PMST等助记符替换实际 这样就可以用 AR0 、 PMST 等助记符替换实际 的存储器地址。 的存储器地址。 .float 数1,数2 — 指定的各浮点数连续放置 到存储器中(从当前段指针开始) 到存储器中(从当前段指针开始)。 指定的各16bit有 16bit .word 数1,数2 — 指定的各16bit有符号整数 十六进制) 连续放置到存储器中( ( 十六进制 ) 连续放置到存储器中 ( 从当前 段指针开始) 段指针开始) 。 指定的各16bit无 16bit .int 数 1, 数 2 — 指定的各 16bit无符号整数 十六进制) 连续放置到存储器中( ( 十六进制 ) 连续放置到存储器中 ( 从当前 段指针开始) 段指针开始) 。 以位为单位,空出n位存储空间。 .space n — 以位为单位,空出n位存储空间。 程序块结束。 .end — 程序块结束。
3、引用其他文件和初始化常数伪指令 文件名' 将指定文件复制到当前位置, .include '文件名' — 将指定文件复制到当前位置,其 内容可以是程序、数据、符号定义等。 内容可以是程序、数据、符号定义等。 文件名' include类似 类似。 .copy '文件名' — 与.include类似。 在当前文件中定义一个符号, .def 符号名 — 在当前文件中定义一个符号,可以被 其他文件使用。 其他文件使用。 在其他文件中定义, .ref 符号名 — 在其他文件中定义,可以在本文件中 使用的符号。 使用的符号。 .global 符号名 — 其作用相当于.def、.ref效果之和。 其作用相当于.def、 ref效果之和。 效果之和
3、操作数—指令中的操作数或汇编伪指令中定 、操作数 指令中的操作数或汇编伪指令中定 义的内容。 义的内容。 紧跟在助记符的后面,由一个或多个空格分开; 紧跟在助记符的后面,由一个或多个空格分开; 操作数之间必须用逗号“ 分开 分开; 操作数之间必须用逗号“,”分开; 有的指令无操作数, NOP、RET; 有的指令无操作数,如NOP、RET;
相关文档
最新文档