|
主题 : : 实验十六遇到问题了,求助 [待解决] |
回复[ 2次 ]
点击[ 593次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2008-11-26 16:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-07-17 17:25 |
这个是int 7ch的安装程序:
assume cs:code
code segment
start:
mov ax,0
mov es,ax
mov di,0200h
mov ax,cs
mov ds,ax
mov si,offset int7c
mov cx,offset int7cend - offset int7c
cld
rep movsb
mov word ptr es:[7ch*4],0200h
mov word ptr es:[7ch*4+2],0
mov ax,4c00h
int 21h
int7c:
jmp short int7cstart
table dw clear,setfg,setbg,rollup
int7cstart:
push bx
cmp ah,3
ja outint7c
mov bl,ah
mov bh,0
add bx,bx
call word ptr table[bx]
outint7c:
pop bx
iret
;清屏子程序
clear:
push bx
push cx
push es
mov bx,0b800h
mov es,bx
mov bx,0
mov cx,2000
clop:
mov byte ptr es:[bx],' '
add bx,2
loop clop
pop es
pop cx
pop bx
ret
;设置前景色子程序
setfg:
push bx
push cx
push es
mov bx,0b800h
mov es,bx
mov bx,1
mov cx,2000
fglop:
and byte ptr es:[bx],11111000b
or es:[bx],al
add bx,2
loop fglop
pop es
pop cx
pop bx
ret
;设置背景色子程序
setbg:
push bx
push cx
push es
mov cl,4
shl al,cl
mov bx,0b800h
mov es,bx
mov bx,1
mov cx,2000
bglop:
and byte ptr es:[bx],10001111b
or es:[bx],al
add bx,2
loop bglop
pop es
pop cx
pop bx
ret
;向上滚动一行子程序
rollup:
push cx
push ds
push es
push si
push di
mov si,0b800h
mov ds,si
mov es,si
mov di,0
mov si,160
mov cx,24
rolop:
push cx
mov cx,160
cli
rep movsb
pop cx
loop rolop
mov si,160*24
mov cx,80
rocl:
mov byte ptr es:[si],' '
add si,2
loop rocl
pop di
pop si
pop es
pop ds
pop cx
ret
int7cend:
nop
code ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-11-26 16:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-07-17 17:25 |
这个是一个简单的测试int 7ch的代码,为什么中报错啊
assume cs:code
data segment
db 0,1,2,3
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,0
mov cx,4
mov al,71h
s:
mov ah,[bx]
int 7ch
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第2楼]
[ 回复时间:2008-11-27 17:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:49
信誉值:0
注册日期:2008-10-15 16:15 |
|
|