例: DATA SEGMENT A DW M BUF DB 'AB’,OAH,ODH CON EQU 500H B DW OFFAAH D DD BUF MDB2DUP(1),2DUP(2,”B),123’,1,2,3 DATA ENDS 问:(1)若执行下列指令后,(AX)=? LEA BX. M MOV AX, [BX+4] ;(AX)=4202H (2)变量A,BF,B,D,M的EA=?分别为:0,2,6,8,12 汇编语言程序设计 11
汇编语言程序设计 11 例:DATA SEGMENT A DW M BUF DB ‘AB’,0AH,0DH CON EQU 500H B DW 0FFAAH D DD BUF M DB 2 DUP(1),2 DUP(2,’B’),’123’,1,2,3 DATA ENDS 问:(1)若执行下列指令后,(AX)=? LEA BX,M MOV AX,[BX+4] ;(AX)= 4202H (2)变量A,BUF,B,D,M的EA=?分别为:0,2,6,8,12
A+0 OCH 若DW存 +100 地址,则 BUF+0.A 取它的EA +1B 初始化变量 +20AH +3|0DH B+O OAAH +1 OFFH D+0 若用DD存地址, 0 则取它的EA初始化 +2 DATA 前一个字单元,取+6 +3 段首址初始化第 M+001 字单元。 +8“3 +101 +9 +2 +0AH2 +3 +obh 3 +4 B2B 汇编语言程序设计
汇编语言程序设计 12 A+0 0CH +1 00 BUF+0 ’ A ’ +1 ’ B ’ +2 0AH +3 0DH B+0 0AAH +1 0FFH D+0 2 +1 0 +2 +3 M+0 01 +1 01 +2 2 +3 ’ B ’ +4 2 +5 ’ B ’ DATA 若DW 存 地址,则 取它的EA 初始化变量 若用DD存地址, 则取它的EA初始化 前一个字单元,取 段首址初始化第二 字单元。 +6 ‘ 1 ’ +7 ‘ 2 ’ +8 ‘ 3 ’ +9 1 +0AH 2 +0BH 3
3.标号 定义:机器指令语句存放地址的符号表示,也可表示过程名 用于:转移指令和CALL语句的操作数项。 标号有三种属性:段,偏移地址及类型。 段属性:指定义该标号所在段的段首址。 偏移地址属性:标号的偏移地址为16位无待号数,它表示段 起始地址到定义符号的位置之间的字节数, 类型属性:制定符号在本段使用,还是在其它段中使用 NEAR:本段使用 FAR:段外使用 汇编语言程序设计
汇编语言程序设计 13 3.标号 定义:机器指令语句存放地址的符号表示,也可表示过程名。 用于:转移指令和CALL语句的操作数项。 标号有三种属性:段,偏移地址及类型。 段属性:指定义该标号所在段的段首址。 偏移地址属性:标号的偏移地址为16位无符号数,它表示段 起始地址到定义符号的位置之间的字节数。 类型属性:制定符号在本段使用,还是在其它段中使用: NEAR:本段使用 FAR:段外使用
设置标号距离属性可以有以下两个办法 ①隐含方式:当在指令语句中,使用标号后,它就 隐含有NEAR属性。如: LOPI MoV ax, 30H 这时,标号LOP1的距离属性为NEAR,表示它只能 被本段的转移和调用指令所访问。隐含方式不可能有FAR 属性 汇编语言程序设计 14
汇编语言程序设计 14 设置标号距离属性可以有以下两个办法 ①隐含方式:当在指令语句中,使用标号后,它就 隐含有NEAR属性。如: ┇ LOPl:MOV AX,30H ┇ 这时,标号LOPl的距离属性为NEAR,表示它只能 被本段的转移和调用指令所访问。隐含方式不可能有FAR 属性
②用 LABEL伪指令赋予标号的距离属性。 LABEL伪指令格 式是 名称 LABEL类型 其中名称是一个标识符,它可作为一个标号,也可 作为一个变量名。伪指令 LABEL通常要与指令语句或用DB DW、D伪指令的数据定义语句连用。这时,名称就为与 之连用的指令或变量建立一个新的标识符(即新的标号或 变量名),以便补充或设置与之连用的指令或变量的类型 属性。因此,这个伪指令的名称同样有段、偏移量、类 型三个属性。若与指令连用,类型属性分为NEAR和FAR两 种;若与变量连用,类型属性就分为BYTE、WORD和 DWORD 等。它的段和偏移量同与之连用的指令或变量相同 汇编语言程序设计
汇编语言程序设计 15 ②用LABEL伪指令赋予标号的距离属性。LABEL伪指令格 式是: 名称 LABEL 类型 其中名称是一个标识符,它可作为一个标号,也可 作为一个变量名。伪指令LABEL通常要与指令语句或用DB、 DW、DD伪指令的数据定义语句连用。这时,名称就为与 之连用的指令或变量建立一个新的标识符(即新的标号或 变量名),以便补充或设置与之连用的指令或变量的类型 属性。因此,这个伪指令的名称同样有段、偏移量、类 型三个属性。若与指令连用,类型属性分为NEAR和FAR两 种;若与变量连用,类型属性就分为BYTE、WORD和DWORD 等。它的段和偏移量同与之连用的指令或变量相同