这个程序那里有错误
如下程序实现带有两个功能号0,1的7ch功能调用,用直接定植表.但是do1中断列程安装到0:200H处后,sub1和sub2的偏移地址是多少,buf1处的两个字的值是多少啊,
这个程序我运行不起来
高手帮忙找找错误谢谢了
data segment
data ends
code segment
assume cs:code,ds:data
start:
mov ax,code ;安装do1列程在0:200H处
mov ds,ax
mov si,offset do1
mov ax,0
mov es,ax
mov di,200h
mov cx,offset do1e-offset do1
cld
rep movsb
mov ax,0 ;置入口地址
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mov al,1 ;调用列程的第一号子程序
int 7ch
mov ah,4ch
int 21h
do1: ;do1列程
jmp ks
buf1 dw sub1,sub2 ;定值表
ks: push ax
push bx
push dx
push cx
mov ah,0 ;根据AL计算,在BUF1中的位置
add ax,ax
mov bx,ax
call word ptr es:[bx] ;调用(错误出在这一步)
pop cx
pop dx
pop bx
pop ax
iret
ks1:nop
sub1:mov ah,02h ;0号子程序
mov dl,12
int 21h
ret
sub2:mov ah,02h ;1号子程序
mov dl,3
int 21h
ret
do1e:nop
code ends
end start
[[italic] 本帖最后由 longxies 于 2007-12-20 19:49 编辑 [/italic]]