看了下面的例子你就明白了:
ORG 1000H
TAB:DW 1234H 4567H
........
MOV DPTR,#TAB 等效于 MOV DPTR,#1000H
当下面表地址发生改变时,如:
ORG 2345H
TAB:DW 1234H 4567H
........
MOV DPTR,#TAB 等效于 MOV DPTR,#2345H
明白了吧?就是汇编程序会把16位的标号地址作为16位的立即数赋值给16位的寄存器。 因此,你可以把表建在程序ROM的任意地方,而不用考虑表“TAB”具体在哪里?
单片机中没有tab这东东
所以在一定要先定义。(用equ指令)
如果把tab定义成100,那以后就可以用tab代表100了,
#后面加一个数代表一个直接数,比如
mov
a,#30h
//把30h这个直接数传送给acc
mov
a,30h
//把30h寄存器里的数传给acc
DPTR为16位即两个字节的数据指针,DW定义了两个数据共占用四字节的空间,MOV DPTR,#TAB错了
表示被赋值的数据
例子可见:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/d9581a510baa93571138c209.html