https://www.zybang.com/question/abb4687e595aa5b2a883284fb552e3b4.html
mov bx, offset data // 让BX指向DATA的开始位置,0AH这里
add bx,enter // BX+3,指向DATA后面的第三个位置,28H这里
mov ax, [bx] // 把BX指向位置的一个字的值,赋给AX,28H和32H,因为AX为一个字
由于内存是先存放低位,再存放高位,所以AX=3228H
MOV BX,OFFSET DATA
这条指令将DATA的首地址送入BX,即BX=DATA首地址
ADD BX,ENTER
这条指令将BX加上ENTER后存入BX,即BX=BX+ENTER=DATA首地址+3
MOV AX,[BX]
这条指令从BX所指向的地址取值传送给AX,由于AX
是16位寄存器,故从BX指向地址处取出2个字节
即从DATA首地址+3
处取出两个字节:28H
和32H
由于采用小端存放,故真值的高位在高地址处,故32H
为高8位,28H
为低8位,因此
AX的真值为3228H
MOV BX,OFFSET DATA // BX->DATA[0], BX指向了DATA数组的第一个成员
ADD BX,ENTER // BX->DATA[0]+3 = BX->DATA[3] , BX指向了DATA数组的第四个成员
MOV AX,[BX] // AX -> DATA[3] , AX指向了DATA数组的第四个成员
如果是大端系统,AX存放的内容为 0x2832
如果是小端系统,AX存放的内容为 0x3228
1.BX=DATA首地址
2.BX=BX+ENTER=DATA首地址+3
3.【BX]=3228H bx里存入的是一个字,低字节是低8位,高字节是高8位
再讲bx所对应存储单元的值赋给ax