【汇编】addr dw number number dw Y的意思:在ADDR单元中存放着数Y的地址

根据数据定义伪操作的格式:

其中变量(Variable)字段是可有可无的,它用符号地址表示,其作用与指令语句前的标号相同,但它后面不跟冒号。
如果语句中有变量,则汇编程序使其记以第一个字节的偏移地址。(例子中,A就是1存放处的地址)

所以说number 是 Y 的偏移地址
把number的值定义为word类型(dw),再把它存放入addr单元中,实现在ADDR单元中存放着数Y的地址。。

所以这两句的意思是:
addr单元处定义一个字节的值为number的变量
number处定义一个字节的值为Y的变量。。则number为Y的地址值

解释汇编中的AUGW LABEL WORD、ADDW LABEL WORD

LABEL定义ADDW(AUGW)WORD变量,但他自身没存储空间,而是和下面的ADDEND占一个空间,ADDW(AUGW)ADDEND(AUGEND)在存储器上占相同空间.一个为WORD变量类型,一个为DD变量类型。
这里,在ADDEND前申明了一个名为ADDW的标号并赋予其字(word)属性。ADDW是ADDEND的一个别名。
常用来将较小的数组成较大的数。

LABEL 一般用作定义变量和标号的属性,它是与紧接着的下一条变量和标号定义语句相关的,其类型可以为BYTEWORDDWORDQWORDNEARFAR等等。用法为:
buffer(变量) LABEL BYTE(类型)
例如:

Buffer1 LABEL WORD
Buffer2 DB 20 DUP (?)
通常,紧接着的下一条语句定义的类型与LABEL指定的类型不同。而实际上,Buffer1Buffer2的别名,两者指向内存中的同一个存储地址。换言之,同一组数据定义了两种不同的类型,在接受不同数据类型的访问时,可以指定相应的标号。如接受一个字类型数据访问时,使用Buffer1;接受字节类型数据访问时,使用Buffer2。否则因为数据类型不匹配,编译器编译时将出现异常。
lable本身不占有实际存储空间。

【汇编】JMP跳转指令的指令长度、直接转移与间接转移、段内跳转与段间跳转

指令长度=操作码的长度+操作数地址的长度
1.段内跳转
JMP指令占1个字节。
操作数的地址长度 = (目标地址-指令当前地址)//若能用1个字节表示,则占用1个字节,那么整体指令长度为2个字节;若需2个字节表示,则占用2个字节,此时整体指令为3个字节。
比如:
0113 jmp 0185 ;0185h-0113h=72h,72h可用1个字节表示,加上JMP的一个字节,一共指令长度为2个字节;
0113 jmp 0845 ;0845h-0113h=732h,732h需用2个字节表示,加上JMP的一个字节,一共指令长度为3个字节。

2、段间跳转
指令长度为5字节。如jmp 1234:5678,整体指令长度为5.

 

直接转移 IP = 位移量 + 指令长度
间接转移 IP = 寻址方式求出的EA(有效地址)的值

直接转移中
短转移JMP SHORT OPR 8位位移量
位移量需要满足前后跳转的需要,所以是一个带符号数 转移格式只允许在-128~127之间转移
近转移JMP NEAR PTR OPR 16/32位位移量
16位在实模式下段长为64KB,所以16位位移量可以转移到段内的任一个位置