|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
16.4字程序的
问题1:sub2:和子程序sub3:运行的时候有问题,sub2同时改变了字的颜色和背景颜色,sub3把原本是的代表字的颜色的最后三位,移动到了高位,进行了串用。
问题2:这个程序应该从sub0开始不应该从sub1开始,错误的标号使得ah=0的时候找的是sub1,这让非程序员使用很不舒服,但是这里我懒得改了~~
问题3:不是问题的问题:书上没有把程序写成最终的完整形式,我把他们拼凑了起来如下,代码风格烂!!!轻喷!!!轻喷!!!只对问题之处做了注释
问题4:新手第一次发技术帖,混点yu币,觉得我菜的不要骂我!!!
assume cs:code
code segment
start:
mov al,01000010b
mov ah,2
call setscreen
mov ax,4c00h
int 21h
setscreen:
jmp short set
table dw sub1,sub2,sub3,sub4
set:
push bx
cmp ah,3
ja sret
mov bl,ah
mov bh,0
add bx,bx
call word ptr table[bx]
sret:
pop bx
ret
sub1:push bx
push cx
push es
mov bx,0b800h
mov es,bx
mov bx,0
mov cx,2000
sub1s:
mov byte ptr es:[bx],' '
add bx,2
loop sub1s
pop es
pop cx
pop bx
ret
sub2:push bx
push cx
push es
push ax
mov bx,0b800h
mov es,bx
mov bx,1
mov cx,2000
sub2s:
and al,10001111b ;;;;;;;;;;;;;;;;;;;;
mov es:[bx],al
add bx,2
loop sub2s
pop ax
pop es
pop cx
pop bx
ret
sub3:push bx
push cx
push es
push ax
mov bx,0b800h
mov es,bx
mov bx,1
mov cx,2000
sub3s:
or al,00000111b ;改变背景但是不对字色影响,字色就为白色,注意sub2s中用的and ,这样让背景固定为黑色
mov es:[bx],al
add bx,2
loop sub3s
pop ax
pop es
pop cx
pop bx
ret
sub4:push cx
push si
push di
push es
push ds
mov si,0b800h
mov es,si
mov ds,si
mov si,160
mov di,0
cld
mov cx,24
sub4s:
push cx
mov cx,160
rep movsb
pop cx
loop sub4s
mov cx,80
mov si,0
sub4s1:
mov byte ptr [160*24+si],' '
add si,2
loop sub4s1
pop ds
pop es
pop di
pop si
pop cx
ret
code ends
end start
|
|