Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Резидентные часы

64K
11 марта 2011 года
core_St
3 / / 27.11.2010
Здраствуйте. Нужна резидаентная програма, которая по 1ch показывает часы в верхнем углу екрана. Есть просто програма для чтения времени

Код:
OutStr macro str ;макрос виведення стрічки
push dx
mov ah,09h
lea dx,str
int 21h
pop dx
endm

OutChar macro char ;макрос виведеня символа
push ax
push dx
mov ah,06h
mov dl,char
add dl,30h
int 21h
pop dx
pop ax
endm

Decomposition macro time ;макрос розкладу двозначного 16-бітного на цифри і виводу їх на екран
push bx
mov bh,time ;використовується bx
mov bl,time
and bh,11110000b
shr bh,4h
and bl,00001111b
OutChar bh
OutChar bl
pop bx
endm

%TITLE "Робота з резидентними програмами."
IDEAL
MODEL small
STACK 256
DATASEG
M1 DB ':$'
M2 DB 'Current time....$'
M3 DB '',10,13,'$'
CODESEG
start:
mov ax,@DATA ;
mov ds,ax

xor ax,ax
mov ah,2h ;отримання часу
int 1Ah
OutStr M2
Decomposition ch ;ch - години
OutStr M1
Decomposition cl ;cl - хвилини
OutStr M1
Decomposition dh ;dh - секунди
OutStr M3

exit:
mov ax,4C00h
int 21h
END start


И есть резидентная програма, которая прокручивает символы в углу екрана.
Код:
CODE    SEGMENT
    ORG     100H
    ASSUME      CS:CODE,DS:CODE
BEGIN:  JMP     START
    INT_TIM     LABEL   DWORD
    IP_TIM      DW  ?
    CS_TIM      DW  ?
    TIK     DB  ?
    NCH     DB  0
PROCESS:                    ; НАЧАЛО РЕЗИДЕНТНОЙ ЧАСТИ
    CLI             ; Запрещение прерываний
    INC     TIK     ; Увеличение счетчика тиков
    CMP     TIK,10      ; Сравнение его с 10:
    JL      A1      ; если меньше, то конец прерывания
    PUSH        ES      ; Сохранение регистров в стеке
    PUSH        AX
    MOV     AX,0B800H       ; Вывод символа по номеру NCH
    MOV     ES,AX       ; прямой записью в видеопамять
    XOR     AL,AL
    MOV     TIK,AL
    INC     NCH
    MOV     AL,NCH
    MOV     ES:[0],AL
    MOV     AL,1EH
    MOV     ES:[1],AL
    POP     AX      ; Восстановление регистров
    POP     ES
A1: STI             ; Разрешение прерываний
    PUSH        AX
    POP     AX
    IRET                ; Возврат управления

START:                  ; НАЧАЛО ВСПОМОГАТЕЛЬНОЙ ЧАСТИ
    MOV     AX,351CH        ; Сохранение вектора 1CH
    INT     21H
    MOV     IP_TIM,BX
    MOV     CS_TIM,ES
    MOV     AX,251CH        ; Установка вектора 1CH
    LEA     DX,PROCESS  ; по адресу метки PROCESS
    INT     21H
    MOV     AL,0        ; Установка начального
    MOV     TIK,AL      ; значения переменной TIK
    LEA     DX,START        ; Установка адреса конца
    INT     27H     ; резидентной части и KEEP
CODE    ENDS
    END     BEGIN

Нужно как-то их связать. Или мб кто-то уже делал такие программы - буду очень благодарен за помощь
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог