Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2008, 00:40   #1
qip2005
Пользователь
 
Регистрация: 14.09.2008
Сообщений: 61
По умолчанию Где то бажит- посмотрите

Вот сделал лабораторную, а она немного не полностью функциоирует.
Короче надо типа чтоб можно было двигать стрелочками курсор влево, вправо, вниз и вверх.
сё сделал, тока не пойму чё- то когда вниз нажимаешь она вверх идёт- это раз, а два- это то, что если её зажать (вниз), вообще виснет.
Помогите плз.

Код:
.model tiny
.code
org 100h

begin:

mov ax,0003h
int 10h; очистка экрана
xor ax,ax
mov ah,CS:[80h]
mov al,ah
mov bh,0
mov bl,ah

mov byte ptr [bx+81h],'$'

push ax
xor ax,ax
mov al,79
sub al,bl

mov stop_a,al
pop ax
call printw_a


test_a: mov ah, 08h
int 21h
cmp al,27
          je exit_a;
int 21h
cmp al,50h
          je down_a;
cmp al,4dh
          je right_a;
cmp al,4bh  
          je left_a;
cmp al,48h
          je up_a;
jmp test_a

right_a:
 call printb_a
 cmp dl,stop_a
   je ok_a;
 inc dl_a
 jmp ok_a

left_a:
 call printb_a
 cmp dl_a,0
   je ok_a;
 dec dl_a
 jmp ok_a

down_a:
 call printb_a
 cmp dl_a,24
  je ok_a;   
 dec dh_a
 jmp ok_a

up_a:
 call printb_a
 cmp  dh_a,1
  je ok_a
 dec dh_a
 jmp ok_a

ok_a:
call printw_a
jmp test_a


exit_a:
 mov ax,0003h
 int 10h
 ret

printw_a proc near
mov ah,02h
mov dh,dh_a
mov dl,dl_a
int 10h

mov ah, 09h
mov dx,0081h
int 21h

ret




printw_a endp


printb_a proc near
mov ah,02h
mov dh,dh_a
mov dl,dl_a
int 10h

mov ah,0aH
mov al,0
mov cx,30
int 10h
ret

printb_a endp

dh_a db 13

dl_a db 30

stop_a db 80


end begin
qip2005 вне форума Ответить с цитированием
Старый 24.12.2008, 09:59   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

фантазия человека безгранична
Код:
xor ax,ax
mov ah,CS:[80h]
mov al,ah
mov bh,0
mov bl,ah
Ответ:
1 вертикальная ось инвертированна (0 вверху, 24 внизу экрана)
2 проверять диапазон нужно Y=0..24 X=0..79
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 24.12.2008, 20:36   #3
qip2005
Пользователь
 
Регистрация: 14.09.2008
Сообщений: 61
По умолчанию

спасибо, терь понял
qip2005 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка текста. Посмотрите Absent Помощь студентам 3 09.04.2008 23:30