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

Динамические часы на ассемблере

30.05.2011, 13:28. Показов 3338. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть программа. Часы. Почему то в ней не меняются минуты. Кто знает как исправить?
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
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
Ideal
        Model small
        P486N                       
        Stack 256
 
MACRO   window N,attrib,y1,x1,y2,x2     
    mov ah,06h    
    mov al,N                
    mov bh,attrib           
    mov ch,y1               
    mov cl,x1               
    mov dh,y2               
    mov dl,x2               
    int 10h             
ENDM    window  
 
MACRO   locate y,x
    mov ah,02h
    mov bh,0
    mov dh,y
    mov dl,x
    int 10h
ENDM    locate
 
MACRO   cprintf mes,len,attrib,x,y,n
    mov ah,13h
    mov al,1    ;Признак смещения курсора в конец строки
    mov bh,n    ;Номер видеостраницы
    mov bl,attrib
    mov cx,len
    mov dh,y
    mov dl,x
    mov bp,offset mes   ;Адрес строки ES:BP
    int 10h
ENDM    cprintf
 
MACRO   out_str mes
    mov ah,09h
    lea dx,[mes]
    int 21h
ENDM    out_str
                                       
        DATASEG
 
intro   db  13,10," ╔═════════════════════════════════════╗"    
    db  13,10," ║                Курсовая работа по Ассемблеру                                  ║"    
    db  13,10," ║  Студент: Шевченко Н.С.   Преподаватель: Афанасьев В.А.   ║"    
    db  13,10," ╚═════════════════════════════════════╝",13,10,'$'
                                               
mes_t11     db  13,10,"                ╔═════════════════════════════════╗"   
    db  13,10,"                ║    Текущее время:                                                               ║"
    db  13,10,"                ║   Реальное время:                                                               ║"
    db  13,10,"                ╚═════════════════════════════════╝$"
 
status  db  13,10," ╔════════════════════════════════╗"   
    db  13,10," ║  Статус:                                                                            ║"
    db  13,10," ╚════════════════════════════════╝$"
 
mode    db  13,10," ╔════════════════════════════════╗"   
    db  13,10," ║  Коэффициент замедления:                                           ║"
    db  13,10," ╚════════════════════════════════╝$"
 
info1   db  13,10," ╔═════════════════════════════════════════════╗"   
    db  13,10," ║  Нажмите комбинацию клавиш вида <Scroll Lock + цифра>                         ║"
    db  13,10," ║  где цифра = 1 ... 8 (коэффициент замедления)                                                ║"
    db  13,10," ║  цифра '1' означает, что  замедление отсутствует                                            ║"
    db  13,10," ║  Примечание : по умолчанию замедление отсутствует!                                 ║"
    db  13,10," ╚═════════════════════════════════════════════╝$"
 
str1    db  "1/1$"
str2    db  "1/2$"
str3    db  "1/3$"
str4    db  "1/4$"
str5    db  "1/5$"
str6    db  "1/6$"
str7    db  "1/7$"
str8    db  "1/8$"
len7 = $-str8
 
error   db  13,10,13,10, "Неверная комбинация клавиш. Попробуйте еще раз. $"
 
temp    db  ?
temp1   db  ?
 
 
clocks  db  "00:00:00"
sclock_len = $-clocks
 
yes db  "Резидент обнаружен"
yes_len = $-yes
no  db  "Резидент не обнаружен"
no_len  = $-no
 
;--------------------------------------------------------------
 
    Codeseg
Start:
    mov ax,@data        
    mov ds,ax
    mov es,ax
    
;вывод пользовательского меню
 
    window 0,8Fh,0,0,25,80  
    locate 0,0  
 
    out_str  intro
    out_str  mes_t11
    out_str  status
    out_str  mode
    out_str  info1  
 
    mov ax,0C800h       
    int 2Fh     
    cmp al,0ffh 
    jne ok       
    cprintf yes,yes_len,2Fh,12,11,0
    mov [temp1],1
 
    jmp work
 
; резидента в памяти нет - выход
ok: 
    cprintf no,no_len,4Fh,12,11,0
    jmp quit
 
; вывод на экран незамедленного (системного) времени         
work:       
    mov ah, 2Ch
    int 21h
    jc end_out
 
    mov al,ch
    call bcd_asc
    mov [clocks],ah
    mov [clocks+1],al   
    mov al,cl
    call bcd_asc
    mov [clocks+3],ah
    mov [clocks+4],al
    mov al,dh
    call bcd_asc
    mov [clocks+6],ah
    mov [clocks+7],al
    cprintf clocks,sclock_len,1Fh,36,7,0
