Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 21.05.2011
Сообщений: 7

Не могу разобраться с кодом

21.05.2011, 17:32. Показов 618. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые эксперты!
Суть проблемы такая: дали готовый код, в котором мне не разобраться, а через пару дней надо защищать эту работу преподавателю.
Помогите, объясните что происходит в каждой строчке в функциях, особенно в paint и func
Вот код:


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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
.286
.model tiny
.code
org 100h
start: 
 mov ax,3
 int 10h; очистил экран
 mov ah,9
 mov dx,offset string; вывел строку приглашение
 int 21h
@@: mov ah,0
 int 16h
 cmp ah,1Ch;Enter?
 je @@2
 cmp ah,1;Esc?
 jne @@
 jmp exit
@@2: xor ax,ax;Функция 00h предназначена для выяснения, загружен ли в память 
 int 33h;драйвер мыши. Если эта функция возвращает AX = 0, то драйвер 
 xchg ax,cx;отсутствует. Если драйвер загружен, то AX = 0FFFFh , а в 
 jcxz exit;регистре BX - число кнопок мыши
;------------------------------------------------------
 mov ah,3Ch;создание файла
 mov dx,offset filename
 xor cx,cx; обычные атрибуты
 int 21h
 mov handler,ax
 mov ah,2Ah;получить системную дату
 int 21h
 mov di,offset string1+5
 mov al,dl;день
 call func; перевод числа в строку
 mov al,dh;месяц
 call func
 inc di
 inc di
 sub cx,2000
 mov al,cl;год
 call func
 mov ah,2Ch;получить системное время
 int 21h
 mov al,ch;часы
 call func
 mov al,cl;минуты
 call func
 mov ah,40h; содержимое буфера пишем в файл
 mov cx,62
 mov bx,handler
 mov dx,offset string1
 int 21h
;------------------------------------------------------
 mov ax,0Ch;Функция 0Ch позволяет программно задать реакцию на события 
;связанные с мышью: ее перемещения, нажатие и отпускание кнопок. 
;События, на которые необходимо реагировать, должны быть отмечены 
 mov cx,100b;единицами в соответствующих разрядах регистра CX. CX=100 - 
;вызвать подпрограмму, если левая клавиша отпущена. После выполнения этой 
 mov dx,offset mouse;функции драйвер мыши на каждое из заданных событий 
 int 33h;будет реагировать вызовом обработчика событий - подпрограммы 
;--------------------------------------------------
; mov ax,1;Функция 01h включает изображение курсора мыши на экране.
; int 33h
mov ax,3
 int 10h; очистил экран 
push cs
 call paint
  mov ah,0
 int 1Ah; получить системное время
 mov temp,dx
;---------------------------------------------------------------------
 mov ah,0
 int 16h;жду пока не нажмут на клавиатуру
 mov ax,14h
 xor cx,cx;удалить обработчик событий мыши
 int 33h
 mov ah,3Eh ;закрыть файл
 mov bx,handler
 int 21h
exit: int 20h;выхожу из программы
;-------------------------------------------------
mouse proc far
 push cs
 pop ds
 mov bx,Y; проверяю что щелчек пришелся на
 cmp DX,BX; координаты между Y и Y+высота прямоугольника
 jb @@4 ; и Х и Х+ширина прямоугольника
 add BX,30h; если не попали, то выходим из процедуры 
 cmp DX,bx
 ja @@4
 mov BX,X
 cmp CX,BX
 jb @@4
 add BX,50h
 cmp CX,BX
 jb a6 
@@4: retf
a6: mov ax,0B800h;содержимое ES указывает на начало текстового
 mov es,ax
 xor color,0Eh; если попали, то стираем старый прямоугольник
 imul di,Y,20 ; случайно задаем координаты Х и Y
 mov bx,X ; рисуем новый прямоугольник
 shr bx,2
 add di,bx
 mov cx,7
@@5: push cx
 mov cx,10
 mov ah,color
 mov al,0DBh
 rep stosw
 pop cx
 add di,140
 loop @@5
 add Y,8
 cmp Y,152
 jb @@6
 mov Y,0 
