第四章 汇编语言和伪指令
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;
第4章汇编语言程序设计伪指令的功能和应用程序设计的步骤和基本方法汇编的概念顺序程序分支程序循环程序子
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
微机原理第四章
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章
符号定义伪指令
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章 伪指令、汇编语言程序结构及上机过程
表达式 表达式有算术表达式、关系表达式、逻辑表达式, 其对应的运算符见课本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汇编语言程序设计(伪指令)
由汇编程序执行的“指令系统” 用于定义变量、分配存储区、定义逻辑段、
指示程序开始和结束等 在汇编时被解释执行,不产生任何目标代码
常用伪指令分类
数据定义伪指令 符号定义伪指令 段定义伪指令 过程定义伪指令 宏命令伪指令 结束伪指令
第四章 汇编语言程序设计
第四章 汇编语言程序设计
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.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,控制程序转向目标地址去执行。