end_out:
    
;--------------------------------------------------------------------   
    
    push ax 
    mov ax,0C700h
    int 2Fh
    mov [temp],al 
    
    locate 14,30
    
    cmp [temp],0h
    jne del1
    cmp [temp1],1h
    jne del1
    out_str str1,len7,1Eh,63,15,0
    
del1:   cmp [temp],01h
    jne del2
    out_str str1,len7,1Eh,63,15,0
            
del2:   cmp [temp],02h
    jne del3
    out_str str2,len7,1Eh,63,15,0
        
del3:   cmp [temp],03h
    jne del4
    out_str str3,len7,1Eh,63,15,0
    
del4:   cmp [temp],04h
    jne del5
    out_str str4,len7,1Eh,63,15,0
    
del5:   cmp [temp],05h
    jne del6
    out_str str5,len7,1Eh,63,15,0
    
del6:   cmp [temp],06h
    jne del7
    out_str str6,len7,1Eh,63,15,0
        
del7:   cmp [temp],07h
    jne del8
    out_str str7,len7,1Eh,63,15,0
    
del8:   cmp [temp],08h
    jne del9
    out_str str8,len7,1Eh,63,15,0
del9:   
 
    pop ax
;---------------------------------------------------------------
; проверка на нажатие клавиши         
quit:   mov ah, 01h
    int 16h
    je work        
    
exit:   
    mov ax,4C00h        
    int 21h 
        
;---------------------------------------------------------------
; процедура преобразования числа в ASCII-форму
Proc    bcd_asc
 
    xor bx,bx
    mov bl, al
    mov bh, 00h
    mov ax,bx                     
    
    mov cl, 10  ; 10 == 1010b
        div cl                        
                               
    add ah, '0'                              
    add al, '0'                              
              
    xchg ah,al  
                              
    ret                                     
Endp    bcd_asc                                 
                                                
;---------------------------------------------------------------
End start       ; конец программы/точка выхода
Добавлено через 2 минуты
Mikl___, привет! ты не знаешь как исправить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.05.2011, 13:28
Ответы с готовыми решениями:

Часы для разных городов на ассемблере
Требуется для нескольких городов вывести время. Получается трое часов на экране. И если мы берем системное время Bios, то как его изменять...

Дано текущие время (HMS),где Н-это часы,М-минуты,S-секунды.Написать программу определяющую время спустя 1 секунду.На Ассемблере.
Помогите написать прогу.учитель зверь не фига не обьясняет только требует,говорит разбирайтесь сами,а я вообще не чего не понимаю. Дано...

Динамические часы
Есть простой код на javascript идущих часов. function myclock() { ndata=new Date() hours= ndata.getHours(); mins=...

3
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
30.05.2011, 13:39
Добавлено через 1 минуту
в строке:

Assembler
1
2
3
4
132.  push cx
133.  mov al,ch
134.  call bcd_asc
135.  pop cx
остальное вроде в норме.
1
1 / 1 / 0
Регистрация: 14.04.2011
Сообщений: 20
30.05.2011, 13:41  [ТС]
строка 132 пустая

Добавлено через 1 минуту
а всё понял! спасибо
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
30.05.2011, 13:41
так вставть push cx, а после вызова процедуры pop cx
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.05.2011, 13:41
Помогаю со студенческими работами здесь

Флеш часы: часы, показывающие указанное время
Привет всем!!!Помогите пожалуйста!!!Как создать флеш часы чтобы они показывали разное указанное время. Весь инет прошарил нигде нет! в...

Даны целые числа m (часы) и n (минуты) .Определить наименьшее время (в минутах) когда совпадут минуты и часы
Даны целые числа m (часы) и n (минуты) .Определить наименьшее время (в минутах) до того момента когда часовая и минутная стелка...

Даны целые числа m (часы) и n (минуты) .Определить наименьшее время (в минутах) когда совпадут минуты и часы
Даны целые числа m (часы) и n (минуты) .Определить наименьшее время (в минутах) до того момента когда часовая и минутная стелка...

Как перемещать динамические Image и динамические Label одновременно?
Как перемещать динамические Image и динамические Label одновременно? То есть, в программе на ПКМ динамически создается один Image и один...

Преобразовать введенное значение в часы и минуты и выводит на экран в виде “часы: минуты”
Здравствуйте, помогите пожалуйста с написанием программы. Написать программу, которая запрашивает у пользователя значение времени в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru