.model tiny .486 smart locals .code org 0h include ..\include\mem.h include ..\include\bmp.h start: header exe <,1,0,,,,offset exports,> exports: db "showbmp",0 dw showbmp db "loadbmppalet",0 dw loadbmppalet dw 0 ;==========SHOWBMP========= ;Affiche le BMP pointée par DS:%0 en %1, %2 ;<- DS:%0 BMP, %1 coordonnées X, %2 coordonnées Y ;-> ;========================== showbmp PROC FAR ARG pointer:word, x:word, y:word=taille push bp mov bp,sp push ax bx cx dx si di mov si,[pointer] cmp word ptr [si+BMP_file.BMP_FileType],"MB" jne @@errorshowing mov edi,[si+BMP_BitMapOffset] add di,si mov ah,8 xor ebx,ebx mov ecx,[si+offset BMP_File.BMP_height] mov edx,[si+offset BMP_File.BMP_width] and dx,11111100b cmp edx,[si+offset BMP_File.BMP_width] jae @@noadjust add dx,4 @@noadjust: sub dx,[si+offset BMP_File.BMP_width] @@bouclette: mov al,[di] push bx cx add bx,[x] add cx,[y] int 47h pop cx bx inc bx inc di cmp ebx,[si+offset BMP_File.BMP_width] jb @@bouclette xor bx,bx add di,dx dec cx cmp cx,0 jne @@bouclette clc pop di si dx cx bx ax pop bp retf taille @@errorshowing: stc pop di si cx bx ax pop bp retf taille showbmp ENDP ;==========LOADBMPPALET========= ;Charge la palette du BMP pointée par DS:%0 ;-> DS:%0 BMP ;<- ;=============================== loadbmppalet PROC FAR ARG pointer:word=taille push bp mov bp,sp push ax bx cx dx si mov si,[pointer] mov bx,0400h+36h-4 mov cx,100h mov dx, 3c8h paletteload: mov al, cl dec al out dx, al inc dx mov al,[bx+si+2] shr al,2 out dx, al mov al,[bx+si+1] shr al,2 out dx, al mov al,[bx+si] shr al,2 out dx, al sub bx,4 dec dx dec cl jnz paletteload pop si dx cx bx ax pop bp retf taille loadbmppalet ENDP end start