Электронные часы - Assembler

Узнай цену своей работы

Формулировка задачи:

дравствуйте. У никого случайно нету исходника електронныых часов на Ассемблере?

Решение задачи: «Электронные часы»

textual
Листинг программы
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
;-------------------------------------
Delay macro time ;макрос задежки в мкс
local ext,iter
push cx
mov cx,time
ext:
push cx
mov cx,5000
iter:
loop iter
pop cx
loop ext
pop cx
endm
;-----------------------------------------------------------
GotoXY macro x,y ;макрос установки позиции курсора в т.(x,y)
push ax
push bx
push dx
mov ah,02 ;Запрос на установку курсора
mov bh,0 ;Экран 0
mov dh,x ;Строка 0
mov dl,y ;Столбец 0
int 10h ;Передача управления в BIOS
pop dx
pop bx
pop ax
endm
;----------------------------------
ClrScr macro ;макрос очистки экрана
push ax
push bx
push cx
push dx
mov ah,06h ;AH 06 (прокрутка)
mov bh,07 ;Нормальный атрибут (черно/белый)
mov cx,0000 ;Верхняя левая позиция
mov dx,184Fh ;Нижняя правая позиция
int 10h ;Передача управления в BIOS
pop dx
pop cx
pop bx
pop ax
endm
;----------------------------------------------
BlinkOn macro ;макрос включения мигания курсора
push ax
push cx
mov ax,0100h
mov cx,0506h
int 10h
pop cx
pop ax
endm
;------------------------------------------------
BlinkOff macro ;макрос выключения мигания курсора
push ax
push cx
mov ax,0100h
mov cx,2000h
int 10h
pop cx
pop ax
endm
;-----------------------------------------------
 
.model small
.stack 100h
.data
M1 DB ':$'
M2 DB 'Current time....$'
M3 DB '',10,13,'$'
M4 DB 178,177,176,176,177,178,178,177,176,91,'KaspeR labwork #4',93,176,177,178,178,177,176,176,177,178,7,'$'
.code
start:
mov ax,@DATA ;инициализация
mov ds,ax
ClrScr
BlinkOff
 
l1:
GotoXY 0,0
OutStr M2
xor ax,ax
mov ah,2h ;получение времени
int 1Ah
Decomposition ch ;ch - часы
OutStr M1
Decomposition cl ;cl - минуты
OutStr M1
Decomposition dh ;dh - секунды
OutStr M3
 
mov ah,01h ;проверка буфера клавиатуры
int 16h ;флаг нуля zf=0 если была нажата клавиша
jnz exit
 
Delay 10000
jmp l1
 
exit:
ClrScr
BlinkOn
OutStr M4 ;это про меня!
mov ax,4C00h
int 21h
END start

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5