第5章 汇编语言的基本语法.ppt

合集下载

汇编语言程序设计

汇编语言程序设计

6)组合运算符(属性修改运算符) ① PTR运算符:运算符PTR可以指定或修改存储器操作数的 类型。注意,这种修改是临时性的,仅在该语句内有效。 下面是使用PTR运算符的例子: 例10 INC BYTE PTR[BX] 该语句的目的操作数是内存单元,用寄存器作为地址指 针。如果仅仅使用[BX]来表示该操作数,则汇编该语句时 ,不能确定该存储单元是字节单元还是字单元。因此,必 须使用BYTE PTR说明它为字节操作数(若为字操作数, 则使用WORD PTR说明)。
4)分析运算符:分析运算符有:SEG、OFFSET、TYPE、 LENGTH和SIZE。 ① SEG运算符:利用SEG运算符可以得到一个标号或变量的段 基值。下面的指令将ARRAY的段基值送给DS寄存器。 例4 MOV AX,SEG ARRAY MOV DS,AX ② OFFSET运算符:利用OFFSET运算符可以得到一个标号或 变量的偏移量。下面的指令将STRING的偏移地址送给DX。 例5 MOV DX,OFFSET STRING ③ TYPE运算符:运算符TYPE的运算结果是一个数值,这个数 值与操作数类型的对应关系见表4-1。
4.1.3
汇编语言的表达式
(3)表达式。表达式是操作数常见的形式,它由常数、变量 、标号通过操作运算符连接而成。 汇编语言中有:算术运算符、逻辑运算符和关系运算符等 。 1)算术运算符:常用的有:+(加)、–(减)、*(乘)、/ (除)和MOD(模运算)等,算术运算的结果是一个数值 。 例1 MOV AX,VARX+2 表示VARX的地址加2后对应的存储字单元内容送给AX。 2)逻辑运算符:AND(逻辑“与”)、OR(逻辑“或”) 、NOT(逻辑“非”)和XOR(逻辑“异或”)。逻辑运算 用于数值表达式中对数值进行按位逻辑运算,并得到一个数 值结果。 例2 MOV AL,0FH AND 35H 表示将0FH与35H按位相与后得到05H送给AL, 这条指令 与MOV AL, 05H 等效。

第五章 DSP的汇编指令..

第五章 DSP的汇编指令..

第五章 TMS320C55x系列DSP的汇编指令
(2) 用户自定义的双指令的并行
这两条指令的并行是通过用户或C编译器定义的。两条指令 同时执行两个操作,用并行符“||”区分并行执行的两条指令。 例:
MPYM *AR1+, *CDP, AC1 ;D单元的一个MAC来完成
||XOR AR2,T1
;A单元的ALU来完成
第五章 TMS320C55x系列DSP的汇编指令
1、高速数字信号处理中常采用汇编语言编程。 2、汇编语言中的两种指令集 (1) 助记符指令集:有助于记忆的符号来表示指令。 (2) 代数指令集:类似于代数表达式,运算关系清楚明了。 注意:DSP的软件开发工具只支持单一的指令形式,不支持助记
符指令和代数指令的混合形式。 3、术语、符号和缩写见P93的表5-1 4、运算符见表5-2
令执行的条件:
TCx(测试/控制标志为1) !TCx(测试/控制标志为0)
TC1&TC2 TC1&!TC2 TC1|TC2 TC1|!TC2 TC1^TC2 TC1^!TC2
!TC1&TC2 !TC1&!TC2 !TC1|TC2 !TC1|!TC2 !TC1^TC2 !TC1^!TC2
第五章 TMS320C55x系列DSP的汇编指令
4、双16比特算术指令: [(1)语法、(2)操作数、(3)状态位] 在D单元中利用其ALU的双16比特模式,同时执行(并行)两个16
比特算术运算,包括加-减、减-加、两个加和两个减运算。
例:
说明: NO:不能并行执行 3:指令的长度为3字节 1:周期为1 X:在X(执行)流水线阶段处理
D – ALU:在D单元ALU执行。 执行结果:AC0=(*AR3)+CARRY+AC1 状态位: Affected by CARRY,C54CM,M40等

汇编语言程序设计_第5章 分支循环程序设计(参考答案)

汇编语言程序设计_第5章 分支循环程序设计(参考答案)

第5章分支、循环程序设计本章要点: 转移指令的寻址方式及其执行过程,控制转移类指令的使用,分支和循环程序的设计和应用。

程序调试的方法,常见问题的程序设计方法。

一、单项选择题5.1.1条件转移是根据标志寄存器中的标志位来判断的,条件判断的标志位共有( B )位。

A. 4B. 5C. 6D. 95.1.2用一条条件转移指令一次可以实现( A )个分支。

A. 2B. 3C. 4D. N5.1.3 条件转移指令的转移范围是(A)。

A. -128~127B. 0~255C. 0~65535D. -32768~327675.1.4 设A为字变量,B为标号,下列指令中不正确的是(D)。

A. MOV AX,AB. JNZ BC. JMP [SI]D. JMP B[BX]5.1.5 下述指令中影响CF标志位的是(A)。

A. SHL AL,1B. MOV AL,1C. JC LD. JNC L5.1.6 下述指令中不影响CF标志位的是(A)。

A. INC SIB. SUB SI,0C. NEG ALD. TEST AL,15.1.7 在多重循环程序设计中,每次通过外层循环进入内层循环时,其内层循环的初始条件(B)。

A. 不必考虑B. 必须重新设置C. 必须清0D. 必须置15.1.8 当设计一个程序时,最重要的是(B)。

A. 程序的结构化B. 能使程序正常运行并实现功能C. 程序的执行速度快D. 程序占用的存储空间小*5.1.9 如果“JNC L”指令的操作码放在0040H,转移后在0020H处取下一指令的操作码,那么这条指令的位移量是(C)。

A. 1EHB. 20HC. 0DEHD. 0E0H*5.1.10 如果“JGE P”指令的操作码放在0050H,该指令的位移量是34H,执行完这条指令转移取下一条指令的偏移地址是(C)。

A. 82HB. 84HC. 86HD. 88H二、填空题5.2.1 当下面循环程序中的划线处填上一个什么数字时,执行的循环次数最多?MOV CX,____0______MOV AX,0L:INC AXLOOP L5.2.2 当两个数进行比较后,执行__JE L(JZ L)表示两数相等则转移到L。

王爽《汇编语言》 第5章 [BX]和LOOP指令

王爽《汇编语言》 第5章 [BX]和LOOP指令
Mov [bx],al
(21006H)=BEH
CS:CODE : SEGMENT 循环控制指令LOOP 二、循环控制指令 MOV AX,2 , 作计数器控制程序的循环。 用CX作计数器控制程序的循环。 作计数器控制程序的循环 MOV CX,11 , 格式: 格式:LOOP 标号 ;CX≠0循环 循环 S: ADD AX,AX : , 功能: )-1; 功能:当CX≠0时,( )=(CX)- ;转移到标号处 时,(CX) ( )- LOOP S 循环执行。 利用 循环执行。 利用LOOP指令编程计算 12 指令编程计算2 指令编程计算 MOV AX,4C00H , INT 21H 2:编程,用加法计算123×236,结果存在AX中 例2:编程,用加法计算123×236,结果存在AX中。 CODE ENDS END ASSUME CODE CX和LOOP指令配合实现循环功能的三个要点: 和 指令配合实现循环功能的三个要点: 指令配合实现循环功能的三个要点 1、在CX中存放循环次数 、 中存放循环次数 2、LOOP指令中的标号所标识地址要在前面 、 指令中的标号所标识地址要在前面 3、要循环执行的程序段写在标号和LOOP指令之间。 、要循环执行的程序段写在标号和 指令之间。 指令之间
七、一段安全的空间
汇编语言程序直接面向机器, 汇编语言程序直接面向机器,如果我们要向 内存空间写入数据时, 内存空间写入数据时,要保证所写入的内存中没 有重要的数据,否则会影响系统的正常运行, 有重要的数据,否则会影响系统的正常运行,在 一般的PC机中都不使用 机中都不使用0: 一般的 机中都不使用 :200—0:300这段内存 : 这段内存 空间,所以我们可以放心使用这段安全的空间。 空间,所以我们可以放心使用这段安全的空间。
一、[BX]

汇编语言程序设计

汇编语言程序设计
●标号通常由字母数字串组成,但第一个字母必须为字母。
标号有三种属性:
1. 段属性(SEGMENT): ●表示标号所在段的段基址。
2. 偏移属性(OFFSET): ●表示标号的偏移地址,即标号地址在逻辑段中距段的起始点的字节数。
3. 距离属性(或类型属性 TYPE): ●表示标号作为段内或段间的转移属性。
变量名、标号和一些专用符号等。
●注释字段 这是一个任选字段,它必须以分号开始,和指令语句的注释功能一样。
精选课件
5.2.2 常用伪指令
1. 符号定义伪指令(赋值语句)
(1)等值伪指令 格式:符号名 EQU 表达式 功能:将表达式的值赋给符号名。
[例5-11]
ALFA COUNT
EQU EQU
100 ALFA
精选课件
; CONT =60 ; CONT =7 ; CONT =1 ; AL = 84H
逻辑运算符
●包括按位操作的与(AND)、或(OR)、异或(XOR)、和 非(NOT)四种运算符。它们只适用于对常数进行逻辑运算。
注意: ● AND、OR、XOR和NOT也是指令助记符。
[例5-2] AND DX, PORT AND OFEH
精选课件
分析操作符(数值返回运算符)
(1)取地址的偏移量
(2)取段基址
格式: OFFSET 变量名或标号
功能:取变量名或标号所在段的 段内偏移量。
格式: SEG 变量名或标号
功能:取变量名或标号所在段 的段地址。
(3) 求变量名或标号的类型值
格式:TYPE 变量名或标号 功能: 返回一个数字值。若TYPE运算符加在变量名前,返回的数值是该变量 的类型属性;若TYPE运算符加在标号前,返回的数值则是该变量距离 属性;返回的数值与性的关系表4-1。

汇编语言

汇编语言

1.1.2 汇编语言
汇编指令-用能反映机器指令功能的单 词或词组来代替机器指令的操作码,用 相应的符号表示CPU内部资源和内存的 操作数 例:汇编指令: movl %esp,%ebp 二进制机器指令为: 1000100111100101 十六进制机器指令为: 89 E5
1.1.2 汇编语言
汇编语言是汇编指令集、伪指令集及其 使用规则的统称。 用汇编语言编写的程序称作汇编语言程 序,或汇编语言源程序 汇编语言源程序必须经过翻译才能变成 可执行的机器语言程序,这个翻译过程 称作汇编。
1.2.3 学习Linux环境的汇编语言 学习Linux环境的汇编语言
Linux是GNU的一员,遵循公共版权许 可证(GPL) ,是一款免费的操作系统 Linux是计算机爱好者自己的操作系统 自由的思想,开放的源码 GNU项目为Linux系统提供了丰富的程 序开发环境。我们可以使用的有GNU 汇编器gas,连接器ld、调试器gdb以及 C语言编译器gcc等
1.1.4 汇编语言的主要特性
与机器的相关性 执行的高效性 编写源程序的繁琐性 调试的复杂性 硬件控制的直接性
1.2.1 汇编语言的主要应用
程序要求具有较快的执行时间,或者只 能占用较小的存储容量 程序与计算机硬件密切相关,程序要直 接有效地控制硬件 大型软件需要提高性能、优化处理的部 分 没有合适的高级语言的时候 系统的底层软件、加密解密软件、分析 和防治计算机病毒等
1.1.3 高级语言与汇编语言
高级程序设计语言(high-level language, HLL)使用接近于人类自然语言的语法 习惯及数学表达形式 可读性、可移植性好,编写和调试程序 相对容易,编程效率高 产生的目标程序的效率不高,很难对硬 件直接加以控制

汇编语言 PPT课件

汇编语言 PPT课件

;宏定义
shlext macro shloprand,shlnum
push cx
mov cl,shlnum
shl shloprand,cl
pop cx
endm
;宏指令
shlext ax,6
;宏展开
1
push cx
1
mov cl,06
1
shl ax,cl
1
pop cx
例5.5a
;统一4条移位指令的宏指令
xor al,al
sumd: add al,bx ;求和:AL←AL+DS:BX
inc bx
loop sumd
ret
checksumd endp end
列表文件
第5章
5.2 宏结构程序设计
宏汇编 重复汇编 条件汇编 ——统称宏结构
宏 Macro 是汇编语言的一个特点, 它是与子程序类似又独具特色的另一 种简化源程序的方法
例5.10
;;如果num < 100,则汇编如下语句 ;;否则,汇编如下语句
pdata 12 db 12 dup
pdata 102 db 100 dup
;宏调用① ;宏汇编结果①
;宏调用② ;宏汇编结果②
宏汇编、重复汇编和条件汇编
为源程序的编写提供了很多方便,
灵活运用它们可以编写出非常

良好的源程序来
例题5.4-2/3 mainend MACRO retnum ;;返回DOS,可不带参数
ifb <retnum> mov ah,4ch ;;没有参数
else mov ax,4c00h+ retnum AND 0ffh
;; 有参数 endif int 21h ENDM

汇编语言教程

汇编语言教程
教学进程
5.1.3 伪指令语句
3. 段定义伪指令
格式:
段名 SEGMENT
…… 段名 ENDS
段定义时,必须将段和段寄存器自之间建立相应关系,能够用 ASSUME伪操作来实现,其格式为:
ASSUME 段寄存器名:段名1[,段名2……]
教学进程
5.1.3 伪指令语句
段定义伪指令举例
例: * * * * * * * * * * * * * * * * * * * * * * *
教学进程
5. 属性操作符
5.1.2 汇编语言语句
● SHORT操作符 格式:SHORT 标号 功能:用来修饰转移指令旳目旳地址旳属性,偏移量为8位。
● 分类运算符 格式:HIGH 体现式 LOW 体现式 功能:从体现式种分离出高字节、低字节。
6. 关系运算符
运算符: EQ(相等)、NE(不等于)、LT(不不小于)、GT(不小 于)、
5.1 8086汇编语言基础
● 汇编语言旳处理过程: (1)编写汇编语言源程序,生成扩展名为ASM旳汇编源源文件。 (2)对汇编源程序进行编译。 (3)对目旳文件进行连接 。
教学进程
5.1 8086汇编语言基础
● 汇编语言进行程序设计旳优点 1)充分利用机器旳硬件功能和构造特点,加紧程序旳执行速度,
LE(不不小于或等于)、GE(不小于或等于),当关系成 立时,
运算成果为1(FFH或FFFFH),不然为0。
格式:体现式1 关系运算符 体现式2
教学进程
汇编语言语句 7.运算旳优先级别
优先级 高

运算符(操作符) 括号中旳体现式 LENGTH,SIZE,WIDTH,MASK PRT,OFFSET,SEG,TYPE,THIS,段前缀 HIGH,LOW *,/,MOD,SHL,SHR +,EQ,NE,LT,TE,GT,GE NOT OR,XOR SHORT

汇编语言总结

汇编语言总结

执行指令 SAHF 后 (FLAGS)=0400H ③ 标志寄存器进栈指令 PUSHF 功能:将标志寄存器内容压入堆栈 即: (SP)–2→SP (FLAGS)→↓(SP) 例 3:需要将(FLAGS)→AX 要用以下两条指令来实现: PUSHF POP AX 问题:可以用 LAHF 吗? ④ 标志寄存器出栈指令 POPF 功能:将栈顶的内容送入标志寄存器 例:已知: (FLAGS)=0485H, (AX)=0000H,执行以下指令后: PUSHF ① PUSH AX ② POPF ③(FLAGS)=0000H 结果为: (FLAGS)=0000H, (AX)=0000H 5.标志位操作指令 CLC 使 CF=0 (Clear carry) 对进位标志 CF 操作指令 CMC 使 CF 取反 (Complement carry) STC 使 CF=1 (Set carry) CLD 使 DF=0 (Clear direction ) 对方向标志 DF 操作指令 STD 使 DF=1 (Set direction) CLI 使 IF=0 (Clear interrupt) 对中断标志 IF 操作指令 STI 使 IF=1 (Set interrupt)
寄存器方式操作数在寄存器中寻址方式存贮器方式操作数在存贮器中端口方式操作数在io端口中2存贮器方式操作数在存储器中寄存器间接方式r变址方式vrf常用于表指针一维数组基址加变址方式virfbr矩阵运算二维数组直接方式n或变量名表达式一寄存器寻址汇编格式
汇编语言总结
第一章
汇编语言:一种用符号书写的、其主要操作与机器指令一一对应,并遵循一定语法规则的计 算机语言。 汇编源程序:用汇编语言编写的程序——类似于高级语言编写的源程序。 汇编程序: 把汇编源程序翻译成目标程序的语言加工程序——类似于高级语言的编译程序。 汇编: 汇编程序进行翻译的过程 —— 类似于高级语言的编译过程。 伪指令: 源程序中告诉汇编程序如何进行汇编工作的命令。 例如:程序的开始、结束,数据类型和存放的位置 寄存器:一些暂时存放数据的临时存储单元。 (1) 寄存器是中央处理器内的组成部份; (2) 寄存器是有限存贮容量的高速存贮部件; (3) 寄存器是计算机系统获得操作资料的最快速途径。 EAX (累加器)Accumulator ECX (计数寄存器)Count EBX (基址寄存器)Base EDX (数据寄存器)Data(注) ESP(Stack Pointer) ,称为堆栈指示器,存放的是当前堆栈段中栈顶的偏移地址; EBP(Base Pointer),为对堆栈操作的基址寄存器; ESI(Source Index),称为源变址寄址器;字符串指令源操作数的指示器。 EDI(Destination Index),称为目的变址寄存器;字符串指令目的操作数的指示器。注 代码段寄存器 堆栈段寄存器 数据段寄存器 附加数据段寄存器 附加数据段寄存器 附加数据段寄存器 CS SS DS ES FS GS

汇编语言的基本语法

汇编语言的基本语法

再例如,对如下的定义,
W1 DW 1, 2, 3, 4, 5, 6, 7 B1 DB 10, 20, 30, 40, 50
N1 EQU B1-W1
N2 EQU $-W1
B2 DB 0 则N1=14,它是从W1开始到B1前为止的一组变量的字节
数; N2=19,它是从W1开始到B2($代表的地址)前为止的一组
PROC NEAR(或FAR) ____________
____________
. . . ____________ RET ENDP
(6) 偏移地址计数器$
汇编程序在对源程序进行汇编的过程中,用偏移地址计数 器$来保存当前正在汇编的指令的偏移地址或伪指令语句 中变量的偏移地址。
用户可将$用于自己编写的源程序中。
例: A DB 20H,30H ; 注释
指令语句是可执行语句,其格式为:
[名字:]指令操作助记符[操作数表达式1[,操作数表达式2]][;注释]
其中,指令操作助记符(指令名)是指令语句中不可缺少的 主体,其余部分(方括号中的内容)有时可省略。
名字只能是标号。 注释以分号开头,分号右边的内容将被汇编程序忽略。 例 L: ADD AX,BX ;注释
汇编后:
第一个$+4:$+4=(A+4)+4=(0074H+4)+4=007CH 第二个$+4:$+4=(A+10)+4=(0074H+0AH)+4=0082H
在指令中,$无论出现在指令的任何位置,都代表本条指 令第一个字节的偏移地址。例如,“JZ $+6”的转向地址 是该指令的首地址加上6,$+6还必须是另一条指令的首地 址。再如,在下述指令序列中,

宏汇编语言PPT课件

宏汇编语言PPT课件
③ 利用EQU可以用一个符号名替代一个复杂的地址表 达式和其他一些符号,如指令助记符、变量名、标号、 段名、寄存器名、宏定义名等。
.
34
2.等号伪指令
格式:符号名 = 表达式
功能:为常量、表达式及其他各种符号定义一个 等价的符号名,并能对所定义的符号多次重复定 义,且以最后一次定义的值为准。
【例3.17】定义等价符号名。
.
20
1.操作数
2.算术运算符
算术运算符包括:+(加)、-(减)、 * ( 乘 ) 、 / ( 除 ) 、 MOD( 求 模 ) 、 SHL(左移)、SHR(右移)几种,它既 可以用于数值表达式又可用于地址表达 式。
.
21
【例3.4】用算术运算符进行数值表达式运算。
NUM1 NUM2 NUM3 VAR1 VAR2 NUM4 NUM5
DW伪指令则是取它的偏移地址来初始化变量, 用DD伪指令则是取它的段首址和偏移地址来初 始化变量。
例如:
BUF1 DW A
BUF2 DD B
.
16
(5)带DUP的表达式
在表达式中使用重复数据操作符DUP,可以为连续的存 储单元提供重复数据,其格式为:
N DUP(表达式)
其中N为重复因子,只能取正整数,表示定义了N个重 复数据存储单元,其类型由它前面的数据定义伪指令确 定,而每个数据存储单元中的初值由DUP后面圆括号中 的表达式给定。
DATA1
.
22Biblioteka 3.逻辑运算符逻辑运算符包括:逻辑乘(AND)、逻辑加(OR)、 按位加(XOR)、逻辑非(NOT)四种运算。由于逻辑 运算是按位操作,且在汇编过程中完成,因而运算的结 果仍为整数常量。
【例3.5】用逻辑运算符进行运算。

汇编语言第5章王爽版(子程序调用指令)

