$运算符:

当前位置与变量首地址的字节数

BUF DB 'AAAAA'

LL EQU $-BUF;LL=5

【微机接口】汇编指令集:常用运算符_寄存器

 

 

SEG运算符:计算段基址

MOV AX,SEG DATA

MOV DS,AX

例:在定义了代码段后,必须写这两行

MOV AX,DATA;DATA 段标号相当于段基址

MOV DS,AX 

例:设n型中断服务子程序的名字是SERVICE,将中断变量写入中断向量表

CLI

PUSH DS

PUSHA

MOV AX,SEG SERVICE

MOV DS, AX;必须写成两行

MOV DX,OFFSET SERVICE

MOV AH,25H

MOV AL,n

INT 21H

POPA

POP DS

STI

OFFSET运算符:算出逻辑段某个变量或标号名相对于段首的偏移地址

 例:把1~5一次赋给AL

NUM DB 1,2,3,4,5

MOV CX,5

MOV SI,OFFSET NUM

AGA:  MOV AL, [SI]

INC SI

LOOP AGA

MOV BX,OFFSET BUF

等价于

LEA BX,BUF 

PTR操作符:

(1)必须要用PTR的情况

MOV [],立即数

因为存储器是线性的,立即数前面可以加任意个0,如果不加PTR可以有无数种情况,所以在立即数或[]加PTR

 单操作数指令:

INC [],必须加PTR

直接寻址中使用变量和使用寄存器寻址操作数长度都是确定的。

(2)不加PTR的情况

MOV [],寄存器;取寄存器的数放入存储单元

MOV 寄存器,[];去存储单元的数放入寄存器

 (3)考虑加PTR的情况:

MOV 寄存器,变量 

如果变量和寄存器长度一样,不加PTR

BUF DB 11,22,33,44

MOV AL,BUF ;AL=11

如果变量和寄存器长度不一样,加PTR

BUF DB 11,22,33,44

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


题:

【微机接口】汇编指令集:常用运算符_寄存器_02

【微机接口】汇编指令集:常用运算符_开发语言_03

  

【微机接口】汇编指令集:常用运算符_开发语言_04