第4章 汇编语言语法

合集下载

微机原理与应用-04 汇编语言

微机原理与应用-04 汇编语言

例:把片外RAM2200H单元中的数送入片内70H单元中。
BEGIN:MOV
MOV MOVX MOV
13
DPTR,#2200H ;(DPTR)=2200H
R0,#70H A,@DPTR @R0,A
南京航空航天大学机电学院机械电子工程系 2005年
《微机原理及应用》课件
1、标号字段
后必跟“ :”号; 首字符必是字母,由1~8个ASCII 码 字符组成; 同一标号在一个程序中只能定义一次; 不能使用指令助记符、伪指令、寄存器 的符号名称; 一条语句的标号可有可无,取决于本程 序的其他语句是否访问该条语句。
《微机原理及应用》课件
(2) 机器汇编
汇编语言 源程序
汇编
机器语言 目标程序
汇编程序

用机器汇编,方便快捷,并能在汇 编过程中发现语法错误。
8
南京航空航天大学机电学院机械电子工程系 2005年
《微机原理及应用》课件
Medwin汇编环境示例
9
南京航空航天大学机电学院机械电子工程系 2005年
《微机原理及应用》课件
《微机原理及应用》课件
2. 汇编语言


面向机器的符号语言,指令用助记符表示; 指令直接访问CPU的寄存器、存储单元和 I/O端口,响应速度快,程序的存储空间 利用较高; 汇编语言是面向机器的语言,因此使用者 必须对机器的硬件结构和指令系统比较熟 悉。
5
南京航空航天大学机电学院机械电子工程系 2005年
33
南京航空航天大学机电学院机械电子工程系 2005年
《微机原理及应用》课件
(2)子程序的参数传递
a. 利用寄存器(R0~R7和A)传递参数

第4章 指令系统(三)

第4章 指令系统(三)
在程序的开始可以用NAME或TITLE为模块取名字,NAME的格式是:
NANEmodule_name
汇编程序将已给出的module_name作为模块的名字。如果程序中没有NAME伪操作,则也可使用TITLE伪操作,其格式为:
TITLEtext
TITLE伪操作可指定每一页上打印的标题。同时,如果程序中没有使用NAME伪操作,则汇编程序将用text中的前六个字符作为模块名。Text最多可有60个字符。如果程序中既无NAME又无TITLE伪操作,则将用源文件名作为模块名。所以NAME及TITLE伪操作并不是必要的,但一般经常使用TITLE,以便在列表文件中能打印出标题来。
表示源程序结束的伪操作的格式为:
END[label]
其中标号指示程序开始执行的起始地址。如果多个程序模块相连接,则只有主程序要使用标号,其他子程序模块则只用END而不必指定标号。例4.4.8给出求两数之和的绝对值的程序实现,其中用TITLE给出标题,用END START表示程序结束。汇编程序将在遇END时结束汇编,而程序则将从START开始执行。
(4)DQ伪操作用来定义字,其后的每个操作数占有四个字。
(5)DT伪操作用定义十个字节,其后的每个操作数占有十个字节,形成压缩的BCD码。
操作数(operand)字段可为:1)数值表达式;2)ASCII字符串;3)地址表达式;4)?;5)操作数字段还可以使用复制操作符(duplication operator)来复制某个(或某些)操作数。其格式为:
(2)数值回送(Value_retuning)操作符
它有TYPE、LENGTH、SIZE、SEG五种。这些操作符把一些特征或存储器地址的一部分作为数值回送。下面分别说明各个操作符的功能。
1) TYPE

第4章 TMS320C54xDSP寻址方式

第4章 TMS320C54xDSP寻址方式

第4章 TMS320C54xTM DSP汇编语言与混合编程 (2) MVDK 语 法:助记符方式 MVDK Smem,dmad 执行过程:(dmad)→EAR if (RC)≠0 Then (Smem)→通过EAR寻址的Dmem (EAR)+1→EAR Else (Smem)→通过EAR寻址的Dmem 该指令不会影响任何状态位。
第4章 TMS320C54xTM DSP汇编语言与混合编程
功能描述:把一个单数据存储器操作数Smem的内容复制 到一个通过dmad(地址在EAB地址寄存器EAR中)寻址的数 据存储器单元。可以循环执行该指令来转移数据存储器中 的连续字。
第4章 TMS320C54xTM DSP汇编语言与混合编程 例4.32 MVDK DAT10,8000H
一条指令中可对两种立即数编码, 一种是短立即数(3、5、8或9位),短立即数指令编码 为一个字长。 另一种是16位的长立即数,16位立即数的指令编码为两 个字长。
第4章 TMS320C54xTM DSP汇编语言与混合编程
支持立即数的指令
3位或5位立即数 8位立即数 9位立即数 16位立即数 ADD ADDM AND ANDM BITF CMPM LD MAC OR ORM RPT RPTZ ST STM SUB XOT XORM lK
第4章 TMS320C54xTM DSP汇编语言与混合编程 * 直接寻址 指令中的7 bit是一个数据页内的偏移地址,而 所在的数据页则由数据页指针DP或SP决定,该偏移值加上DP 和SP的值决定了在数据存储器中的实际地址; * 间接寻址 按照辅助寄存器中的地址访问存储器; * 存储器映射寄存器寻址 通过寻址存储器映射寄存器实现 寻址; * 堆栈寻址 把数据压入和弹出系统堆栈。

