第四章汇编语言
汇编语言 第四章

4.3 汇编语言程序格式
3.关系运算符 1) 运算符包括EQ、NE、LT、GT、LE、GE。 2)运算结果为一个数字值。关系成立结果为0FFFFH,结 果不成立结果为0。 例:MOV AX,1234H GT 1024H MOV BX,0LT0 相当于 MOV AX,0FFFFH MOV BX,0
2012-8-12 17
4.2 伪指令
六、过程定义伪指令 可以把具有独立功能的程序段定义为过程 (相当于高级语言中的子程序),供其它程序 调用。 过程定义的语法格式为: <过程名> PROC [NEAR]/FAR ┆ RET <过程名> ENDP
2012-8-12 18
4.3 汇编语言程序格式
语句的种类和格式 表达式的表示
2012-8-12 12
4.2 伪指令
7)定义其他类型数据项DQ,DT DQ定义8字节数据项 DT定义10字节数据项 2.重复操作符DUP 格式:count DUP (表达式[,表达式…]) 1)可以用来定义数组,定义数据缓冲区; 2)count是重复次数; 3)允许嵌套; 例:BUF DB 3 DUP(0);BUF DB 0,0,0 例:BUF1 DB 3,2,5 DUP(1,2,2 DUP(0))
2012-8-12
7
4.2 伪指令
3.SEGMENT伪操作可增加说明 格式:段名 SEGMENT [定位类型][组合类型][使用类 型][类别] …….. 段名 ENDS 1)当需要连接程序把本程序与其他程序模块连接时,需 要使用这些说明。 2)定位类型:说明段的起始地址应有怎样的边界值。 3)组合类型:说明程序连接时的段合并方法。 4)使用类型:说明是16位或32位寻址方式。 5)类别:在引号中给出连接时组成段组的类别。
汇编语言设计实践:第4部分 基本汇编语言

4.1 汇编语言语句种类及其格式
汇编语言的程序格式
• 完整的汇编语言源程序由段组成,段由指令语句与 伪指令语句构成
• 一个汇编语言源程序可以包含若干个代码段、数据 段、附加段或堆栈段,段与段之间的顺序可随意排 列
• 需独立运行的程序必须包含一个代码段,并指示程 序执行的起始点,一个程序只有一个起始点
• 所有的指令语句必须位于某一个代码段内,伪指令 语句可根据需要位于任一段内或段外
汇编语言的语句可以分为指令语句和伪指令语句
•指令语句——产生使CPU产生动作、可供机器
执行的机器目标代码
•伪指令语句——不产生CPU动作、在程序执行
前由汇编程序处理的说明性语句,例如,数据说明、 变量定义等等
2
一、指令语句
每一条指令语句在汇编时都要产生一个可供CPU执 行的机器目标代码,它又叫可执行语句。
指令语句的一般格式为: 标号 : 操作码
, 操作数
; 注释
一条指令语句最多可以包含4个字段 例 L1:MOV AH,0A0H ;将0A0H放入AH
3
1.标号字段
标号是可选字段,它后面必须有“:”。标号是一条 指令的符号地址,代表了该指令的第一个字节存放 地址。
注释字段可以是一条指令的后面部分,也可以是 整个语句行。
例:
LABEL1: ADD AX,BX; 功能为AX<=(AX)+(BX)
;后面的程序段将完成两次对存储器的访问
MOV AX, W_VAR1
MOV W_VAR2, AX
7
二、伪指令语句
伪指令语句又叫命令语句。 伪指令本身并不产生对应的机器目标代码。它仅 仅是告诉汇编程序对其后面的指令语句和伪指令 语句的操作数应该如何处理。
汇编语言 第四章 汇编语言

