【第16章】直接定址表

16.1 描述了单元长度的标号

有一种标号,不但表示内存单元的地址,还表示了内存单元的长度。即表示在此标号处的单元,是一个字节单元,还是字单元, 还是双字单元。

请看下面的程序:

assume cs:code
code segment
	a db 1,2,3,4,5,6,7,8
	b dw 0

start:mov si,0
			mov cx,8
		s:mov al,a[si]
			mov ah,0
			add b,ax
			inc si
			loop s
			mov ax,4c00h
			int 21h

code ends
end start

在code段中使用的标号a、b后面没有“;”,它们是同时描述内存单元地址和单元长度的标号。

因为这种标号包含了对单元长度的描述,所以在指令中,它可以代表一个段中的内存单元

2.PNG

例:下面的程序将code段中的8个数据累加,结果存储到b处的双字中

assume cs:code

code segment
	a dw 1,2,3,4,5,6,7,8
	b dd 0

start:	mov ax,0
	mov si,0
	mov cx,8
s:	mov ax,a[si]
	add word ptr b[0],ax
	adc word ptr b[0],0
	add si,2
	loop s
	mov ax,4c00h
	int 21h
code ends
end start