Вывод системного времени на экран - 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
Объяснение кода листинга программы
ror ax,4
- операция сдвига регистра ax на 4 бита вправо. При этом младшие 4 бита регистра ax сдвигаются в старшую позицию, а старшие 4 бита сдвигаются в младшую позицию. Результат этой операции сохраняется в регистре ax.shr ah, 4
- операция сдвига регистра ah на 4 бита вправо. При этом младшие 4 бита регистра ah сдвигаются в старшую позицию, а старшие 4 бита сдвигаются в младшую позицию. Результат этой операции сохраняется в регистре ah.