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

Резидентная программа вывода времени на экран

28.01.2013, 15:57. Показов 1099. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть готовая работающая программа, но никак не могу разобраться, как она работает:
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
puts    macro   string      
    lea dx,string
    mov ah,09h
    int 21h
endm
 
.model tiny
.code
 
        org 80h
cmd_len     db    ?     
cmd_line        db    ?     
    org 100h
.386
start:
    jmp inst
Unloaded    db  
Success     db  10,13,
Old2D       dd  ?   
Old1C       dd  ?      
 
already     db  10,13,
WrongComLine    db  10,13,
Help            db      10,13,
            db  10,13,
            db  10,13,
            db  10,13,
New2DObrab  proc        
    cli         
    pushf           
    cmp al,98h      
    jne UnloadTSR   
    inc al      
    popf            
    sti                     
    iret                    
    cmp ah,77h      
    jne DoNothing       
    push ES         
    push DS
    pusha           
    mov ax,252Dh        
    lds DX,CS:Old2D         
    mov ax,251Ch        
    lds DX,CS:Old1C         
    mov ES,CS:[2Ch]     
    int 21h                
    pop ES
    mov AH,49h      
    int 21h                 
    popa            
    pop DS          
    pop ES
    popf            
    sti                     
    iret                    
    popf            
    sti         
endp
New1CObrab  proc        
    pushf           
    call    dword   ptr 
    cli         
    push ax
    mov ax,0b800h       
    mov ds,ax       
    mov al,4    
    out     70h,al    
    jmp     $+2       
    in      al,71h    
    mov ah,0fh      
    push ax         
    shr al,4        
    add al,'0'      
    mov ds:[(80-8)*2],ax    
    pop ax          
    and al,0fh      
    add al,'0'      
    mov ds:[(80-7)*2],ax    
    mov al,':'
    mov ds:[(80-6)*2],ax    
    mov al,2    
    out     70h,al    
    jmp     $+2       
    in      al,71h    
    mov ah,0fh                                   
    push ax                 
    shr al,4                
    add al,'0'                              
    mov ds:[(80-5)*2],ax                            
    pop ax                  
    and al,0fh                              
    add al,'0'                              
    mov ds:[(80-4)*2],ax                            
    mov al,':'                                                         
    mov ds:[(80-3)*2],ax                   
    mov al,0    
    jmp           
    in      al,71h   
    mov ah,0fh                                 
    push ax                
    add al,'0'                     
    mov ds:[(80-2)*2],ax                         
    pop ax                                    
    add al,'0'                             
    mov ds:[(80-1)*2],ax                          
 
    pop ax          
    pop ds
    sti         
 
inst:           
 
    cmp     byte ptr cmd_len,0      
    je      Parameters          
    cmp word ptr cmd_line[1],'?'*256+'/'
    je  sprav                           
    cmp word ptr cmd_line[1],'u'*256+'/'
    je  Unload_resident                 
    cmp word ptr cmd_line[1],'U'*256+'/'
    je  Unload_resident                 
    jmp     Parameters          
sprav:  puts    Help        
    jmp Quit        
 
Unload_resident:
    cli             mov     AH,77h      
        int     2Dh         puts    Unloaded    
    sti             jmp Quit        
ComLineError:
    puts    WrongComLine    
    jmp Quit            
; ???U ??u? ???
Parameters:
    mov AL,98h      
    int 2Dh     
    cmp AL,99h      
        jnz     not_loaded  
    puts already        
    jmp quit        
not_loaded:
 
    mov ax,352Dh    ; GetVector
    int 21h
    mov     word  ptr  Old2D,BX
    mov word  ptr  Old2D+2,ES
    mov ax,252Dh    ; SetVector
    mov dx,offset  New2DObrab
    int 21h
 
    mov ax,351Ch    ; GetVector
    int 21h
    mov     word  ptr  Old1C,BX
    mov word  ptr  Old1C+2,ES
    mov ax,251Ch    ; SetVector
    mov dx,offset  New1CObrab
    int 21h
 
    puts    Success     
 
    mov ax,3100h    ; KeepProc
    mov dx,(inst-start+100h);   27h     ; ?????? ??? *???
    ret
 
 
Quit:   mov ah,4ch      
    int 21h
 
    end start
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.01.2013, 15:57
Ответы с готовыми решениями:

Резидентная программа вывода времени на экран.
Резидентная программа вывода времени на экран. Как работает эта программа? Как время сохраняется и выводится на экран? TIMES SEGMENT ...

Резидентная программа вывода времени
Хотелось бы рассмотреть резидентные программы на деле. Искал резидентную программу (запускаемую под dosBox), которая будет по нажатию...

Резидентная программа, запускающая счетчик времени
Помогите пожалуйста, нужно сделать TSR-программу, которая должна по горячей клавише запускать счетчик времени, при повторном нажатии время...

7
 Аватар для bomz
64 / 64 / 0
Регистрация: 06.10.2011
Сообщений: 299
28.01.2013, 16:03
Цитата Сообщение от morfei20 Посмотреть сообщение
org 80h
cmd_len db ?
cmd_line db ?
org 100h
клевая идея
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
28.01.2013, 16:52
Ну вряд ли это будет работать - int 1Сh вызывается после того, как обработчик int 08h завершит работу с железом.

Добавлено через 34 минуты
https://www.cyberforum.ru/asse... 72680.html
0
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
28.01.2013, 16:58
Цитата Сообщение от morfei20 Посмотреть сообщение
jne UnloadTSR
Цитата Сообщение от morfei20 Посмотреть сообщение
Success db 10,13,
Цитата Сообщение от morfei20 Посмотреть сообщение
call dword ptr
Цитата Сообщение от morfei20 Посмотреть сообщение
jne DoNothing
Весьма сомнительно, что из такого исходника можно получить работающий код. И процитирована только часть "ляпов". Само же решение задачи тоже весьма "оригинальное".
0
 Аватар для bomz
64 / 64 / 0
Регистрация: 06.10.2011
Сообщений: 299
28.01.2013, 17:00
Code
1
17  Unloaded    db
далеко зашел
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
28.01.2013, 17:15
Цитата Сообщение от morfei20 Посмотреть сообщение
Есть готовая работающая программа
бред какой-то
0
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 14
28.01.2013, 20:18  [ТС]
Программа то корректно работает, но КАК?
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
28.01.2013, 20:25
Это, что, дизассемблинг? А тушку самой проги в студию?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.01.2013, 20:25
Помогаю со студенческими работами здесь

Нужна резидентная программа, которая выводит на экран часы
Не очень понимаю принцип работы резидентных программ, поэтому прошу помощи!

Резидентная программа: вывод строки символов на экран каждые 45 секунд
Доброго времени суток. Дано задание, написать резидентную программу,которая вывод строку символов на экран каждые 45 секунд. code ...

Напишите программу вывода на экран времени
Помоги, пожалуйста, написать программу вывода на экран времени по часу(от 0 до 23) и минуте(от 0 до 59)

Таймер для вывода времени на экран
Я только учусь работать с JS. Мне нужно написать код, используя одноразовый таймер для вывода времени на экран в строку ввода. Время будет...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
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. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru