Вывод формата даты и времени - Assembler

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

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

Просьба сразу не кидать тухлыми помидорами, я понимаю для многих это не сложно, но я в тупике. Делаю контрольную по ассемблеру. Учусь заочно, поэтому приходится фактически быть самоучкой. Но тут завал. Вот значит что уже есть.
.186
.model small,stdcall
.stack 100h
.data
Messd db "Current date:", 0Ah, 0Dh, '$'
Messt db "Current time:", '$'
Hour db ?
Minute db ?
Sec db ? 
option casemap:none
.code
start:
    mov ax, @data
    mov ds, ax ; Определяем начало данных в сегменте
    mov ax,3;
    int 10h; Переводим в текстовый режим
    xor ax, ax ; сбрасываем регистр в 0
    mov dx, offset Messd ; Начало данных в dx
    mov ah, 09h
    int 21h; Выводим
    xor ax,ax
    xor dx,dx
    mov dx, offset Messt
    mov ah ,09h
    int 21h
    mov ah, 02h
    int 1Ah
    mov Hour, ch
    mov Minute, cl
    mov Sec, dh
    mov ah, 4ch       ;Выходим из программы
        int 21h
end start
Работу выполняю в masm611, дебаггер turbodebugger. В отладчике я вижу в регистрах ch, cl, dh текущее время системы. Но оно в BSD формате, а чтобы вывести я так понял мне надо шестнадцатеричный вид. Мне придется выделять по 4 бита из этих регистров, чтобы получить двоичный код каждого отдельно взятого числа, потом перевести в шестнадцатеричный код. Так вот я не пойму...КАК в ассемблере перевести из двоичной системы в шестнадцатеричный. На бумаге я распишу что и куда, но принцип, а мне нужен не столько голый код, который я слету не пойму, а именно принцип перевода двоичной системы в шестнадцатеричную в ассемблере, я не понимаю. Просьба объяснить как можно подробнее что, почему, как и зачем.

Решение задачи: «Вывод формата даты и времени»

textual
Листинг программы
form proc
    mov al, 0h
    mov ah, 38h
    int 21h
    ret
form endp

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


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

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

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