汇编语言第5章王爽版(子程序调用指令)
二、主程序与过程的参数传递方式
例5-1:分别用三种参数传递方法编写求1+2的和的程序。要求将结果送到内存单元,并显示。
DATA SEGMENT SUM DB 0 DATA ENDS STACK SEGMENT DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX MOV AL, 1 MOV BL, 2 CALL subprog mov ah,4cH int 21h CODE ENDS END START
5.2 子程序的定义、调用和返回(续)
子程序返回指令(RET)
RET [n] 功能:弹出CALL指令压入堆栈的返回地址 段内返回——偏移地址IP出栈 IP←SS:[SP], SP+2 段间返回——偏移地址IP和段地址CS出栈 IP←SS:[SP],SP←SP+2 CS←SS:[SP],SP←SP+2
子程序的概念
子程序的现场保护与参数传递**
子程序的嵌套与递归调用
子程序的定义、调用和返回 **
子程序设计 *
宏汇编程序设计
教学基本内容
第5章 结构化程序设计
子程序:在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子程序又称过程。 过程(子程序):是指功能相对独立的一段程序。 主程序和子程序间的关系:调用子程序的程序称为主调程序或主程序,被调用的程序称为子程序。
Spr PROC PUSH BP MOV BP, SP MOV AX, [BP+6] MOV BX, [BP+4] ADD AL, BL OR AL, 30H MOV DL,AL MOV AH,2 INT 21H MOV SUM, AL POP BP RET Spr ENDP

汇编语言 - 入门经典教材-230页 汇编入门(7 讲)

汇编语言 - 入门经典教材-230页 汇编入门(7 讲)

汇编语言 - 入门经典教材-230页汇编入门(7 讲)汇编入门(7 讲)时间:2021-5-16 8:12:26核心提示:第 5 章微机CPU 的指令系统指令系统确定了CPU 所能完成的功能,是用汇编语言进行程序设计的最基本部分。

如果不熟悉汇编指令的功能及其有关规定,那么,肯定不能灵活运用汇编语言。

所以,本章的内容是学习本课程的重点和难点。

5.1 汇编语言指令格式为了介绍指令系统中指令的功能,先要清楚汇编语言是如何书写指令的... 第5章微机CPU的指令系统指令系统确定了CPU 所能完成的功能,是用汇编语言进行程序设计的最基本部分。

如果不熟悉汇编指令的功能及其有关规定,那么,肯定不能灵活运用汇编语言。

所以,本章的内容是学习本课程的重点和难点。

5.1 汇编语言指令格式为了介绍指令系统中指令的功能,先要清楚汇编语言是如何书写指令的,这就象在学习高级语言程序设计时,要清楚高级语言语句的语义、语法及其相关规定一样。

5.1.1 指令格式汇编语言的指令格式如下:指令助忆符 [ 操作数1 [, 操作数2 [, 操作数3]]] [; 注释]指令助忆符体现该指令的功能,它对应一条二进制编码的机器指令。

指令的操作数个数由该指令的确定,可以没有操作数,也可以有一个、二个或三个操作数。

绝大多数指令的操作数要显式的写出来,但也有指令的操作数是隐含的,不需要在指令中写出。

当指令含有操作数,并要求在指令中显式地写出来时,则在书写时必须遵守:指令助忆符和操作数之间要有分隔符,分隔符可以是若干个空格或TAB 键;如果指令含有多个操作数,那么,操作数之间要用逗号\,\分开。

指令后面还可以书写注释内容,不过,要在注释之前书写分号\;\。

5.1.2了解指令的几个方面在学习汇编指令时,指令的功能无疑是我们学习和掌握的重点,但要准确、有效地运用这些指令,我们还要熟悉系统对每条指令的一些规定或约束。

归纳起来,对指令还要掌握以下几个方面内容:、要求指令操作数的寻址方式;、指令对标志位的影响、标志位对指令的影响;、指令的执行时间,对可完成同样功能的指令,要选用执行时间短的指令(见附录2 )。

第五六章 汇编语言程序