4.1.4 特殊运算符
1.属性替换运算符
(3)短取代运算符SHORT 告诉汇编程序,目标标号在本条指令的 -128~+127 个字节的范 围内,生成节省一个字节的机器指令。一般情况下可以不用。 例如: JMP SHORT NEXTBRACH … NEXTBRACH: MOV EAX,ECX
4.1.4 特殊运算符
4.1.4 特殊运算符
1.属性替换运算符
(2)段地址取代运算符“:” 又称为段地址运算或者跨段前缀。用于临时给定变量,标号或 者地址表达式指定一个段属性,地址表达式EA和类型保持不变。在 指令中替代默认的段以形成物理地址。 例如: MOV DX,ES:[BX + DI];EA = BX +DI,PA =ES ;*16 + EA,临时替换默认的DS
4.1.4 特殊运算符
2.属性分离运算符
TYPE运算符 格式:TYPE 变量或标号 功能:分离出其后变量或标号的类型。如果是变量,将返回该变 量的类型对应字节数;如果是标号,则返回代表标号类型的数值。 MOV CL,TYPE ARRAYW ;若变量ARRAYW为字类型,则CL=2
4.1.4 特殊运算符
(1)LENGTH运算符 功能:当变量由数据定义伪指令定义,并且表达式带有一个DUP项 时,LENGTH取DUP项前面的重复系数;如果表达式有多个DUP项 嵌套时,仍然取第一个DUP项前的数字,LENGTH变量的取值为1. DATA SEGMENT A DB ‘ABCDEF’ B DW 10 DUP(1,2DUP(2)) C DB 4,20 DUP(0) DATA ENDS ┆ MOV AX,LENGTH A ;1→AX MOV BX,LENGTH B ;10→BX MOV CX,LENGTH C ;1→CX
第四章 汇编语言程序设计

一、算术运算符
包括:+,-,*,/(取商),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 伪指令语句
在汇编时进行处理,主要完成变量定义,段定义,
段分配,指示程序开始和结束等功能。
汇编 第四章伪指令及汇编语言源程序结构

MOV AL, BUF1
ADD AL, BUF2 MOV SUM, AL
;取第一个加数
;两数加 ;和放入SUM单元
3
伪指令(指 示性)语句: 提供相关辅 助信息。
指令性语句: 完成一定功 能,能翻译 成机器码。
伪指令语句
DATA SEGMENT ;DATA段定义开始 BUF1 DB 34H BUF2 DB 27H SUM DB ? DATA ENDS ;DATA段定义结束 CODE SEGMENT ;CODE段定义开始 ASSUME CS:CODE ASSUME DS:DATA ;段性质规定 START: MOV AX,DATA MOV DS,AX ;给DS赋值 MOV AL, BUF1 ;取第一个加数 ADD AL, BUF2 ;两数加 MOV SUM, AL ;和放入SUM单元 MOV AH,4CH INT 21H ;返回DOS CODE ENDS ;CODE段定义结束 END START ;源程序结束
14
二、= 等号伪指令
格式:符号名 = 表达式 功能:为常量、表达式及其他各种符号定义一个等价的符号 名,并能对所定义的符号多次重复定义,且以最后一次定义 的值为准。 例:COST = 20 M = MOV LOST = COST+10 ;30→LOST M = ADD ;M=ADD 注 : “ = ” 伪 指 令 的 格 式 和 功 能 与 EQU 类 似 。 二者区别:在同一程序中,“=”可以对一个符号重 复定义,EQU不能对同一符号重复定义。
26
三、变量、标号的分析运算和合成运算
例:DATA SEGMENT A DB ‘ABCDEF’ B DW 10 DUP(1,2DUP(2)) C DB 3,20 DUP(0) DATA ENDS ┆ MOV AX,LENGTH A ;1→AX MOV BX,LENGTH B ;10→BX MOV CX,LENGTH C ;1→CX ┆
四章汇编语言程序设计ppt课件

