汇编基础(五)

来源:互联网 发布:volte网络分为 编辑:程序博客网 时间:2024/06/06 12:48

$运算符

$代表它自己所在位置的地址

$运算符紧跟在 DB、DW、DD伪指令之后,统计字符串的长度。

例如数据段有: 

BUF DB ’THE QUICK BROWN FOX’     ;字符串长度19

LLL EQU $-BUF

汇编后符号常数LLL的值即为19

 

SEG运算符

  H格式: SEG 段名或变量名或标号名

  H功能: 计算某一逻辑段的段基址

如:  MOV AX,SEG DATA

     MOV DS,AX

设“DATA”是数据段的段名,上述两条指令算出数据段

的段基址,先赋给AX,再转赋DS。

 

OFFSET运算符

  H格式:OFFSET  变量名或标号名

  H功能:算出某个变量或标号名所在单元的偏移地址(有效地址)。

设以“DATA”为段名的数据段中,存在

            BUF DB 12 ,34 ,56

代码段:    MOV AX,SEG DATA

            MOV DS,AX

            MOV BX,OFFSET BUF

            MOV AL,[BX]

 

PTR运算符

   格式: 类型说明符 PTR 地址表达式          ;AL=12

   功能: 在本条指令中临时修改地址表达式的属性

举例:设数据段有:

BUF DB 11,22,33,44

WBUF DW ?,?

XX DB 0FFH,0

YY DB 0FFH,0FFH,0,0

ZZ DB 0FFH,0FFH,0FFH,0

 

MOV AX,BUF              ×

MOV AL,BUF

MOV AX,WORD PTR BUF    ; AH=22,AL=11

MOV BUF,12H           √

MOV BUF,1234H         ×

MOV WORD PTR BUF,1234H  ;BUF单元为34H,BUF+1单元为12H

 

举例:设数据段有:

BUF DB 11,22,33,44

WBUF DW ?,?

XX DB 0FFH,0

YY DB 0FFH,0FFH,0,0

ZZ DB 0FFH,0FFH,0FFH,0 



 

MOV DI,OFFSET ZZ

MOV [BX],12H          ×         

MOV BYTE PTR [BX],12H     ;XX单元为12H

MOV WORD PTR [BX],12H    ;XX单元为12H,   XX+1单元为0

1 0