汇编语言第五章.
2018/9/20 9
(3)TYPE运算符
•格式:TYPE 变量或标号 •功能:分离出其后变量或标号的类型。如果是变量,将 返回该变量的类型对应字节数;如果是标号,则返回代 表标号类型的数值。它们之间的关系见表3.2所示。
例如: ARRAY DW ? ADD SI, TYPE ARRAY ; ADD SI,2
2018/9/20
4
2.逻辑运算符
•逻辑运算符包括:
逻辑与(AND)、逻辑或(OR)、异或(XOR)、逻辑 非( NOT )四种运算。由于逻辑运算是按位操作,且在汇 编过程中完成,因而运算的结果仍为整数常量。 •【例】用逻辑运算符进行运算。
MOV AL,34H AND 0FH
MOV BL,05H OR 30H MOV CX,NOT 00FFH MOV DX,789AH XOR 000FH
2018/9/20
17
w=(v-(x*y+z-540))/x
图 5 . 1 顺 序 运 算 程 序 流 程 图
2018/9/20
源程序见LB5-1.ASM
18
LB5-1.asm,计算(v-(x*y+z-540))/x
2018/9/20 10
(4)LENGTH运算符 格式:LENGTH 变量 功能:对于变量中使用DUP的情况,汇编程序将回送分 配给该变量的单元数,而对于其他情况则送1。 【例】取出变量占存储单元个数。 DATA SEGMENT A DB ‘ABCDEF’ B DW 10 DUP(1,2 DUP(2)) C DW 3,20 DUP(0) DATA ENDS ┆ MOV AX,LENGTH A ;1→AX MOV BX,LENGTH B ;10→BX MOV CX,LENGTH C ;1→CX ┆ 2018/9/20
AX,‘A‘ EQ 41H BX,NUM2 LT NUM1
2018/9/20
6
4.属性运算符
(1)PTR运算符 格式: 类型 PTR 地址表达式 (2) PTR与EQU连用,可定义与PTR右边地址表达式 类型不同的新变量名或新标号,但不另分配存储 单元。 例如: TWO_BYTE DW ? ONE_BYTE EQU BYTE PTR TWO_BYTE OTHER_BYTE EQU BYTE PTR (TWO_BYTE+1)
2018/9/20 13
三、阅读程序L6.ASM
2018/9/20
14
第五章 循环与分支程序设计
5.1 概述 5.2 顺序程序设计 5.3 分支程序设计 5.4 循环程序设计
2018/9/20
15
汇编语言程序设计的一般步骤
汇编语言程序设计一般有以下几个步骤: 1.分析问题,确定算法 2.绘制流程图 3.根据流程图编制程序 4.调试程序
2018/9/20
3
【例】用算术运算符进行数值表达式运算。 ┆ NUM1 EQU 25*4 –50 ;NUM1=50 NUM2 EQU NUM1 / 7 ;NUM2=7 NUM3 DB NUM1 MOD 7 ;NUM3=1 VAR1 DB 1,2,3,4,5 VAR2 DB ‘12345’ NUM4 EQU VAR2-VAR1 ;NUM4=5 NUM5 EQU 0FH ┆ MOV AL,NUM5 SHL 4 ;(AL)=11110000B MOV BL,NUM5 SHR 4 ; (BL)=00000000B
2018/9/20
7
5.数值返回运算符
(1)SEG 运算符 (2)OFFSET运算符 (3)TYPE运算符 (4)LENGTH运算符 (5)SIZE运算符 (6)字节分离运算符
2018/9/20
8
(1)SEG 运算符 格式:SEG 变量或标号 功能:分离出其后变量或标号所在段的段首址。 例如: MOV AX,SEG ARR MOV DS,AX (2)OFFSET运算符 格式:OFFSET 变量或标号 功能:分离出其后变量或标号的偏移地址。 例如: MOV BX,OFFSET BUF
2018/9/20
12
(6)字节分离运算符 字节分离运算符包括:HIGH和LOW。 格式:HIGH 常量或地址表达式 LOW 常量或地址表达式 功能:HIGH 用来分离出其后16位常量或地 址表达式的偏移量的高字节; LOW 用来 分离出其后16位常量或地址表达式偏移量 的低字节。
例如: CONST DW 0ABCDH MOV AH, HIGH CONST ; 0ABHAH
;04H→AL
;35H→BL ;0FF00H→CX ;7895H→DX2018/9/20来自53.关系运算符
•关系运算符包括: 相等(EQ),不等(NE),小于(LT),大于 (GT),小于等于(LE)及大于等于(GE)。 •【例】用关系运算符进行数值表达式运算。
NUM1 DB NUM2 DB MOV MOV 10 LT 5 0AAAH GT 7FFH ;NUM1=0 ;NUM2=0FFFFH ;0FFFFH→AX ;0→BX
2018/9/20
16
5.2 顺序程序设计
下面举例说明顺序程序的设计。 【例5.1】试编写一程序计算以下表达式的值。 w=(v-(x*y+z-540))/x 式中x、y、z、v均为有符号字数据。 设x、y、z、v的值存放在字变量X、Y、 Z、V中,结果存放在双字变量W之中,程序 的流程图如图5.1所示。
一、阅读程序LBC4-1.ASM
2018/9/20
1
二、表达式与运算符
1.算术运算符 2.逻辑运算符 3.关系运算符 4.属性运算符 5.数值返回运算符
2018/9/20
2
1.算术运算符
• 算术运算符包括: +(加)、-(减)、*(乘)、/ (除)、 MOD (求模)、 SHL (左移)、 SHR (右移)几种,它既可以用于数值 表达式又可用于地址表达式。
11
(5)SIZE运算符 格式:SIZE 变量 功能:取出变量所含的数据存储区大小。其返 回值为: LENGTH 变量 * TYPE 变量 例如:上例中A、B、C三变量: SIZE A = LENGTH A*TYPE A = 1 SIZE B = LENGTH B*TYPE B = 20 SIZE C = LENGTH C*TYPE C = 2