【第十六章】直接定址表

3.PNG

assume cs:code

code segment
start:	mov ax,30
	call showsin
	mov ax,4c00h
	int 21h

showsin:	jmp short show
	table dw sg0,sg1,sg2,sg3
	sg0 db '0',0
	sg1 db '0.5',0
	sg2 db '0.866',0
	sg3 db '1',0

show:	push bx
	push es
	push si
	mov bx,0b800h
	mov es,bx
	
	;确定定址表中下标,将下标中存储的元素(数据的偏移地址)放入bx中
	mov ah,0
	mov bl,30
	div bl
	mov bl,al
	mov bh,0
	add bx,bx
	mov bx,table[bx]

	;判断是否等于0,若等于0则结束循环
	mov si,10*160 + 10*2
shows:	mov ah,cs:[bx]
	cmp ah,0
	je showret
	mov es:[si],ah
	add si,2
	inc bx
	jmp short shows

showret:	pop si
	pop es
	pop bx
	ret
code ends
end start