表达式运算符之其它运算符

1. 存储器操作数运算符 [ ]

格式:表达式1[表达式2]

功能:

  • 指明该操作数为存储器操作数
  • 对表达式具有相加的运算作用(表达式为该操作数的偏移地址)

2. 段重设运算符

格式:段寄存器:[表达式]

功能:“:” 用来指定一个存储器操作数的段属性。

MOV AX, ES:[BX]
MOV AX, DS:[1000H]  ; 这个必须要指定,否则不知道

3. TYPE 运算符

取变量或标号的类型属性,并用数字形式表示。对变量来说就是取它的类型字节长度。

变量标号
BYTE1NEAR-1
WORD2FAR-2
DWORD4
QWORD8
TWORD10
V1 DB 'ABCDE'
V2 DW 1234H, 5678H
V3 DD V2
...
MOV AL, TYPE V1  ; MOV AL, 1
MOV CL, TYPE V2  ; MOV CL, 2
MOV CH, TYPE V3  ; MOV CH, 4

4. LENGTH 运算符

该运算符用于取变量的长度。

  • 如果变量是用重复数据操作符 DUP 说明的,则 LENGTH 运算取最外层 DUP 给定的值。
  • 如果没有用 DUP 说明,则 LENGTH 运算返回值总是 1 。
K1 DB 10H DUP(0)
K2 DB 10H, 20H, 30H, 40H
K3 DW 20H DUP(0, 1, 2 DUP(0))
K4 DB ‘ABCDEFGH’
...
MOV AL, LENGTH K1  ; (AL)=10H
MOV BL, LENGTH K2  ; (BL)=1
MOV CL, LENGTH K3  ; (CL)=20H
MOV DL, LENGTH K4  ; (DL)=1

5. SIZE 运算符

该运算符只能用于变量,SIZE 取值等于 LENGTH 和 TYPE 两个运算符返回值的乘积。

对于上面例子,加上以下指令:

K1 DB 10H DUP(0)
K2 DB 10H, 20H, 30H, 40H
K3 DW 20H DUP(0, 1, 2 DUP(0))
K4 DB ‘ABCDEFGH’
...
MOV AL, SIZE K1  ; (AL)=10H
MOV BL, SIZE K2  ; (BL)=1
MOV CL, SIZE K3  ; (CL)=20H×2=40H
MOV DL, SIZE K4  ; (DL)=1

6. HIGH/LOW 运算符

这两个运算符用来将表达式的值分离出高字节和低字节。

格式:HIGH/LOW 表达式

  • 如果表达式为一个常量,则将其分离成高 8 位和低 8 位。
  • 如果表达式为一个地址,则分离出它的高字节和低字节。

地址 —— 段地址或段内偏移量。

应用举例:

设 DATA 段的段基址是 0926H 。

DATA SEGMENT
    CONST EQU 0ABCDH
    DA1 DB 10H DUP(0)
    DA2 DW 20H DUP(0)
DATA ENDS
...
    MOV AH, HIGH CONST         ; MOV AH, 0ABH
    MOV AL, LOW CONST          ; MOV AL, 0CDH
    MOV BH, HIGH (OFFSET DA1)  ; MOV BH, 00H
    MOV BL, LOW (OFFSET DA2)   ; MOV BL, 10H
    MOV CH, HIGH (SEG DA1)     ; MOV CH, 09H
    MOV CL, LOW (SEG DA2)      ; MOV CL, 26H

不能用来分离一个变量、寄存器或存储单元的内容。

DA1 DW 1234H
...
MOV AH, HIGH DA1   ; 错误。不知道HIGH哪个地址
MOV BH, LOW AX     ; 错误。汇编时不知道寄存器内容
MOV CH, HIGH [SI]  ; 错误。汇编时不知道存储器单元内容

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值