Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/55: Рейтинг темы: голосов - 55, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 9

Перемещение курсора по экрану

13.03.2011, 17:26. Показов 10826. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
необходимо перемещать курсор по экрану. программу я написала, но может можно как то с помощью цикла организовать это:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
data segment
string db "peremeshenie cursora $'"    ; 
    
ends
 
code segment
start:
 
    mov ax, data ;
    mov ds, ax  ;
 
    call CURSOR
    lea dx, string
    mov ah, 9h
    int 21h 
      
zapros:
             
    mov ah,7h  ; Zapros nagatiya klavishi          
    int 21h    ; Vizov standartnogo prerivaniya
 
    cmp al,72  ; sravnenie s kodom klavishi vverh       
    je  UP     ; perehod na proceduru UP, esli kod sovpal
                                                                                                             
    cmp al,80  ; sravnenie s kodom klavishi vniz      
    je  DOWN   ; perehod na proceduru DOWN, esli kod sovpal
    
    cmp al,75  ; sravnenie s kodom klavishi vlevo       
    je  LEFT   ; perehod na proceduru LEFT, esli kod sovpal
 
    cmp al,77  ; sravnenie s kodom klavishi vpravo        
    je  RIGHT  ; perehod na proceduru RAIGHT, esli kod sovpal
    jmp zapros;        
      
 
UP     proc             ; Procedura peremescheniya kursora vverh               ; 
         dec dh         ; Umenshit na 1 (izmenit pologenie kursora vverh na stroku)  
         mov ah,2h      ; zapros na ustanovku kursora
         int 10h        ; vizov obrabotchika prerivanii ,BIOS   
         jmp zapros     ; Bezuslovnii perehod na metku ZAPROS  
UP     endp     
         
DOWN   proc             ; Procedura peremescheniya kursora vniz  
         inc dh         ; Uvelichit na 1 (izmenit pologenie kursora vniz na stroku)
         mov ah,2h     
         int 10h       
         jmp zapros
DOWN   endp    
 
LEFT   proc             ; Procedura peremescheniya kursora vlevo
         dec dl         ; Umenshit na 1 (izmenit pologenie kursora vlevo na stolbec)
         mov ah,2h      
         int 10h        
         jmp zapros
LEFT   endp     
         
RIGHT  proc           ; Procedura peremescheniya kursora vpravo
         inc dl       ; Uvelichit na 1 (izmenit pologenie kursora vravo na stolbec)
         mov ah,2h       
         int 10h       
         jmp zapros      
RIGHT  endp    
 
CURSOR proc 
    mov dx, 0000
         mov ah, 02h 
         
         int 10h
         ret
CURSOR endp         
      
      
end start
подскажите,если возможно))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2011, 17:26
Ответы с готовыми решениями:

Вывод и перемещение колонки по экрану. tasm
Помогите, сделал две лабы, третья никак не даётся и нет примера посмотреть даже. Задание такое: Задать вывод колонки символов в правой...

Вывести строку символов на экран. Реализовать перемещение курсора, стирание и вставку
Нашел в сети программку для работы со строками CSEG segment org 100h go: mov dx, offset buf mov ah, 0Ah int 21h

Перемещение курсора по экрану с последующим изменением атрибутов символов
Написать, используя функции BIOS такую программу: по экрану движется курсор в виде прямоугольника. При движении курсор меняет атрибут...

8
 Аватар для 6a6kin
232 / 102 / 5
Регистрация: 18.04.2010
Сообщений: 294
13.03.2011, 21:58
Команда loop - тот же условный переход, только условием считается состояние регистра cx:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
data segment para public "data"
    string db "Press direction keys for moving $"
data ends
 
stk segment stack
    db 256 dup ("?")
stk ends
 
code segment para public "code"
start:
    mov ax, data
    mov ds, ax
 
    xor dx, dx
    mov ah, 02h
    int 10h
 
    lea dx, string
    mov ah, 09h
    int 21h
    