第五六章 汇编语言程序
《微机接口技术》 13
数的表示
整数
默认为十进制,非默认基数的用字母后缀标明
B:二进制 Binary H:十六进制 Hexadecimal D:十进制 Decimal O或Q:八进制 Octal
• 示例:1011B,35D,6AH,17Q
以字母开头的十六进制数必须加0
• 示例:FEH→0FEH
《微机接口技术》
23
4. 指定段内的偏移地址
ORG说明符
格式:ORG 常数表达式 作用:指定当前可用的存储单元的偏移地址为 常数表达式的值
EVEN说明符
格式:EVEN
作用:将当前可用的存储单元的偏移地址调整 为最近的偶数值
《微机接口技术》
24
示例
ORG 1000H A DB 47H, 12H, 45H EVEN B DB 47H 说明: ① ORG指令将A的偏移地址部分指定为1000H ② 从A开始存放3个字节变量,占用地址1000H、 1001H和1002H ③ EVEN指令会将B的偏移地址部分从1003H调整为 偶数地址1004H
; 返回DOS
; 代码段结束 ; 模块结束
《微机接口技术》 11
汇编语言程序的组成
分段结构
DATA SEGMENT 按段进行组织,最多由4个 … ; 数据段语句 段组成(代码、数据、附加、 DATA ENDS
堆栈) STACK SEGMENT 每个段以“段名 SEGMENT” … ; 堆栈段语句 开始,以“段名 END”结束 STACK ENDS
《微机接口技术》 25
5. 过程定义
PROC说明符
格式:过程名 PROC 类型属性名 说明:从“过程名”代表的地址开始定义一个 过程;“类型属性名”可选择NEAR(近过程) 或FAR(远过程),默认为NEAR

MSP430学习PPT课件第5章MSP430汇编语言

MSP430学习PPT课件第5章MSP430汇编语言

