assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset do0end-offset do0
cld
rep movsb
jmp set
table dw offset sub1,seg sub1,offset sub2,seg sub2,offset sub3,seg sub3,offset sub4,seg sub4 ;不能放在这里,会被其他数据替换,必须放在中断中
set: mov ax,0
mov es,ax
cli
mov word ptr es:[4*7ch+2],0
mov word ptr es:[4*7ch],200h
sti
mov ax,202h
int 7ch
mov ax,4c00h
int 21h
do0: push bx
cmp ah, 3
ja sret
mov bl, ah
mov bh, 0
add bx, bx
add bx, bx
call dword ptr ds:table[bx]
sret: pop bx
iret
sub1: push ax
push bx
push cx
push es
mov ax,0b800h
mov es,ax
mov bx,0
mov cx,2000
s1: mov byte ptr es:[bx],' '
add bx,2
loop s1
pop es
pop cx
pop bx
pop ax
retf
sub2: push ax
push bx
push cx
push dx
push es
cmp al,7
ja fh
mov dl,al
mov ax,0b800h
mov es,ax
mov bx,1
mov cx,2000
s2: and byte ptr es:[bx],11111000b
or byte ptr es:[bx],dl
add bx,2
loop s2
fh: pop es
pop dx
pop cx
pop bx
pop ax
retf
sub3: push ax
push bx
push cx
push dx
push es
cmp al,7
ja fh1
mov cl,4
shl al,cl
mov dl,al
mov ax,0b800h
mov es,ax
mov bx,1
mov cx,2000
s3: and byte ptr es:[bx],10001111b
or byte ptr es:[bx],dl
add bx,2
loop s3
fh1: pop es
pop dx
pop cx
pop bx
pop ax
retf
sub4: push ax
push si
push di
push es
push cx
push ds
mov ax,0b800h
mov es,ax
mov di,0
mov ds,ax
mov si,160
mov cx,160*24
cld
rep movsb
mov cx,80
s4: mov byte ptr es:[di],' '
add di,2
loop s4
pop ds
pop cx
pop es
pop di
pop si
pop ax
retf
do0end: nop
code ends
end start
- [zaixuexi] 我以为是a0=0,a1=1,没仔细看 02/12 09:23
- [yang5731] 不对吧 我的结果应该是对的 N=9时 确实得217 你自己算算。你帮我看看论坛 算法上的程序吧 题 02/11 23:49
- [zaixuexi] 递归不是这么写的哦,我想你肯定没调试过自己写的这代码. 先看C代码吧: unsigned int 02/11 22:58
- [游客] <a href="http://www.playren.com/">整人方法</a> 12/15 17:11
- [wisji8] mov ax,0a0h mul dh mov bx,ax mov ax,2 mul 10/03 16:56
- [yang5731] 谢谢了 课程设计一做出来了 确实不能调用着个····· 08/25 02:50
- [mywiil] 课程设计一要用到这个子程序,这里暂不做评论。 赶紧完成课程设计一吧。 08/21 03:33