myLoop:
    mov cx, 2h
    mov ah, 7h
    int 21h
 
    cmp al, 1Bh ; выходить по ESC
    je EXIT
    cmp al, 72
    je UP
    cmp al, 80
    je DOWN
    cmp al, 75
    je LEFT
    cmp al, 77
    je RIGHT
    
    loop myLoop ; на случай непредусмотренной клавиши
 
UP:
    dec dh
    jmp moveIT
DOWN:
    inc dh
    jmp moveIT
LEFT:   
    dec dl
    jmp moveIT
RIGHT:  
    inc dl
    jmp moveIT
moveIT:
    mov ah, 2h
    int 10h
loop myLoop
    
EXIT:
    xor dx, dx
    mov ax, 4c00h
    int 21h       
 
code ends
end start
2
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 9
13.03.2011, 22:29  [ТС]
возник вопрос(извиняюсь за некомпетентность, это моя первая программа на ассемблере) что делает строка 23
mov cx, 2h
и объясните мне пожалуйста что делает XOR...я читала но никак до меня не доходит смысл этой команды
0
 Аватар для 6a6kin
232 / 102 / 5
Регистрация: 18.04.2010
Сообщений: 294
13.03.2011, 22:57
Команда loop использует cx как счетчик(обычно для этого используется переменная i), который при каждом вызове loop уменьшается на 1. Для того, чтобы программа могла двигать курсор постоянно, необходимо в начале цикла сбрасывать счетчик в значение большее за 1.
Если переместить mov cx, 2h до метки myLoop, то сдвинуть курсор можно будет лишь 2 раза.

В данном случае XOR dx, dx обнуляет регистр dx. http://www.cyberguru.ru/progra... page2.html
1
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 9
13.03.2011, 23:29  [ТС]
спасибо)ну это то все понятно, но что именно мы загружаем в CX?? что такое 2h ?
0
 Аватар для 6a6kin
232 / 102 / 5
Регистрация: 18.04.2010
Сообщений: 294
14.03.2011, 01:20
Если так будет проще:
C++
1
2
3
4
5
6
int cx = 25; //25 раз выполнить foo() - mov cx, 25
do //метка myLoop:
{
   foo(); // call foo
   cx = cx-1;  // действие происходит неявно
} while(cx > 0); // loop myLoop
Или так:
Assembler
1
2
3
4
5
6
7
myLoop:
  mov cx, 2h
  call foo
 
  dec cx
  cmp cx, 0
  jne myLoop
Чуть что почитайте про команду loop и организацию циклов)
1
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 9
14.03.2011, 12:11  [ТС]
да это все более чем ясно!!!не пойму одного что такое 2h - число в шеснадцатиричной системе или что???
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
14.03.2011, 12:15
valentina A.,
2h = 2
1
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 9
14.03.2011, 12:35  [ТС]
СПАСИБО ОГРОМНОЕ!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2011, 12:35
Помогаю со студенческими работами здесь

Передвижение курсора по экрану
всем привет в университете для получения зачета дали задание на разработку программы на ассемблере. необходимо передвинуть курсор из...

Вывод и перемещение надписи по экрану
Помогите Написать программу, которая выполняет следующие действия: При нажатии клавиши "Т": Перейти в текстовый режим 80х25...

Задать вывод колонки символов с 0 позиции, и ее перемещение слева направо по экрану
Есть ошибки, помогите найти и исправить. model small .stack 100h .data x db 80 c db 5 z db 5 sec db 0 h db 5 .code

Перемещение символа по экрану курсорными стрелками на клавиатуре
Написать программу в Masm Emoji кнопок вверх вниз влево вправо должен символ должен перемещаться и в какой-либо точке должна стоять мина ...

Циклическое перемещение курсора
Задание: Составить программу для циклического перемещения курсора из позиции (14, 04) в заданную с интервалом 2.5 сек. и обратно. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru