当前位置:编程学习 > 汇编语言 >>

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

TABLE DW 1,2,3,4,5,6 ENTRY EQU 3 CNT EQU $-TAB MOV BX,OFFSET TABLE ADD BX,ENTRY MOV AX,WORD PTR [BX] MOV BX,CNT 最后AX=0300H,为什么啊
答案: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。
其他:是AX=0300H,对。
前面的DW123456,实际上是定义了如下的数据:
01
00
02
00
03
00
04
00
05
00
06
00
从开始处第三个字节,取出两个字节到AX,AX中就是0300H。 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 ; 

上一个:汇编语言中
下一个:汇编语言中如何分析计算各操作数的有效地址

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,