Вывод системного времени - Assembler
Формулировка задачи:
Программа выводит на экран время , но делает это два раза, в чем проблема -без понятия . Буду благодарен за помощь.
Листинг программы
- .model tiny
- .code
- .186 ; для shr al,4
- org 100h ; com- программа
- start:
- mov al,0Bh ; CMOS OBh - управл¤ющий регистр ¬
- out 70h,al ; порт 70h - индекс CMOS
- in al,71h ; порт 71h - данные CMOS
- mov al,4 ; CMOS 04h - час
- call print_cmos
- mov al,':' ;
- int 29h
- mov al,2 ; CMOS 02h - минута
- call print_cmos
- mov al,':' ; двоеточие
- int 29h
- mov al,0h ; CMOS 00h - секунда
- call print_cmos
- ret
- ; процедура print_cmos
- ; выводит на экран содержимое ¤чейки CMOS с номером в AL
- ; считает, что число, читаемое из CMOS, находитс¤ в формате BCD
- print_cmos proc near
- out 70h,al ; послать AL в индексный порт CMOS
- in al,71h ; прочитать данные
- push ax ; размещение значения в стеке
- shr al,4 ; выделить старшие четыре бита
- add al,'0' ; добавить ASCII-код цифры 0
- int 29h ; вывести на экран
- pop ax ; извлекает значение из стека
- and al,0Fh ; выделить младшие четыре бита
- add al,30h ; добавить ASCII-код цифры 0
- int 29h ; вывести на экран
- ret
- print_cmos endp
- end start
Решение задачи: «Вывод системного времени»
textual
Листинг программы
- mov al,0Bh ; CMOS OBh - управл¤ющий регистр
- out 70h,al ; порт 70h - индекс CMOS
- ; in al,71h ; порт 71h - данные CMOS
Объяснение кода листинга программы
- Сначала выполняется команда mov, которая переносит значение 0Bh в регистр AL.
- Затем выполняется команда out, которая передает значение регистра AL на порт 70h.
- После этого выполняется команда in, которая принимает данные из порта 71h и сохраняет их в регистре AL.
- Код не содержит дополнительных комментариев или пояснений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д