![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() |
MixRin.RU$ |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Работает ли мышь в граф. режиме 101h?
mov ax, 4F02h
mov bx, 101h
int 10h
Просто в 13h пашет, а в этом нет, друг говорит там надо напрямую с портами возится ![]() а вот соббсно код проги: .model tiny
.386
.data
VMC dd ? ;адрес процедуры BIOS
star_vid dw ?
Info dw 256 DUP(0)
cmask
db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh
db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh
db 00000000b,10000000b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.code
org 100h
start: call where_VMC ;записываем адрес VMC
call init_vga ;установка видео-режима 640x480x8
call refresh ;экран белого цвета
call draw_color
;---------------
;xor ax,ax
;int 33h
;push ds
;pop es
;mov dx,offset cmask
;mov ax,09h
;int 33h
;mov ax,01h
;int 33h
;-------неработающий код--------
check_esc: xor ax, ax
int 16h
cmp ax, 011Bh ;проверка на ескейп
je end_prog
jmp check_esc
end_prog: mov ax, 4F02h
mov bx, star_vid
int 10h
ret
;----------------------------
where_VMC proc
push ds
pop es
mov di, offset Info
mov ax, 4f01h
mov cx, 0101h
int 10h
mov eax, es:[di + 0Ch] ;добываем адрес на VMC процедуру
mov VMC, eax
ret
where_VMC endp
refresh proc
mov cx, 5
nxtwin: dec cx
mov dx, cx
inc cx
push cx
xor bx, bx
mov ax, 4F05h
call VMC
mov ax, 0f0fh
xor si, si
mov cx, 8000h ;заполняем экран белым
rep stosw
pop cx
loop nxtwin
ret
refresh endp
init_vga proc
push 0A000h
pop es
mov ax, 4F03h
int 10h
mov star_vid, bx ;запоминаем старый режим и входим в 640х480х8
mov ax, 4F02h
mov bx, 101h
int 10h
ret
init_vga endp
;ax - координата по Y, bx - координата по X, dl - код цвета
draw_point proc
push ax
push bx
push dx
dec ax
dec bx
mov dx, 280h
mul dx
add ax, bx
adc dx, 0
mov si, ax
xor bx, bx
mov ax, 4F05h ;рисуем точку по координате bx, by с цветом dl (нумерация точек: 0..639;0..479)
call VMC
pop dx
mov es:[si], dl
pop bx
pop ax
ret
draw_point endp
draw_color proc
push 0A000h
pop es
xor ax, ax
xor bx, bx
xor dl, dl
inc bx
mov cx, 40h
cycle2: push cx
xor dl, dl ;цветная фигулина
xor bx, bx
inc ax
inc bx
mov cx, 1feh
cycle1: call draw_point
inc dl
inc bx
loop cycle1
pop cx
loop cycle2
ret
draw_color endp
end start
PS: здесь стоят комменты не на оператор, а на всю процедуру... Сообщение отредактировано: volvo - 3.11.2006 0:20 |
![]() ![]() |
![]() |
Текстовая версия | 30.07.2025 3:55 |