汇编解释
TABLE DW 10,20,30,40,50
ENTRY DW 3
……
MOV BX,OFFSET TABLE
ADD BX,ENTRY
MOV AX,[BX]
TABLE DW 10,20,30,40,50
;第一句的解释:定义以TABLE为首地址的五个数据; DW指字类型,就好像C语言的基本类型
的功能一样,前面的TABLE则是标识符。
ENTRY DW 3
;第二句的解释:道理同上,看懂一的解释二应该也清楚了.。.
..........
MOV BX,OFFSET TABLE
;第三句的解释:意思是将TABLE的首地址传送给基址寄存器BX,OFFSET +X符识符,
表示取X的首地址,整个语句的寻址方式为立即数寻址,MOV在这语句中
起传送地址的作用.此时BX=TABLE(表示地址.)
ADD BX,ENTRY
;第四句的解释:BX = BX+0003H =TABLE+3(0003H是3的十六进制也没什么区别)
MOV AX,[BX]
;第五句的解释:BX是一个寄存器,加上"[BX]"就是BX(从上面我们可以看出BX寄存器里面是地址) 这个地址里包含的内容,些时BX=TABLE+3而[TABLE+3]的内容就是1E00H传送给AX.
如果看懂上面的文字后,就可以分析AX为什么是1E00H了:
TABBLE的数是这样的存储的:
10——>000AH 逻辑存储——>0A (TABLE+0)位
20——>0014H 00 (TABLE+1)位
30——>001EH 14 (TABLE+2)位
40——>0028H 00 (TABLE+3)位
50——>0032H 1E (TABLE+4)位
00 (TABLE+5)位
。。。 。。。。
从第五句我们可以看到:
AX=[BX]=[TABLE+3]
而汇编有这样的规定,以低位表示一个字,那么加上高位 (TABLE+4)就组成了一个字了,
而[TABLE+4]单元里的内容是:1EH,则高位与低位一同组成字.故AX=1E00H。