第4章8086,8088微机汇编语言程序设计

第4章8086,8088微机汇编语言程序设计

2)段内偏移量(Offset) 它是标号与段起始地址之间相距的字节数,为一16位 无符号数。 3)类型(Type) 类型表示该标号所代表的指令的转移范围,分NEA R(近)与FAR(远)两种。NEAR类型的标号仅在 同一段内使用,用2字节指针给出转移的偏移量属性(即 只改变IP值,不改变CS值);而FAR类型的标号无此限 制,必须用4字节指针指出转移的段地址与段内偏移量。 当标号用作JMP或CALL等指令的目标操作数时,若 为段内转移或调用则采用NEAR类型;若为段间转移或 调用则应当采用FAR类型。 JMP FAR PTR LINE
第4章 8086/8088汇编语言程序设计
汇编语言程序设计是开发微机系统软件的基本 功,在程序设计中占有十分重要的地位。
由于汇编语言具有执行速度快和易于实现对硬件的控 制等独特的优点,所以至今它仍然是用户使用得较多的程 序设计语言。特别是在对于程序的空间和时间要求很高的 场合,以及需要直接控制设备的应用场合,汇编语言更是必 不可少了。 由于汇编语言本身的特点,本章将选择目前国内广泛 使用的IBM PC机作为基础机型,着重讨论8086/8088汇编 语言的基本语法规则和程序设计的基本方法,以掌握一般 汇编语言程序设计的初步技术。
(1)立即操作数 立即操作数在指令中直接给出,不需要使用 寄存器,也不涉及访问数据区的操作,只能作为 源操作数。立即操作数是整数,可以是1字节或 2字节。在汇编语言中,立即操作数用常量(包 括数值常量和符号常量)以及由常量与有关运算 符组成的数值表达式表示。 如:MOV BX,1000+5*3 (2)寄存器操作数 通用寄存器AX、BX、CX、DX、BP、 SP、DI、SI以及段寄存器CS、SS、D S、ES都可以作为操作数。如:MOV BX,AX

第4章 汇编 语言程序设计

第4章  汇编 语言程序设计

DJNZ R1,LOOP ;R1减1不为零,则跳LOOP处 NOP
HERE:SJMP
HERE
上述4个字段应该遵守的基本语法规则如下。
10
1.标号字段
语句所在地址的标志符号,才能被访问。如标号 “START”和“LOOP”等。有关标号规定如下: (1)标号后必须跟冒号“:”。 (2)标号由1~8个ASCII码字符组成,第一个字符必须是
8
汇编语言语句是符合典型的汇编语言的四分段格式:
标号字段 (LABLE) 操作码字段 (OPCODE) 操作数字段 (OPRAND) 注释字段 (COMMENT)
标号字段和操作码字段之间要有冒号“:”分隔; 操作码字段和操作数字段间的分界符是空格; 双操作数之间用逗号相隔;
操作数字段和注释字段之间的分界符用分号“;”。
表示的机器语言程序,才能识别和执行。
完成“翻译”的程序称为汇编程序。经汇编程序“汇编”得 到的以“0”、“1”代码形式表示的机器语言程序称为目标 程序。
5
优点:用汇编语言编写程序效率高,占用存储空间小,运行 速度快,能编写出最优化的程序, 缺点:可读性差,离不开具体的硬件,是面向“硬件”的语 言通用性差。 2.高级语言
功能是把P1.6的位地址赋给变量QA。
4.2
汇编语言源程序的汇编
“汇编”?汇编可分为手工汇编和机器汇编两类。
22
4.2.1
手工汇编
通过查指令的机器代码表(表3-2),逐个把助记符指令 “翻译”成机器代码,再进行调试和运行。 手工汇编遇到相对转移偏移量的计算时,较麻烦,易出 错,只有小程序或受条件限制时才使用。实际中,多采用“ 汇 编程序”来自动完成汇编。
16
重叠。例如:
ORG …… ORG …… ORG …… 2000H 2500H 3000H

汇编语言程序设计(5)

