急,汇编语言中OFFSET的一个用法,请指教。

2024-11-29 03:18:51
推荐回答(3个)
回答1:

offset 是取得当前标号data1的偏移地址,即(BX)=TABLE的偏移地址。
TABLE DW 1,2,3,4,5,6 ;即 TABLE的偏移地址开始的内存单元数据为:01 00 02 00 03 00 04 00......
ENTRY EQU 3;ENTRY=3
...
MOV BX,OFFSET TABLE ;(BX)=TABLE的偏移地址
ADD BX,ENTRY;(BX)=TABLE的偏移地址+3
MOV AX,WORD PTR [BX];(AX)=从TABLE的偏移地址+3位置开始的两个字节;即 内存单元中的00 03,00为低字节,03为高字节,即AX=0300H。

回答2:

是AX=0300H,对。
前面的DW123456,实际上是定义了如下的数据:
01
00
02
00
03
00
04
00
05
00
06
00
从开始处第三个字节,取出两个字节到AX,AX中就是0300H。

回答3:

TABLE DW 1,2,3,4,5,6
ENTRY EQU 3
CNT EQU $-TAB

MOV BX,OFFSET TABLE OFFSET 是返回TABLE偏移地址,(BX)=0000H
ADD BX,ENTRY (BX)=(BX)+(ENTRY )=0003H
MOV AX,WORD PTR [BX]
MOV BX,CNT ;