01100h 0xxxxh 0xxxxh
RESET (NON)MASKABLE TBCCR0 CCIFG
0FFE3h 0FFE2h 0FFE1h 0FFE0h
0xxxxh 0xxxxh
P2IFG0~P2IFG7
;*******************************************************************
01100h
代码段起始地址定义 ORG 01100h
code
009FFh 00200h 001FFh 00000h
RAM 堆栈和变量
Peripherals
stack 堆栈指针初始化
MOV #0A00h,SP
MSP430F149中断向量表
0FFFFh 0FFFEh 0FFFDh 0FFFCh 0FFFBh 0FFFAh
TBCCR0 CCIFG
01100h
009FFh 00200h 001FFh 00000h
RAM 堆栈和变量
Peripherals
0FFE3h 0FFE2h 0FFE1h 0FFE0h
0xxxxh 0xxxxh
P2IFG0~P2IFG7
0FFFFh 0FFE0h
中断向量表
0FFDFh
code memory (FLASH) 程序
clr R5
; Clear pointer
bis #ENC,&ADC12CTL0
; Enable conversions
bis #ADC12SC,&ADC12CTL0 ; Start conversions
bis #CPUOFF+GIE,SR
; Hold in LPM0, Enable interrupts
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
▪ 例: ▪ A DB 20H,30H ; 注释
2020-12-1
谢谢你的观赏
11
▪ 指令语句是可执行语句,其格式为:
[名字:]指令操作助记符[操作数表达式1[,操作数表达式2]][;注释]
▪ 其中,指令操作助记符(指令名)是指令语句中不可缺少的 主体,其余部分(方括号中的内容)有时可省略。
▪ 名字只能是标号。 ▪ 注释以分号开头,分号右边的内容将被汇编程序忽略。 ▪例 ▪ L: ADD AX,BX ;注释
到另一种不同结构的机器上去。
2020-12-1
谢谢你的观赏
6
示例程序
DATA SEGMENT
;数据段
NUM DW 0011101000000111B
NOTES DB ‘The result is :’ , ’$’
DATA ENDS
CODE SEGMENT
;代码段
ASSUME CS:CODE,DS:DATA
即,A EQU 7
可以:A=7
A EQU 8 (不允许)
A=8
2020-12-1
谢谢你的观赏
15
(2) 变量
▪ 编程时只能确定其初始值,程序运行期间可修改其值的数 据对象称为变量。变量是存储单元中的数据,可定义在任 何段(DS、 ES、 SS、 CS),但通常都定义在数据段(DS) 和附加段(ES)。
MOV DL, AL ;显示16进制数
ROL BX,CL
MOV AH,2
MOV AL,BL
INT 21H
AND AL,0FH ;AL中为一位16进制数 DEC CH
ADD AL,30H ;转换为ASCII码值
JNZ ROTATE
CMP AL,’,4C00H;返回DOS
2020-12-1
谢谢你的观赏
14
▪ 常数表达式的名字称为常量。
(程序员给出的一个名或助记名作为一个确定值的标识, 其值在程序执行过程中保持不变。)
▪ 常量可用伪指令说明符“EQU”或“=”定义。 ▪ 例如,A EQU 7或 A = 7都可将常量A的值定义为常数7。
▪ 注意:伪指令说明符EQU左边的符号名不允许重复定义, 而“=”左边的符号名可以重复定义。
第5章 汇编语言的基本语法
2020-12-1
谢谢你的观赏
1
本章主要内容
1.汇编语言的主要特点 2.汇编语言源程序的基本结构 3.汇编语言的表达式和伪操作符 4.汇编语言程序的上机过程
2020-12-1
谢谢你的观赏
2
Assemble Language
一种面向机器的程序设计语言,是一种用符号表 示的低级程序设计语言(机器语言的符号化描 述),通常是为特定计算机或计算机系列专门设 计的。
ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA
MOV DS,AX MOV AX,STACK MOV SS, AX MOV SP,TOP
: CODE ENDS
END START
2020-12-1
谢谢你的观赏
9
5.1.2 汇编语言源程序的组成
1. 伪指令语句和指令语句
JLE DISPLAY
INT 21H
ADD AL,07H ;在A~F之间
CODE ENDS ;代码段结束
END BEGIN ;模块结束
2020-12-1
谢谢你的观赏
8
堆栈段定义格式
STACK SEGMENT STACK STA DB 50 DUP (?) TOP EQU LENGTH STA
STACK ENDS CODE SEGMENT
2020-12-1
谢谢你的观赏
10
▪ 伪指令语句是说明性语句,其格式为:
[名字]伪指令说明符[参数表达式1[,参数表达式2[,…… ]]] [;注释]
▪ 其中,伪指令说明符(伪指令名)是伪指令语句中不可缺少 的主体,其余部分(方括号中的内容)有时可省略。
▪ 名字可为段名、过程名、变量名、符号名(或常量名)、宏 名、结构名、记录名等。
BEGIN:
MOV AX, DATA
MOV DS,AX
MOV DX,OFFSET NOTES ;显示提示信息
MOV AH,9H
INT 21H
MOV BX,NUM
;将数装入BX
MOV CH,4
;CH作循环计数器
2020-12-1
谢谢你的观赏
7
示例程序(续)
ROTATE :
DISPLAY:
MOV CL, 4 ;CL中放移位位数
2020-12-1
谢谢你的观赏
12
▪ 汇编程序负责计算伪指令语句中表达式的值,解释伪指令 语句的含义并遵照“执行”,但并不产生机器代码。
▪ 汇编程序负责计算指令语句中表达式的值,并将汇编指令 翻译成机器指令代码。
▪ 指令语句经汇编后,在可执行程序运行期间由CPU解释, 并由CPU按指令的要求完成各种运算与操作。
▪ 汇编语言源程序中除了包含机器指令外,还应包含说明性 的“指令”。这些说明性的“指令”是面向汇编程序和连 接程序的,称为伪指令(Directives)。
▪ 宏汇编程序5.0版(MASM V5.0)规定,汇编语言源程序的 每行只能写一个语句: 指令语句或伪指令语句。行长不 能超过128个字符。每个语句最多可由四个字段组成: 名 字字段、操作字段、操作数字段和注释字段。
可充分利用机器的硬件功能和结构特点,加快程 序的执行速度,减少目标程序所占用的存储空间。
常用来编写实时控制程序、实时通信程序,有时 也用来编制某些系统软件程序。
2020-12-1
谢谢你的观赏
5
缺点: 1. 编程效率低(与人们描述计算过程的需要差距
大);
2. 与机器硬件的具体结构联系过于紧密 ——在一种结构的机器上开发的程序极难移植
2020-12-1
谢谢你的观赏
3
Assemble Language
用汇编语言编写的程序不 能由机器直接执行,而必 须经汇编程序翻译成机器 语言程序。汇编语言指令 与翻译成的机器语言指令 之间基本是一一对应的关 系。
汇编过程示意:
2020-12-1
谢谢你的观赏
4
采用汇编语言进行程序设计的优点:
2020-12-1
谢谢你的观赏
13
5.1.4 汇编语言的表达式
1. 汇编语言的标识符 2. 汇编语言的操作对象( 数据类型)
(1) 常数、常量
▪ 编程时已经确定其值,程序运行期间不会改变其值的数据 对象称为常数。
▪ 8086/8088CPU允许定义四种形式的常数: 整数、字符串、 “组合BCD码数”和实数(浮点数),但只能处理整数、字 符串、“组合BCD码数”,不能处理实数(浮点数)。
相关文档
最新文档