汇编语言程序设计(5)
15
例:
第 4 章 汇编语言程序设计简介
ORG 1000H
BUF1: DB 38H, 7FH, 80H
BUF2: DB 45H, 66H
ORG伪指令指定了标号BUF1的地址为1000H, 而DB伪 指令是将其后的二进制数表38H, 7FH, 80H依次存放在1000H, 1001H, 1002H 3 个连续单元之中, BUF2也是一个标号, 其地 址与前一条伪指令连续, 即1003H, 1004H地址单元中依次存 放 45H, 66H。
如果在程序中要多次使用到某一地址,由EQU指令将其赋值 给一个字符名称,一旦需要对其进行变动,只要改变EQU命 令后面的数字即可,而不需要对程序中涉及到该地址的所有 指令逐句进行修改。
13
第 4 章 汇编语言程序设计简介
注意, 由EQU等值的字符名称必须先赋值后使用,且 在同一个源程序中,同一个标号只能赋值一次。 例:
H)=10H。
18
第 4 章 汇编语言程序设计简介
六、BIT——位地址符号指令
指令功能为:将位地址赋值给指定的符号名称,通常用于位符 号地址的定义。
指令如下:
字符名称 BIT 位地址
例如,X1 BIT P1.0
汇编结果为将位地址P1.0赋给变量X1,即在程序中便可 使用X1代替位地址P1.0。
19
(c)多分支
30
第 4 章 汇编语言程序设计简介
2. 一般分支程序结构实例
【例5】 x, y均为8位二进制数, 设 x存入R0, y存入R1, 求解:
1 y 1
0
x0 x0 x0
31
第 4 章 汇编语言程序设计简介
程序如下:
START:
CJNE R0,#00H,SUL1

第4章 STC单片机汇编语言编程

第4章  STC单片机汇编语言编程

【例4.2】
AD1
EQU 30H
DAT1 MOV
EQU 40H A, #DAT1 ;(A)←40H
MOV AD1,A
;(30H)←A
• 本指令是对符号定义的主要伪指令。在这个例子中,程序中使用到的符 号AD1、DAT1,在汇编时都会被EQU右面的数据所代替。
单片机原理与接口技术————基于STC15系列的51单片机原理
因此,一个源程序只能有一个END语句,而且必须放在整 个程序末尾。
单片机原理与接口技术————基于STC15系列的51单片机原理
第3章 STC15单片机的指令系统
三、伪指令
3.赋值命令 EQU
用于给它左边的“字符名称”赋值,其格式为: 字符名称 EQU 赋值项 赋值后的字符名称既可以作为地址使用,也可以作立即数使用。
第3章 STC15单片机的指令系统
三、伪指令
1.设置起始地址ORG
• 指令格式: [标号:] ORG 地址 • 指明程序和数据块起始地址。汇编过程中,汇编程序将该语句
的后续目标程序按ORG后面的16位地址或标号存入相应存储单 元。ORG伪指令总是出现在每段源程序或数据块的开始。如果 不用ORG指令,则汇编将从0000H单元开始存放目标程序。
ORG伪指令规定了START代表地址1000H,目标程序的第一条指令从1000H开 始存放。
注意,用ORG定义空间地址在源程序中,应由小到大,不能重叠。
单片机原理与接口技术————基于STC15系列的51单片机原理
第3章 STC15单片机的指令系统
三、伪指令
2.汇编终止END
• END是汇编语言源程序的结束标志,用来终止汇编工作。 • 在机器汇编时,汇编程序对END后面的指令都不予汇编。

第04章 汇编语言程序设计 39页 0.2M PPT版

第04章 汇编语言程序设计 39页 0.2M PPT版

MOV AL,10100000B OR 00000101B ;(AL)←10100101B
例4-4 关系运算符的应用
MOV AX,5 EQ 101B ;(AX)←0FFFFH
MOV BH,10H GT 16 ;(BH)←0
例4-5 数值返回运算符的应用
K1 DB 30H,31H,32H
K2 DW 4041H,4043H
(4)STACK
(5)MEMORY
(6)AT表达式
4. 类别名
返回
4.2.4 段寻址伪指令
格式:
ASSUME 段寄存器名:段名,段寄存器名:段名,……
例4-15 求从NUM开始的12个无符号字节数的和,结果放在SUM字单元中。
DATA SEGMENT NUM DB 95H,83H,36H,2DH DB 33H,22H,1AH,34H DB 62H,45H,75H,49H SUM DW ?
例4-13
STR1 DB ‘COMPUTER’ ;定义一个字符串,字符串的首地址为STR1 STR2 DW ‘AA’,‘BC’,‘DE’ ;给两个字符组成的字符串分配两个字节存储单元 DATA DW ?,?,? ;为DATA预留6个存储单元
例4-14
DATA1 DB 20 DUP(?) ;为变量DATA1分配20个字节的空间,初值为任意值 DATA2 DW ? ;为变量DATA2分配2个字节的空间,初值为任意值 DATA3 DB 20 DUP(30H) ;为变量DATA3分配20个字节的空间,初值均为30H
K3 DW 20H DUP(0)
K4 DD 50515253H
MOV AL,TYPE K1 ;等效于MOV AL,1
MOV AH,TYPE K2 ;等效于MOV AH,2

第四章汇编语言语法

第四章汇编语言语法