@@6: cmp X,0
 jne @@7
 mov X,17
@@7: mov ax,X
 mul a
 div m
 shl dx,3
 mov X,dx
 cmp X,568
 jb @@8
 mov X,0
@@8: xor color,0Eh
 mov ah,0;получить системное время
 int 1Ah
 mov ax,dx
 sub ax,temp; смотрим разницу между последним замером времени
 mov bx,4 ; переводим число в символы и пишем их в буфер
@@9: xor dx,dx
 mov cx,10
 div cx
 add dl,30h
 mov buffer[bx],dl
 dec bx
 jns @@9
 mov ah,40h; содержимое буфера пишем в файл
 mov cx,11
 mov dx,offset buffer
 mov bx,handler
 int 21h
 mov ah,0;получить новое системное время
 int 1Ah
 mov temp,dx
mouse endp
 
paint proc; рисуем прямоугольник по заданным координатам
 mov ax,0B800h;содержимое ES указывает на начало текстового
 mov es,ax;видеобуфера
 imul di,cs:Y,20
 mov bx,cs:X
 shr bx,2
 add di,bx
 mov cx,7
@@10: push cx
 mov cx,10
 mov ah,cs:color
 mov al,0DBh
 rep stosw
 pop cx
 add di,140
 loop @@10
exit1: retf
paint endp
 
func proc
 aam
 xchg ah,al
 add ax,'00'
 stosw
 inc di
 retn
func endp
 
color db 0Eh;красный 
X dw 384; координата Х
Y dw 8 ; координата Y
a dw 11
m dw 79
temp dw 0
buffer db 5 dup (?),' tik',0Dh,0Ah; строка для вывода
filename db 'reaction.txt',0; название файла
handler dw ?; файловый указатель
string db "Programma dlya proverki reakcii",0Dh,0Ah,0Ah 
db "Dlya izmerenia reakcii nazhmite neskolko raz na zheltiy kvadrat",0Dh,0Ah
db "Rezlutati budut zapisani v file REACTION.TXT",0Dh,0Ah,0Ah
db "Nazhmite Enter dlya nachala testa ili Esc dlya vihoda iz programmi$"
string1 db 'Data 00.00.2000 00:00',0Dh,0Ah,'Vremya reakcii v tikah (1 tik=55 msec):',0Dh,0Ah
end start
И как изменить размеры квадрата?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2011, 17:32
Ответы с готовыми решениями:

Приветствую, не могу разобраться с кодом программы и не могу сделать .obj файл
.model tiny; нужно будет получить исполняемый файл формата СОМ .code org 100h start: mov ax, 3 int 10h ; устанавливаем...

Не могу разобраться разобраться с кодом меню
Добрый день. Я понимаю, что тут все, наверное, элементарно. Но я только начала изучение js и пока для меня все страшно и сложно. Проблема...

Не могу разобраться с кодом
Приветствую всех! Пишу по урокам и с помощью интернета (в том числе этого форума) парсер. Думал, что уже все сделано и наткнулся на...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.05.2011, 17:32
Помогаю со студенческими работами здесь

Не могу Разобраться с кодом
Доброго дня господа. Есть вот такой код PHP используемый в joomla для формирования ссылок. Однако ссылка формируется неправильно. Вид...

Не могу разобраться с кодом
Есть скрипт сайта, очень сырой. И вот происходит такая проблема : в админке нужно добавить Категорию в базу данных mysql. Никто не пытался...

Не могу разобраться с кодом
Не могу разобраться с участком кода, а именно зачем нужны "++" *buffer->DataEnd++ = data32;

Не могу разобраться с кодом
Нашел код с форума, которое написанное в Keil Uvision на камень stm32f103. Надо его переделать что бы работал на камне stm32f051. Начал его...

Не могу разобраться с кодом
Всех приветствую, помогите разобраться с кодом который я нашел в интернете, не могу понять что за звездочка между list и init. Прошу...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru