Вывод системного времени на экран - Assembler

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

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

Здравствуйте! Каким образом можно вывести время на экран при загрузке ОС? Этот вариант не пойму почему не выводит:
.MODEL  TINY
.CODE
ORG 7c00h
 
Main:
   mov   ax, 2
   int   10h
   mov ah,0;организация 5 секундой задержки 
   int 1Ah
   mov bx,dx
   add bx,91 ; в одной секунде 18,2 тика 5сек*18,2=91
a1: 
   int 1Ah
   cmp bx,dx
   jne a1
   mov ah,2;получаю текущее время
   int 1Ah
   mov ah,0
   mov al,ch;час в формате BCD
   ror ax, 1
   ror ax, 1
   ror ax, 1
   ror ax, 1
   shr ah, 1
   shr ah, 1
   shr ah, 1
   shr ah, 1
   or ax,'00'
   mov word ptr string,ax
   mov ah,0
   mov al,cl;минуты в формате BCD
   ror ax, 1
   ror ax, 1
   ror ax, 1
   ror ax, 1
   shr ah, 1
   shr ah, 1
   shr ah, 1
   shr ah, 1
   or ax,'00'
   mov word ptr string+3,ax
   mov ah,0
   mov al,dh;секунды в формате BCD
   ror ax, 1
   ror ax, 1
   ror ax, 1
   ror ax, 1
   shr ah, 1
   shr ah, 1
   shr ah, 1
   shr ah, 1
   or ax,'00'
   mov word ptr string+6,ax
   mov   ax, 1300h
   mov   cx, len
   mov   bx, 0Fh
   mov   dx, 101h
   mov   bp, offset string
   int   10h
   mov   ah, 0
   int   16h
   jmp   Main
 
exit:
 
string db ?,?,':',?,?,':',?,?,0Dh,'$'
len    equ  $ - string
END Main

Решение задачи: «Вывод системного времени на экран»

textual
Листинг программы
   ror ax,4
   shr ah, 4

Объяснение кода листинга программы

  1. ror ax,4 - операция сдвига регистра ax на 4 бита вправо. При этом младшие 4 бита регистра ax сдвигаются в старшую позицию, а старшие 4 бита сдвигаются в младшую позицию. Результат этой операции сохраняется в регистре ax.
  2. shr ah, 4 - операция сдвига регистра ah на 4 бита вправо. При этом младшие 4 бита регистра ah сдвигаются в старшую позицию, а старшие 4 бита сдвигаются в младшую позицию. Результат этой операции сохраняется в регистре ah.

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

6   голосов , оценка 3.5 из 5
Похожие ответы