LABEL FAR MOV AX,[SI] ,
3、段定义伪指令语句 、 SEGMENT…ENDS (1)段结构定义伪指令语句 SEGMENT ENDS 指令格式: 指令格式: 段名 逻辑段内容 段名 ENDS SEGMENT 定位类型 组合类型 分类名’ ‘ 分类名 ’
功能:将一个逻辑段的内容定义成一个整体。 功能:将一个逻辑段的内容定义成一个整体。 4种定位类型:PARA、BYTE、WORD和PAGE 种定位类型:PARA、BYTE、WORD和 6种组合类型:NONE、PUBLIC、COMMON、AT、STACK和MEMORY 种组合类型:NONE、PUBLIC、COMMON、AT、STACK和 (2)段分配伪指令语句 指令格式: CS:段名,DS:段名,SS:段名,ES: 指令格式:ASSUME CS:段名,DS:段名,SS:段名,ES:段名 功能:定义当前有效的4个逻辑段,指明段和段寄存器的关系。 功能:定义当前有效的4个逻辑段,指明段和段寄存器的关系。
1、数据定义伪指令语句 共有五条: DB、 DW、 DD、 DQ和 DT, 分别用来定义字节、 共有五条 : DB 、 DW 、 DD 、 DQ 和 DT , 分别用来定义字节 、 字 、 双 字、8字节和10字节。 字节和10字节。 10字节 指令格式: 指令格式:
变量名 变量名 助记符 助记符 操作数1 操作数2 操作数n 操作数1,操作数2,……操作数n 操作数 n ;注释 DUP(操作数1 操作数2 操作数n DUP(操作数1,操作数2,……操作数n) ;注释 操作数
第4章 汇编语言语法和 章 汇编语言语法和DOS功能调用 功能调用
4.1 汇编语言程序的格式 例4-1 试求小于100的所有非零偶数,并把结果存入以BUFF开始 的内存区。 1 2 3 4 5 MY_DATA SEGMENT BUFF DB 50 DUP(?) MY_DATA ENDS MY_CODE SEGMENT ASSUME CS:MY_CODE, DS: MY_DATA 6 START: MOV AX, MY_DATA 7 MOV DS, AX ; 定义数据段 ; 设置缓冲区 ; 定义数据段结束 ; 定义代码段 ; 规定CS和DS的内容 ; DS初始化为MY_DATA

单片机汇编语言程序设计

单片机汇编语言程序设计

4.1.2 汇编语言源程序的设计步骤 汇编语言源程序的设计过程的一般步 骤是: 分析任务 当我们要编写某个功能的应用程序时, 首先应该详细分析给定的任务。明确 哪些是任务所提供的基本条件,哪些 是任务要解决的具体问题,哪些是任 务所期望的最终目标。
4.1.2 汇编语言源程序的设计步骤
确定算法 任务明确之后,下一步就是确定解决问题的 方法。将给定的任务转换成计算机处理模式, 即通常所说的算法。对于较复杂的任务,需 要先用数学方法把问题抽象出来。往往同一 个数学表达式可以用多种算法实现,我们应 综合考虑寻找出其中的最佳方案,使程序所 占内存小,运行时间短。 画程序流程图 画流程图是把所采用的算法转换为汇编语言 语言程序的准备阶段,选择合适的程序结构, 把整个任务细化成若干个小的功能,使每个 小功能只对应几条语句。
4.3.1 顺序程序设计 【例4-6】
程序清单之二(采用DPTR当基址寄存器):
【例4-5】将片内RAM 30H的中间4位,31H的 低2位,32H的高2位按序拼成一个新字节,存 入33H单元。 分析:需要灵活掌握逻辑操作指令,对存储单 元的所需位进行保留,并移到字节中正确位置, 最后将相应位合并在一个字节。 ORG 0000H LJMP START ORG 0100H START: MOV A,30H ANL A,#3CH ;保留30H的中间4位原值,
4.2 汇编语言伪指令
8、BIT 位地址符号伪指令 格式:字符名称 BIT 位地址 功能:用规定的字符名称表示位地址。 例如: X0 BIT P1.0 X1 BIT 30H 经汇编后,P1口的第0位地址赋给X0, 位地址30H赋给X1。在程序中可以分别 用X0、X1代替P1.0和位地址30H。
4.3 简单程序设计

第4章 汇编语言程序设计

第4章 汇编语言程序设计

例: 三字节无符号数相加,其中被加数在内部RAM 的50H、51H和52H 单元中;加数在内部RAM的53H、 54H和55H单元中;要求把相加之和存放在50H、 51H和52H单元中,进位存放在位寻址区的00H位中。
内部RAM
50H 51H 52H
高字节 低字节
53H 54H 55H
R1→55H
结 束
常用程序结构:
顺序程序、分支程序、循环程序。
4-3
顺序程序
顺序程序又称简单程序,程序走向只有一条路径。 例:双字节求补程序(设数据在R4R5中): 开 始 CLR C MOV A,R5 ;取低字节 处 理 CPL A ADD A,#01H ;低字节变补 处 理 MOV R5,A MOV A, R4 ;取高字节 处 理 CPL A ADDC A,#00H ;高字节变补 结 束 MOV R4,A
片内 RAM 42H 0 十 41H 0 个 40H 十 个
4 -- 4
分支程序(参见书P49-57)
分支程序就是在程序执行过程中要判 断某些条件,当条件成立后程序转移到不 同的功能处运行。在MCS-51单片机中条件 转移指令都可以用在分支程序中。 (复习、参见书P38---39) (1)测试条件符合转移,如: JZ、JNB …等
汇编的主要任务:
1)确定程序中每条汇编语言指令的指令机器码。 2)确定每条指令在存储器中的存放地址。 3)提供错误信息。 4)提供目标执行文件(*.OBJ/*.HEX)和 列表文件(*.LST)。
一、汇编语言指令类型:
1. 机器指令: 指令系统中的全部指令,每条指令有对应的机器代码。 2. 伪指令: 汇编控制指令,仅提供汇编信息,没有指令代码。
在源程序中只能有一条END指令

微机原理第04章4子程序

微机原理第04章4子程序

mov ah,9
;;宏定义体
lea dx,message
int 21h
endm

dispmsg string ;宏调用(宏指令)

1 mov ah,9
;宏展开
1 lea dx,string
1 int 21h
第4章:宏与比子程序的比较


子程序
仅是源程序级的简化: 宏调用在汇编时进行 程序语句的展开,不 需要返回;不减小目 标程序,执行速度没 有改变
第4章:例4.16 显示以“0” 结尾字符串的嵌套子程序
msg
;数据段 db 'Well, I made it !',0 ;代码段(主程序) mov si,offset msg ;主程序提供显示字符串 call dpstri ;调用子程序
第4章:例4.16 子程序
;子程序dpstri:显示DS:SI指向的字符串(以0结尾)
第4章:4.6 子程序设计
把功能相对独立的程序段单独编写和调 试,作为一个相对独立的模块供程序使 用,就形成子程序
子程序可以实现源程序的模块化,可简 化源程序结构,可以提高编程效率
主程序(调用程序)需要利用CALL指令 调用子程序(被调用程序)
子程序需要利用RET指令返回主程序
第4章:4.6.1 过程定义和 子程序编写
dpstri proc
push ax
dps1: mov dl,[si] ;取显示字符
inc si
cmp dl,0
;是结尾,则显示结束
jz dps2
call dpchar ;调用字符显示子程序
jmp dps1
dps2: pop ax ret
dpstri endp

计算机组成与工作原理电子教案第4章

计算机组成与工作原理电子教案第4章

4.2 计算机软件执行过程与设计方法
4.2. 1 解决问题的逻辑方法 在计算机中,为了解决一个问题,程序需要执行一系列的步骤, 这个解决问题的步骤序列就称作算法,即算法是指解决问题的方法和步骤。
算法的目的是要将解决问题的方法与步骤的逻辑描述清楚,所以,
表示算法的方法很多,常用表示方法有:文字描述、流程图、伪代码等。
4.2 计算机软件执行过程与设计方法
2.使用流程图表示算法
流程图是指利用标准的图形符号来描述程序处理的步骤,其特点 是直观易读。使用流程图表示算法直观、清晰,因此在程序开发中被广泛 使用。流程图包括一个基本符号集合,其中每个符号表示算法中指定类型 的操作,如下表所示。
图形符号 名称 起止框 说明 表示一个算法的开始或结束
中等职业学校教学用书(计算机技术专业)
《计算机组成与工作原理 》 电子教案
主 编 刘晓川
第4章 使用软件控制计算机工作
4.1 计算机语言与软件 4.2 计算机软件执行过程与设计方法
4.1 计算机语言与软件
4.1.1 计算机语言
程序设计语言一般可分为机器语言、汇编语言和高级语言三类。 (一) 机器语言 机器语言是计算机的中央处理器可以直接识别并执行的语言。机器语言是以0或1二 进制代码表示的指令集合,其特点是程序执行效率高,但通用性差,直观性差,并且难懂、 易错。 (二) 汇编语言 汇编语言是用较直观、容易记忆和书写的助记符表示二进制指令的操作码及操作数, 又称作符号语言。汇编指令与机器指令基本上是一一对应的。 (三) 高级语言 高级语言是独立于具体的计算机硬件、接近于人类的自然语言(英语)和数学语言 符号的程序设计语言。用高级语言编写的程序称作源程序,计算机不能直接识别和执行,必 须经过语言处理程序翻译成机器语言程序(又称作目标程序),才能为计算机所执行,有两 种翻译方式:编译方式和解释方式。

单片机 第四章 80C51单片机汇编语言程序设计

单片机 第四章 80C51单片机汇编语言程序设计

(1)绝对调用指令:ACALL addr11 (2)长调用指令:LCALL addr16
(后续)
4.2.4 子程序设计
3.注意设置堆栈指针和现场保护 4.最后一条指令必须是RET指令 5.子程序可以嵌套,即子程序可以调用子程序
(接上)
6.在子程序调用时,还要注意参数传递的问题
子程序的基本结构
MAIN: ┇ ;MAIN为主程序或调用程序标号 ┇ LCALL SUB ;调用子程序 ┇ SUB:PUSH PSW PUSH ACC ;现场保护 ;
过程B
是 出口 (c) 循环结构
出口 (b) 分支结构
4.2.1
顺序程序结构
是汇编语言程序的最简单也是最基本的程序结 构。程序执行时一条接一条地按顺序执行指令, 无分支、循环以及调用子程序。 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A , #30H ADD A , #58H MOV 30H , A SJMP $
二、定时程序 (2)多重循环定时程序(单片机频率为6MHz) 例 MOV R5,#TIME1 LOOP2: MOV R4,#TIME2 ;单周期指令 LOOP1: NOP ;单周期指令 NOP DJNZ R4,LOOP1 ;双周期指令 DJNZ R5,LOOP2 ;双周期指令 RET 公式: 循环体时间=(TIME2*4+2+1)*TIME1*2µs 总时间=循环体时间+4µs
机器编辑->交叉汇编->串行传送
(过程图见教材92页)
单片机的开发过程
设计硬件 软件编程 软件仿真调试 源代码烧入单片机 插入单片机脱机工作 模数电路/单片机硬件 MCS51汇编语言/C
计算机/MEDWIN环境

第4章. 8086 8088汇编语言程序设计_软件调试技术

第4章. 8086 8088汇编语言程序设计_软件调试技术
27
4.4 软件调试技术
例10:将利用DOS功能2 显示字符a的一段小程序汇编到 2180: 100H开始的内存中。
由于A命令不支持字符方式,当在0102地址后输入指令 MOV DL, ’a’ 后,显示出错信息,然后仍然提示当前汇编地址 2180: 0102,此时可重新输入指令 MOV DL,61,其中61H为a的 ASCII码。
1上海交通大学网络学院2theprincipleapplicationofmicrocomputer微机原理与应用王春香副教授wangcxsjtueducn3主要内容41程序设计语言概述4280868088汇编语言的基本语法4380868088汇编语言程序设计基本方法44软件调试技术章第四章汇编语言程序设计4掌握软件技术不仅应具有很强的抽象能力分析能力与综合能力还应具有较强的调试能力及排错能力
标志寄存器各标志位的显示字符
标志位 溢出位 方向位 中断位 符号位 零值位 辅助进位位 奇偶位 进位位 置位 OV DN EI NG ZR AC PE CY 复位 NV UP DI PL NZ NA PO NC
OF DF IF SF ZF AF PF CF
18
4.4 软件调试技术
例5:-r ;显示CPU内所有寄存器内容和标志位状态
30
4.4 软件调试技术
4.4.1 调试软件
常用的DEBUG命令。 8. 指定文件名命令 格式:N文件名及扩展名 指出即将调入内存或从内存中存盘的文件名。 这条命令要配合L或W命令一起使用。
31
4.4 软件调试技术
4.4.1 调试软件
常用的DEBUG命令。 9. 装入命令 格式1:L起始地址 驱动器号 起始扇区 扇区数
4.4.1 调试软件
常用的DEBUG命令。 10. 写磁盘命令 格式1:W起始地址 驱动器号 起始扇区 扇区数

微机原理及运用第4章

微机原理及运用第4章

关系运算的操作数也必须为数字操作数。当关系成立时, 其结果为全 1;当关系不成立时,其结果为全 0。 汇编语言中的表达式不能构成单独语句, 只能是语句的 一个部分, 例如: MOVAX, BUF+2
ADDAL, VAL AND 0FH
JMPAGAIN+3 MOVBL, VB LE VA
4.1汇编语言基本概念
4.1.1汇编语言与机器语言
我们已经学过高级语言,例如BASIC语言或FORTRAN 语言,无论哪种语言,它都规定了一系列用于编写程序的语 句和应该遵循的语法规则。人们根据一种语言给定的语句及 其语法规则就可以写出程序,计算机则通过执行已编好的程 序来完成人们要求它完成的各种复杂功能。汇编语言也一样, 根据汇编语言的语句及其语法规则可以写出汇编语言程序。 但汇编语言与高级语言有较大的区别,汇编语言中的语句与 机器的种类和型号密切相关。
部分, 汇编时不形成任何目标码。注释必须以分号“;”开 头。 它可以作为语句的一个部分,也可以作为一个单独的语 句。
4.1.3汇编语言中的常数与表达式
1. 常数 常数可以分数值常数和字符串常数两类。数值常数按其 基数的不同,可以有二进制数、八进制数、十进制数、十六 进制数等几种不同的表示形式, 汇编语言中采用不同的后缀 加以区分。 B: 表示二进制数。 例如, 10110011B。
表示一条指令的这些字符常称为助记符。 我们必须指出, 采用助记符写出的程序,机器是不能直接执行的,因为上面 我们已经指出, 处理器在设计时是按二进制指令码考虑的。 所以,采用汇编语言编写的程序在执行前还必须将其“翻译” 成机器语言。通常将采用助记符指令写成的程序,称为源程 序,将它翻译成的机器语言程序称为目标程序。将汇编语言 的源程序翻译成目标程序的过程称为汇编过程或简称汇编。 汇编过程通常是由计算机完成的。它是通过执行一个专门完 成汇编的软件——称为汇编程序来实现的。既然写出的源程序 要由汇编程序将其翻译后才能执行,所以,我们编写的源程 序必须符合汇编程序的一系列要求或者规则,只有这样,你 的程序才能被正确地“翻译”。

第4章 汇编语言程序格式

第4章 汇编语言程序格式

WORD——从字边界(偶数地址)开始
DWORD——从双字边界(4的倍数地址)开始 PAGE——从低8位物理地址为0处开始
(2) 组合类型(combine_type)说明程序连接时的段合并方法,可以是:
PRIVATE——私有段,不与其它模块中的同名段合并——默认值 PUBLIC——公有段,连接时与其它模快中的同名段合并成一个段
4.2.1 处理机选择伪操作
.8086 . 286 . 286P . 386 . 386P 选择8086指令系统 选择80286指令系统 选择保护模式下的80286指令系统 选择80386指令系统 选择保护模式下的80386指令系统
. 486
. 486P . 586
选择80486指令系统
选择保护模式下的80486指令系统 选择Pentium指令系统
CS:CSEG,DS:DATAGROUP
START:MOV MOV ……
AX,DATAGROUP DS,AX
4.3.3 程序开始和结束伪操作
1. 开始伪操作
在程序的开始可以用NAME或TITLE作为模块的名字,NAME的格式是: NAME 模块名
如果程序中没有使用NAME伪操作,则也可使用TITLE,其格式为: TITLE text
例4.2 .MODEL SMALL .STACK 100h .DATA 例4.3 .MODEL SMALL .STACK 100h .CONST …… .DATA …… AX,@DATA DS,AX .CODE START: MOV AX,DGROUP
……
.CODE START: MOV MOV …… MOV INT END AX,4C00H 21H START
③ uninitialized data

第四章 程序设计

第四章  程序设计

…………
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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
将代码和数据汇编到指定的位置。
在存储器中为未初始化的变量保留存储空间。 控制列表的方式。 初始化存储器 汇编条件块。 定义全局变量。 为汇编器指定可以获得宏的库 检查符号调试信息
段定义伪指令
.bss
.data .sect .text
在该段中保留若干字
汇编入已初始化的数据段
访问宏库
用伪指令.mlib来访问宏库,其语法为: .mlib macro library filename
当汇编器识别到该伪指令时,就打开 该宏库,并建立该宏库内容的表
第4章 TMS320C54x汇编语言程序设计
4.2 程序设计的基本方法:以小数乘法为例
在定点DSP芯片中,采用定点数进行数值运算时, 若操作数采用整型数,则DSP芯片给定的字长(一般 16位)决定了整型数的最大范围。
通常,定点DSP采用小数乘法。其原因:
① 乘法器为17位,对于大于16位的数据难以实现 乘法递推,且乘积占用存储资源大; ② 小数乘法时,既可以存储32位乘积,也可以存 储高16位乘积,可用较少的资源保存结果;
③ 小数乘法便于乘法递推。
第4章 TMS320C54x汇编语言程序设计
1. 数的定标 采用小数运算时,设定小数点在16位中的位置 称为定标。 小数点在16位数中的位置不同,可以表示不同 大小和不同精度的小数。 数的定标通常有Q表示法,如Q0,Q1,…,Q15。 Q越大,可以表示的数的范围越小,但精度越高。
0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 (-0100)
1 1 1 0 1 0 0 (-0.1875)
第4章 TMS320C54x汇编语言程序设计
3. 小数乘法与冗余符号位

积: -0.1875 = 1110100
7位二进制
扩展8位后,乘积:11110100 = -0.09375 出错原因:两带符号数相乘,其结果带有2个符号位。 解决办法:运算结果左移一位,消去多余符号位。 可通过对FRCT位置1,乘法器自动将乘积 结果左移一位。 S x x x (Q3格式) 如: 11110100 × S y y y (Q3格式) 左移1位: 11101000 结果: -0.1875 S S z z z z z z (Q6格式)
使用“#”符号作为操作数的前缀; 使用“*”符号作为操作数的前缀; 使用“@” 符号作为操作数的前缀。

表达式
表达式是一个常数、符号、或用算
术运算符连接起来的常数或符号。 表达式的值的范围为-32768到32767
伪指令(Assembler Directives)
伪指令为程序提供数据、控制汇编过程。 所作的工作包括:
助记符
助记符不允许从第一列开始,否则
被认为是语句标号。
助记符可以是机器指令(如ABS,
MPYU , SPH 等 ) 、 伪 指 令 ( 如 .data, .list, .set 等 ) 、 宏 指 令 (如.macro, .var, .mexit等)和宏调用。
操作数
操作数可以是常数、符号或表达式。 当操作数多于一个时,用逗号分开。
选项,作为.macro伪指令
的操作数 Model statements 每次调用宏时执行的 指令或伪指令 .endm 终止宏定义
定义宏举例
* add3 p1, p2, p3 * p3 = p1 + p2 + p3 add3 .macro p1, p2, p3 ld p1,a add p2,a add p3,a stl a,p3 .endm
汇编程序语法
TMS320 的 汇 编 程 序 包 含 汇 编 指 令 (伪指令,assembler directives)、 汇编语言指令(assembly language instructions ) 、 宏 指 令 ( macro directives)和注释(comments)。
汇编程序语法
(1)在源文件或.include/.copy文件中定义
(2)在宏库中定义
定义宏
macname .macro [parameter]
model statements [.mexit] .endm
定义宏
宏的名字 .macro 是一个伪指令,确认源语句为 宏定义的第一行
macname
[parameters]
汇编语言程序以.asm为扩展名,可以用任 意的编辑器编写源文件。一条语句占源程序的 一行,长度可以是源文件编辑器格式允许的长 度,但汇编器每行最多读200个字符。因此, 语句的执行部分必须限制在200个字符以内。
C54的指令既可以是助记符方 式,也可以是代数式方式
助记符方式汇编程序语法
[label][:] mnemonic [operand list] [;comment]
注意:汇编时,不能直接写成十进制小数。 如:0.907 —— .word 32 768*907/1000
第4章 TMS320C54x汇编语言程序设计
3. 小数乘法与冗余符号位 小数乘法实例: 0.5(-0.375) = -0.1875 ×
0 1 0 0 1 1 0 1
(0.5) (-0.375)
语句标号
由字母、数字。后跟 :,但 分号不是语句标号的组成部分。
语句标号
在使用标号时,标号的值是段程序计数器SPC的 当前值。 例如,若使用.word伪指令初始化几个字,则标 号将指到第一个字。
【例4.1.2】 标号格式举例。 … … ;假设汇编了某个其他代码 9 000000 10 000040 000A Start: .word 0Ah,3,7 000041 0003 标号,值为40h 000042 0007
调用宏
在源程序中用宏的名字作为操作 码来调用宏
add3 x, y, z
展开宏
在源程序调用宏时,汇编器将其展
开。在展开时,汇编器将变量传递 给宏参数,用宏定义取代宏调用语 句,然后汇编其源代码。在省缺情 况下,宏展开打印在列表文件中。 可以用伪指令.mnolist来停止其展开 的列表。
展开宏
a
x
y
第4章 TMS320C54x汇编语言程序设计 【例4.2.1】 编制计算 y
4

i1
ax
i
i
的程序
a1=0.3 a2=0.2 a3=-0.4 a4=0.1 x1=0.6 x2=0.5 x3=-0.1 x4=-0.2
.text start: SSBX FRCT STM #a,AR1 RPT #7 MVPD table,*AR1+ STM #x,AR2 STM #a,AR3 RPTZ A,#3 MAC *AR2+,*AR3+,A STH A,@y
4

i1
ax
i
i
的程序
a1=0.3 a2=0.2 a3=-0.4 a4=0.1 x1=0.6 x2=0.5 x3=-0.1 x4=-0.2
.bss a,4 .bss x,4 .bss y,1 .data table: .word 3*32768/10 .word 2*32768/10 .word -4*32768/10 .word 1*32768/10 .word 6*32768/10 .word 5*32768/10 .word -1*32768/10 .word -2*32768/10
第4章 TMS320C54x汇编语言程序设计
3. 小数乘法与冗余符号位
在小数乘法编程时,应事先设置FRCT位,
如: SSBX MPY STH FRCT *AR2,*AR3,A A,@Z
完成了Q15*Q15=Q15的小数乘法。
第4章 TMS320C54x汇编语言程序设计 【例4.2.1】 编制计算 y
[标号][:] 助记符
[操作数]
[;注释]
汇编程序语法
所有的语句必须由语句标号、空格、*
号或 ;号开头。 语句标号不是必须的,如果用,就必须 在第一列。
语句中的各部分之间,由一个或多个空
格分开。
汇编程序语法
注释不是必须的。注释可以从第一列的
* 号或 ;号开头;如果不是从第一列开 始,就必须用 ;号开头。 如果源程序很长,需要书写若干行,可 以在前一行用反斜杠字符(\)结束,余 下部分接着在下一行继续书写。
“section name” 汇编入已命名的段
汇编入可执行的代码段
初始化常数伪指令
.float
.int .string
初始化一个32-bit的浮点常数
初始化一个或多个16-bit的整数 初始化一个或多个字符串
.word
初始化一个或多个16-bit的整数
格式化输出列表的伪指令
.list
0000 2000 ld x,a 0001 0001 add y,a 0002 0002 add z,a 0003 6200 stl a,z * Reserve space for vars 0000 .bss x, 1 0001 .bss y, 1 0002 .bss z, 1
宏库
定义宏的一种方法是建立一个宏 库。宏库是包含有宏定义的文件的 集合。必须使用归档器来把这些文 件收集到一个文件中。宏库中的每 一个成员都包含一个宏定义。该文 件必须是未汇编的源文件。宏名字 和文件名必须相同,且宏文件名的 扩展名必须是.asm
.nolist .length .title
开始源文件列表
停止源文件列表 设置源文件列表的页长度 在列表文件每一页打印文件名
引用其他文件的伪指令
.copy /.include
.global .mlib
包含其他文件的源语句
确认一个或多个全局(外部)符号 定义宏库
条件汇编伪指令
.if/.else/.endif
.loop/.endloop .break
相关文档
最新文档