汇编中的offset

来源:百度知道 编辑:UC知道 时间:2024/05/26 17:22:31
TABLE DW 10,20,30,40,50
ENTRY DW 3
……
MOV BX,OFFSET TABLE
ADD BX,ENTRY
MOV AX,[BX]
能不能每句解释下...书上说的太专业了...
AX寄存器中的内容为什么是1E00H?

呵呵,我帮你认真的解释一下:

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