ENDS,ASSUME,END ,…. 保留字:SEGMENT ENDS OFFSET SIZE DB
DW DD MOV PUSH ADD SUB MUL DIV INC DEC LOOP PROC ENDP CALL RET END
类别名
CODE、DATA、STACK(同名同类别段连续存放)
第4章 汇编语言程序设计
伪操作命令之三:段定义伪指令
段寄存器说明伪指令ASSUME
ASSUME 段寄存器名:段名[段寄存器名:段名[…..]]
例:
CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
MAIN:
……
CODE ENDS ENDS MAIN
;指定第一条要执行的指令标号
注:1、该伪指令用于明确用SEGMENT定义的段的类型, 使编译程序能生成目标代码程序。
2、在源程序中,该伪操作放在可执行程序的前面。 3、该指令没有给段寄存器赋予实际的初值。这项工作要通
过写指令来完成,其中代码段不需要赋值。
+、-、*、/、MOD、SHL、SHR 都可应用于数字运算。 +、- 可以用于表示存储器操作数的地址,或两个存储器
单元(同一段内)的地址偏移量之差。 例:SUM - 2
CYCLE - GO
第4章 汇编语言程序设计
运算符之二:逻辑运算符
AND、OR、XOR、NOT 按位的逻辑运算 例:IN AL,PORT_VAL
DATA2 DB 0C1H,36H,9EH,0D5H,20H;加数
DATA ENDS;数据段结束
CODE SEGMENT;定义代码段
第四章-汇编语言程序的设计

第四章汇编语言程序设计本章的汇编语言程序设计的主要容有:汇编语言程序设计概述、汇编语言程序的结构形式、汇编语言的伪指令。
(一个单片机应用系统和其它计算机系统一样,在完成一项具体工作的时候,它要按照一定的次序,去执行操作,这些操作实际上就是由设计人员,以单片机能够接受的指令编制的程序,那么无论计算机也好,单片机也好,实际上编制程序的过程,就是用计算机来反映设计者的编程思想,那么这一章中,我们将向大家介绍怎样使用单片机指令系统来编制一些应用程序。
在介绍之前,我们还是来学习汇编语言的一些基础知识)4.1 汇编语言程序设计概述1、计算机的汇编语言以助记符表示的指令,每一条指令就是汇编语言的一条语句。
(汇编语言程序设计实际上就是使用汇编指令来编写计算机程序。
汇编语言的语句有严格的格式要求)2、汇编语言的语句格式MCS-51汇编语言的语句格式表示如下:[<标号>]: <操作码> [<操作数>]; [<注释>]标号:指令的符号地址,有了标号,程序中的其它语句才能访问该语句。
①标号是由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。
②不能使用汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。
(同一个标号在程序中只能定义一次,不能重复定义;一条语句可以有标号,也可以没有标号,所以是否有标号,取决于程序中是否需要访问该语句。
)操作码:规定语句执行的操作容,操作码是以指令助记符表示的,是汇编指令格式中唯一不能空缺的部分。
操作数:给指令的操作提供数据或地址。
注释:是对语句或程序段的解释说明。
(在单片机中,这四个部分怎么加以区分呢?使用分界符)分界符(分隔符):用于把语句格式中的各部分隔开,以便于编译程序区分不同的指令段。
冒号(:)用于标号之后空格()用于操作码和操作数之间逗号(,)用于操作数之间,分割两个以上的操作数分号(;)用于注释之前。
第四章 80C51汇编语言程序设计

