
Опытный
 
Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва
Репутация: нет Всего: 10
|
Случайно нашел старый файл. Если кому-то интересно, то это низкоуровневая графика на asm (функции для вызова из программы на C). Установка точки, чтение точки в заданных координатах. Да, программа писалась для 286 процессора  | Код | PUBLIC _Pixel_Addr;получение адреса пиксела в видеобуфере PUBLIC _Set_Pixel;рисование точки PUBLIC _Read_Pixel;чтение точки
_Pixel_Addr PROC far BytesPerLine equ 80 Orignoffset equ 0
mov CL,BL push DX mov DX,BytesPerLine mul DX
pop DX shr BX,1 shr BX,1 shr BX,1 add BX,AX add BX,Orignoffset PUSH 0A000h POP ES and CL,7 xor CL,7 mov AH,1 ret _Pixel_Addr ENDP
_Read_Pixel proc far arg Xcor:word, Ycor:word push BP mov BP,SP push di push si push ds
mov AX,Ycor mov BX,Xcor
mov CL,BL push DX mov DX,80 mul DX
pop DX shr BX,1 shr BX,1 shr BX,1 add BX,AX add BX,0 PUSH 0A000h POP ES and CL,7 xor CL,7 mov AH,1 shl ah,cl
;В CL количество битов, на которые надо сдвинуть вправо xor di,di push es pop ds
MOV DX,3CEH MOV Ax,0005h OUT DX,Ax MOV Ax,0304h; Читаю 3-ю битовую плоскость
OUT DX,Ax mov al,es:[bx] shr ax,cl and ax,1 or di,ax
MOV Ax,0204h; Читаю 2-ю битовую плоскость OUT DX,Ax mov al,es:[bx] shr ax,cl and ax,1 shl di,1 or di,ax
MOV Ax,0104h; Читаю 1-ю битовую плоскость OUT DX,Ax mov al,es:[bx] shr ax,cl and ax,1 shl di,1 or di,ax
MOV Ax,0004h; Читаю 0-ю битовую плоскость OUT DX,Ax mov al,es:[bx] shr ax,cl and ax,1 shl di,1 or di,ax
mov ax,di and ax,000Fh
pop ds pop si pop di pop bp ret _Read_Pixel endp
_Set_Pixel Proc far arg Xcor:word,Ycor:word,Color:word RMWbits EQU 18h
push BP mov BP,SP mov AX,Ycor mov BX,Xcor call _Pixel_Addr shl AH,CL mov DX,3CEh mov AL,8 out DX,AX
mov AX,205h cli out DX,AX sti mov AH,RMWbits mov AL,3 cli out DX,AX sti mov AL,ES:[BX] mov AX,Color and AX,00Fh mov ES:[BX],AL
mov AX,0FF08h out DX,AX
mov AX,0005 out DX,AX
mov AX,0003 out DX,AX
mov SP,BP pop BP ret _Set_Pixel ENDP
| Это сообщение отредактировал(а) Alex101 - 21.5.2003, 20:05
--------------------
С уважением, А. Фролов.
|