问题:这里有个坑,如果像书本那样写,安装了7ch中断程序后,你再另写一个测试程序引发7ch中断程序,执行时会找不到table里面的子程序入口地址。书本代码如下:
assume cs:code
code segment
setscreen:
jmp short set
table dw clean_screen,set_foreColor,set_backColor,scroll_up
set:
push bx
cmp ah,3 ;参数ah存放功能号,功能号范围是0-3,对应4种功能
ja sret
mov bl,ah
mov bh,0
add bx,bx ;根据ah中的功能号计算对应子程序在table表中的偏移
call word ptr table[bx] ;调用对应的子程序功能
sret: pop bx
iret
clean_screen:
push bx
push es
push cx
mov bx,0b800h
mov es,bx
mov bx,0
mov cx,2000
print_space:
mov byte ptr es:[bx],' '
add bx,2
loop print_space
pop cx
pop es
pop bx
ret
set_foreColor:
push bx
push cx
push es
mov bx,0b800h
mov es,bx
mov bx,1 ;显示缓存区奇数位存属性
mov cx,2000
set012bit:
and byte ptr es:[bx],11111000b
or es:[bx],al ;参数al为颜色值
add bx,2
loop set012bit
pop es
pop cx
pop bx
ret
set_backColor:
push bx
push cx
push es
mov cl,4
shl al,cl
mov bx,0b800h
mov es,bx
mov bx,1 ;显示缓存区奇