第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的汇编指令..

第五章 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.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指令](https://img.taocdn.com/s3/m/5899f8bdc77da26925c5b064.png)
(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课件

;宏定义
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
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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码数”,不能处理实数(浮点数)。