|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code,ss:zhan
zhan segment
db 64 dup (' ')
zhan ends
code segment
start:
mov ax,zhan
mov ss,ax
mov sp,64
mov ax,200H
mov es,ax
mov ax,cs
mov ds,ax
mov si,offset s0
mov di,0
mov cx,offset s1 - offset s0
cld
rep movsb
mov ax,0
mov ds,ax
cli
mov word ptr ds:[7ch*4],200H
mov word ptr ds:[7ch*4+2],0
sti
mov ax,4c00H
int 21H
s0:jmp short sat ; 中断程序 功能实现 4个子功能
gnh_a dw zxc1,zxc2,zxc3,zxc4 ;错误在这 安装到 0:200H 后 标号指向的位移没变 但是用call 调用 却报错
nop
nop
nop
nop
nopq
sat:push bx
cmp ah,3
ja et
mov bl,ah
mov bh,0
add bx,bx
call word ptr gnh_a[bx] ;安装后 执行到这个指令后 IP跳飞了。。。。 不安装可以执行
et:pop bx
iret
zxc4: ;子程序4 功能号 AH 3 功能设置屏幕向下移动一行
push bx
push cx
push si
push di
push ds
push es
mov bx,0b800H
mov es,bx
mov ds,bx
mov si,160
mov di,0
mov cx,24
zxc4s:push cx
mov cx,160
cld
rep movsb
loop zxc4s
mov cx,80
mov si,0
zxc4s1:mov byte ptr es:[160*24+si],' '
add si,2
loop zxc4s1
pop es
pop ds
pop di
pop si
pop cx
pop bx
ret
zxc3: ;子程序3 功能号 AH 2 功能设置背景景色 参数al 传递颜色
push bx
push cx
push es
mov bx,0b800H
mov es,bx
mov bx,1
mov cx,2000
zxc3s:and byte ptr es:[bx],10001111b
or es:[bx],al
add bx,2
loop zxc3s
pop es
pop cx
pop bx
ret
zxc2: ;子程序2 功能号 AH 1 功能设置前景色 参数al 传递颜色
push bx
push es
push cx
mov bx,0b800H
mov es,bx
mov bx,1
mov cx,2000
zxc2s:and byte ptr es:[bx],11111000b
or es:[bx],al
add bx,2
loop zxc2s
pop cx
pop es
pop bx
ret
zxc1: ;子程序1 功能号 AH 0 功用清屏
push ax
push es
push di
push cx
mov ax,0b800H
mov es,ax
mov di,0
mov cx,2000
zxc1s:mov byte ptr es:[di],' '
add di,2
loop zxc1s
pop cx
pop di
pop es
pop ax
ret
s1:nop
code ends
end start |
|