4.2 基本结构程序设计
程序设计的基本结构有:顺序结构、分支结构和循环结构。 4.2.1 顺序结构程序 例4-2 将30H单元的2个BCD码拆开并分别存入到31H和32H 单元中。 解:方法一:先把30H中低4位BCD码交换出来,存入31H 中,再把高4位BCD码交换到低4位存入32H中。
4.2 基本结构程序设计
4.2 基本结构程序设计
ORG 0000H LJMP START ORG 0030H START:MOV R0,#30H MOV A,@R0 INC R0 CLR C SUBB A,@R0 JC BIG2 ADD A,@R0 SJMP NEXT BIG2: MOV A, @R0 NEXT: INC R0 MOV @R0,A SJMP $ END
程序1:用AJMP 和JMP 程序 KEY: MOV DPTR, #TAB; 转移表的首址 MOV A, R2 RL A JMP @A+DPTR TAB: AJMP KEY0 AJMP KEY1 AJMP KEY2 AJMP KEY3 AJMP KEY4 AJMP KEY5 AJMP KEY6 AJMP KEY7 KEY0: …… RET KEY1: …… RET ……
4.2 基本结构程序设计
例:4-10 设计一个延时50ms的程序 DEL :MOV R7, #200 DEL1:MOV R6, #123 NOP DEL2:DJNZ R6, DEL2 DJNZ R7, DEL1 RET
4.2 基本结构程序设计
4.3 子程序设计 例:4-9已知(30H)=x,(31H)=y ,(32H)=f,实现函数 f小于255 f x y
LCALL DL MOV 32H,A MOV A, 31H LCALL DL ADD A, 32H MOV 32H, A SJMP $
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1汇编语言概述语言分机器语言、低级语言、高级语言,机器语言由0和1构成,只有专业人士才能看懂。
低级语言就是汇编语言,用助记符来表示,最贴近机器硬件,它通常被应用在底层,硬件操作和高要求的程序优化的场合。
驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言高级语言分为面向过程和面向对象的语言。
1 顺序结构顺序程序设计,又叫直接程序设计。
它是相对于分支程序和循环程序设计而言的。
因此,可以说顺序程序是既不包含分支,又不包含循环的程序,顺序程序是从第一条指令开始,按其自然顺序,一条指令一条指令地执行,在运行期间,CPU既不跳过某些指令,也不重复执行某些指令,一直执行到最后一条指令为止。
2 分支结构(1).分支程序设计概述分支程序结构可以有两种形式,如图所示(2)分支程序设计分支结构程序设计的关键在于准确地知道操作结果影响的标志位状态和正确地使用条件转移指令。
根据对条件的判断而选择不同的处理方法是人的基本智能体现。
3 循环程序设计1.循环程序设计概述有时我们会需要能按一定规律,多次重复执行的一串语句,这类程序叫循环程序。
循环程序一般由四个部分组成:(1)循环初值部分:这是为了保证循环程序能正常进行循环操作而必须做的准备工作。
循环初值分两类:一类是循环工作部分的初值,别一类是控制循环结束条件的初值。
(2)工作部分:即需要重复执行的程序段。
这是循环的中心,称之为循环体。
(3)修改部分:按一定规律修改操作数地址及控制变量,以便每次执行循环体时得到新的数据。
(4)控制部分:用来保证循环程序按规定的次数或特写条件正常循环。
4.2 汇编语言的语句4.2.1语句分类:汇编语言语句分为指令性语句、伪指令、宏指令。
4.2.2语句格式:[标号] 操作码 [操作数] [注释]汇编语言源程序中的每个语句可以由4项组成,格式如下[name] operation operand [;comment][名字项] 操作项操作数项;注释项下面分别说明各项的表示方法。
1.名字项源程序中用下列字符表示名字:字母:A~Z或a~z;数字:0~9;专用字符号:?、•、@、―、$;一般来讲,名字项可以是标号或变量。
(1)标号:在代码段定义,后面跟冒号:它有三种属性:段、偏移及类型。
①段属性:定义标号的段起始地址,在CX寄存器中。
②偏移属性:16位无符号数。
③类型属性:用来指出该标号是在本段内引用还是在其他段内引用的。
(2)变量:变量在除代码以外的其他段中定义,后面不跟冒号。
它也可以用LABLE或EQU 伪操作来定义。
变量经常在操作数字段出现。
它也有段、偏移及类型三种属性。
①段属性定义变量的段起始地址,此值必须在一个段寄存器中。
②偏移属性变量的偏移地址是16位无符号数,它代表从段的起始地址到定义变量的位置之间的字节数。
在当前段内给出变量的偏移值等于当前地址计数器的值,当前地址计数器的值可以用 $ 来表示。
③类型属性变量的类型属性定义该变量所保留的字节数。
2.操作项操作项可以是指令、伪操作或宏指令的助记符。
3.操作数项操作数项由一个或多个表达式组成,多个操作数项之间一般用逗号分开。
4.注释项注释项用来说明一段程序或一条或几条指令的功能,它是可有可无的。
4.3汇编语言源程序的伪指令段定义伪操作的格式如下:segment-name SEGMENT… segment-name ENDS其中删节号部分,对于DS、ES和SS来说,一般是存贮单元的定义、分配等伪操作;对于代码段则是指令及伪操作此外,还必须明确段和段寄存器的关系,这可用ASSUME伪操作来实现,其格式为:ASSUME assignment,…,assignment其中 assignment 说明分配情况,其格式为:〈段寄存器名〉:〈段名〉其中段寄存器名必须是CS、DS、ES和SS中的一个,而段名则必须是由SEGMENT定义的段中的段名。
4、2、.3 汇编语言源程序的结构汇编语言源程序的程序基本结构是段,一个汇编语言源程序由若干个代码段、数据段、附加段和堆栈段组成。
段之间的顺序可以随意安排,通常数据段在前,代码段在后。
任何可执行汇编语言程序至少要有一个代码段,通常还可能有数据段和堆栈段。
每个段都有段首指令和段结束指令,段的内容介于这两条指令之间。
1.算术运算符算术运算符主要包括+、-、*、/和MOD、[]等。
其中MOD是指除法运算后得到的余数。
语法格式为:expr1[expr2]等价于expr1+expr2。
2.逻辑运算符逻辑运算符主要包括AND、OR、XOR、NOT、SHR及SHL。
逻辑操作符是按位操作的,它只能用于数字表达式中。
3.关系运算符关系运算符主要包括EQ(相等时为真)、NE(不相等时为真)、LT(小于时为真)、GT(大于时为真)、LE(小于或等于时为真)、GE(大于或等于时为真)等6种。
4.数值回送(Value returning)操作符它有TYPE、LENGTH、SIZE、OFFSET、SEG 5种。
这些操作符把一些特征或存储器地址的一部分作为数值回送。
下面分别说明各个操作符的功能。
(1)TYPE格式:TYPE Variable或label如果是变量,则汇编程序将回送该变量的以字节数表示的类型,DB为1,DW为2,DD为4,DQ为8,DT为10。
如果是标号,则汇编程序将回送代表该标号类型的数值:NEAR为-1,FAR为-2。
(2)LENGTH格式为:LENGTH Variable对于变量中使用DUP的情况,汇编程序将回送分配给该变量的单元个数。
而对于其他情况则回送1。
(3)SIZE格式为:SIZE Variable其汇编的值为LENGTH Variable * TYPE Variable,即回送直接分配给该变量的总的字节数。
(4)OFFSET格式为:OFFSET Variable或label汇编程序将回送变量或标号的偏移地址值。
(5)SEG格式为:SEG Variable或label汇编程序将回送变量或标号的段地址值。
5.属性操作符属性操作符主要包括PTR、段操作符、SHORT、THIS、HIGH和LOW 6种。
(1)PTR格式为:type PTR expressionPTR用来建立一个符号地址,但它本身并不分配存储器,只是用来对已分配的存储地址赋予另一种属性,使该地址具有另一种类型。
(2)段操作符:用来表示一个标量、变量或地址表达式的段属性。
例如,用段前缀指定某段的地址操作数MOV AX,ES:[BX+SI]。
可见它是用段寄存器地址表达式来表示的。
(3)SHORT用来修饰JMP指令中转向地址的属性,指出转向地址是在下一条指令地址±127个字节范围之内。
(4)THIS格式为:THIS attribute或type(5)HIGH和LOW称为字节分离操作符,它接收一个数或地址表达式,HIGH取其高位字节,LOW取其低位字节1.4 伪指令构成汇编语言源程序的语句主要包括两类:指令和伪指令。
指令是在程序运行期间有CPU执行的,汇编后由对应的机器代码所取代。
伪指令是不可执行的,它只是在源程序汇编期间由汇编器处理的命令,用来指示汇编器为数据分配内存空间,或者为汇编器提供源程序结束或段定义等信息。
1、变量定义伪指令变量定义伪指令用来为数据分配内存空间,并设置相应内存单元的初始值,其形式为:[变量名] 变量定义符操作数[,…,操作数]变量名是一个符号地址,表示其后操作数的首地址,多个操作数构成一个数组。
变量名是程序员给出的标识符,为可选项,给出变量名只是为了按名存取其对应的内存单元。
变量定义符主要包括下列几种:(1)DB(Define Byte):定义字节,后面的每个操作数占1个字节。
(2)DW(Define Word):定义字,后面的每个操作数占1个字。
(3)DD(Define DWord):定义双字,后面的每个操作数占2个字。
(4)DQ(Define QWord):定义四字,后面的每个操作数占4个字。
(5)DT(Define Tbyte):定义十字节,后面的每个操作数占10个字节。
2、符号定义伪指令符号定义伪指令的基本形式为:符号名 EQU 表达式符号名 = 常数表达式功能:给表达式指定一个等价的符号名。
说明:(1)=后的表达式只能是常数,对于字符或字符串,在汇编时按整数处理。
(2) EQU后的表达式可以是数值、字符串,甚至可以是寄存器名、指令的助记符等。
(3) EQU不能重复定义,而“=”伪指令可以重复定义,其作用域从定义点到重新定义之前。
3、段定义伪指令汇编语言源程序由一个段或多个段组成,多数程序采用一个代码段、一个数据段和一个堆栈段。
段定义由SEGMENT与ENDS伪指令实现,基本形式如下:段名 SEGMENT [STACK]〈语句序列〉段名 ENDS4、程序开始和结束伪操作在程序的开始可以用NAME或TITLE为模块的名字,NAME的格式是:NAME module_name作为模块的名字。
如果程序中没有NAME 伪操作,则也可使用TITLE伪操作,其格式为:TITLE text1、5 宏指令与条件汇编1.宏定义和宏调用宏是源程序中一段有独立功能的程序代码。
它只需要在源程序中定义一次,就可以我次调用它,调用时只需要有一个宏指令语句就可以了。
宏定义是用一组伪操作来实现的。
其格式是:macro name macro [dummy parameter list]┇ (宏定义体)ENDM经宏定义定义后的宏指令就可以在源程序中调用。
这种对宏指令的调用称为宏调用,宏调用的格式是:macro name [actual parameter list]当源程序被汇编时,汇编程序将对每个宏调用作宏展开。
宏展开就是用宏定义体取代源程序中的宏指令名,而且有实元取代宏定义中的哑元。
4.4完整汇编语言的上机过程4.4.1有输入输出的程序上机过程:后面DOS功能调用中的内容用编辑器EDIT或记事本输入源程序,存为*.ASM用MASM汇编*.ASM,生成*.OBJ,若有错误,根据错误再次调试用LINK 链接*.OBJ,生成*.EXE,直接运行*.EXE4.4.2无输入输出的程序上机过程:用编辑器EDIT或记事本输入源程序,存为*.ASM用MASM汇编*.ASM,生成*.OBJ,若有错误,根据错误再次调试用LINK 链接*.OBJ,生成*.EXE运行DEBUG,反汇编*.EXE,到源程序-U,用-T,-G,运行就可以了。
4.5汇编语言程序设计4.5.1 顺序结构顺序程序设计,又叫直接程序设计。
它是相对于分支程序和循环程序设计而言的。
因此,可以说顺序程序是既不包含分支,又不包含循环的程序,顺序程序是从第一条指令开始,按其自然顺序,一条指令一条指令地执行,在运行期间,CPU既不跳过某些指令,也不重复执行某些指令,一直执行到最后一条指令为止。