|
|
发表于 2007-5-4 23:06:00
|
显示全部楼层
Re:[求助]请问怎么不用GDI或者DX来显示图像~?~汇编或C/C++
用汇编显示一个矩形,按END键退出,编译器:MASM5.0。
.386p
.387
sj segment use16
jxbz db ?
;........
lan db ?
lv db ?
hong db ?
;.............
jxceng dw ?
jxdi dw ?
jxsi dw ?
jxbx dw ?
jxchang dw ?
jxkuan dw ?
jxhong db ?
jxlan db ?
jxlv db ?
;..........
cxx dw ?
all db ?
;..........
sj ends
dz segment stack use16
dz ends
dm segment use16
assume cs:dm,ds:sj,ss:dz
ks:
mov ax,sj
mov ds,ax
mov ax,4f02h
mov bx,112h
int 6dh
mov ax,0a000h
mov es,ax
;~~~~~~~~~~~~~~~~~~~~~~~~
mov jxbz,0
mov jxhong,132d
mov jxlv,234d
mov jxlan,22d
mov jxceng,4
mov jxchang,450d
mov jxkuan,33d
mov jxdi,1200d
mov jxsi,1201d
mov jxbx,1202d
call juxing
jmp tc
;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
;jxceng,jxchang,jxkuan,jxdi,jxsi,jxbx,jxlan,jxhong,jxlv,jxx,jxy
juxing:
mov dx,jxceng
mov ax,4f05h
xor bx,bx
int 10h
mov di,jxdi
mov si,jxsi
mov bx,jxbx
mov al,jxlan
mov ah,jxlv
mov dl,jxhong
mov cx,jxchang
jx1:
mov es:[di],al
mov es:[si],ah
mov es:[bx],dl
;inc al
;inc ah
mov all,al
add di,3
add si,3
add bx,3
jc jx11
loop jx1
jmp jx2
jx11:
mov cxx,cx
inc jxceng
mov dx,jxceng
mov ax,4f05h
xor bx,bx
int 10h
mov al,jxlv
mov ah,jxhong
mov dl,all
mov di,0
mov si,1
mov bx,2
mov cx,cxx
dec cx
jx12:
mov es:[di],al
mov es:[si],ah
mov es:[bx],dl
add di,3
add si,3
add bx,3
inc dl
loop jx12
jx2:
add jxdi,1920d
add jxsi,1920d
add jxbx,1920d
cmp jxbz,1
jz jxcs2
add jxlan,13d
jnc jxcs
mov jxbz,1
jxcs2:
sub jxlan,13d
jxcs:
mov al,jxlan
mov ah,jxlv
mov dl,jxhong
mov di,jxdi
mov si,jxsi
mov bx,jxbx
dec jxkuan
mov cx,jxchang
cmp jxkuan,0
jnz jx1
ret
;...........
tc:
mov al,20h
out 64h,al
in al,60h
cmp al,4fh
jnz tc
tc1:
mov ax,4c00h
int 21h
dm ends
end ks |
|