Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 2

Rdtsc в DOS

07.10.2014, 19:42. Показов 3482. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, форумчане, подскажите пожалуйста по использованию команды rdtsc в DOS.
Она возвращает число тиков в EDX:EAX - я пытаюсь записать их (EAX, EDX) в переменные, и потом уже выводить.
Собственно вопрос - можно ли использовать напрямую 32-битные регистры в DOS?
Компилируется нормально, но при запуске зависает наглухо (DOSBOX 0.74).
Вот, собственно весь код:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.model small
.386
.stack 100h
.data
    time1 DQ ?
    time2 DQ ?
    time3 DQ ?
.code
    pushad ; сохранение РОН в стек
    xor EAX, EAX
    db   0fh, 31h ; RDTSC
    mov dword ptr [time1], EAX ;начальное значение 1
    mov dword ptr [time1+4], EDX ;начальное значение 1
    mov cx, 10000
loop1:
    nop
loop loop1
    db   0fh, 31h ; RDTSC
    mov dword ptr [time2], EAX ;конечное значение 1, начальное значение 2
    mov dword ptr [time2+4], EDX ;конечное значение 1, начальное значение 2
loop2:
loop loop2
    db   0fh, 31h ; RDTSC
    mov dword ptr [time3], EAX ;конечное значение 2
    mov dword ptr [time3+4], EDX ;конечное значение 2
;вывод переменных
    popad ; извлечение РОН из стека
    ret
END
Может есть примеры её использования именно в DOS?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.10.2014, 19:42
Ответы с готовыми решениями:

Работа с CMOS и RDTSC
Не подскажите, каким образом можно сопоставить временные каналы 70h и 71h и значения счетчика временных тиков процессора (посредством...

Как создать корректную статическую (lib) библиотеку под MS-DOS (16 bit) из Windos (32-64 bit) или из MS-DOS?
Привет всем! Кто подскажет, как корректно создавать статические библиотеки для 16-битного режима адресации процессора? Другими словами,...

MS DOS на VirtualBox
Господа программисты! Такой вопрос, есть программа написанная на ассемблере для MS DOS. На виртуальную машину установил MS DOS как в...

5
Native x86
Эксперт Hardware
 Аватар для quwy
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
07.10.2014, 19:53
Цитата Сообщение от andrey1498 Посмотреть сообщение
можно ли использовать напрямую 32-битные регистры в DOS?
Можно без ограничений.

Цитата Сообщение от andrey1498 Посмотреть сообщение
Компилируется нормально, но при запуске зависает наглухо (DOSBOX 0.74).
Оно не зависает, оно крутит цикл на четыре миллиарда итераций по метке loop2, а производительность DOSBOX такова, что это занимает не доли секунды, как на живом процессоре, а вполне ощутимое время.
1
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 2
07.10.2014, 20:07  [ТС]
Понял про ошибку с cx, убрал циклы вообще, все равно не работает (все также зависает) - может я еще где-нибудь ошибся?
0
programmer
 Аватар для Thread
2391 / 525 / 69
Регистрация: 01.06.2011
Сообщений: 3,639
08.10.2014, 03:38
andrey1498,

DS установи на свой сегмент данных
Assembler
1
2
3
    
mov ax,@data
mov ds,ax
программы типа ЕХЕ должны завершаться системным вызовом DOS 4Ch
Assembler
1
2
3
    
mov ax,4c00
int 21h
с кодом не разбирался,но у меня все нормально отрабатывает и в DOSBOX
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.model small
.386
.stack 100h
.data 
    time1 DQ ?
    time2 DQ ?
    time3 DQ ?
.code    
    mov ax,@data
    mov ds,ax
    pushad ; сохранение РОН в стек
    xor EAX, EAX
    db   0fh, 31h ; RDTSC
    mov dword ptr [time1], EAX ;начальное значение 1
    mov dword ptr [time1+4], EDX ;начальное значение 1
    mov cx, 10000
loop1:
    nop
loop loop1
    db   0fh, 31h ; RDTSC
    mov dword ptr [time2], EAX ;конечное значение 1, начальное значение 2
    mov dword ptr [time2+4], EDX ;конечное значение 1, начальное значение 2
loop2:
loop loop2
    db   0fh, 31h ; RDTSC
    mov dword ptr [time3], EAX ;конечное значение 2
    mov dword ptr [time3+4], EDX ;конечное значение 2
;вывод переменных
    popad ; извлечение РОН из стека
    mov ax,4c00h
    int 21h
END
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
08.10.2014, 03:52
andrey1498,
если вместо .386 поставить .586 тогда масм узнает и команду RDTSC и ее не нужно писать в виде набора байтов db 0fh, 31h
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
08.10.2014, 11:20
andrey1498, почему-то даже работает(псевдослучайный генератор):
Assembler
1
2
3
4
5
6
7
8
9
10
11
    org 100h
    mov dx, 70h ;CMOS port 
    xor ax,ax   ; RTC seconds index
    out dx, al  
    inc dx
    in  al,dx   ; read seconds from RTC
    and al, 1fh ; no more for ROR
    mov cl, al  ;
    rdtsc       ; read CPU timestamp counter
    ror eax,cl  ; random rotate
    ret
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.10.2014, 11:20
Помогаю со студенческими работами здесь

DLL в dos
Привет, всем Как сделать DLL на tasm, и вызвать потом. есть у кого нить пустышка dll ? Бросьте если ни тяжело, спасибо

MS DOS Debug
Подскажите код программы написанной в MS DOS с помашью Debug Прислать операнд из стека поднять во вторую степень и полеченный...

Rdtsc vs rdtscp
rdtsc vs rdtscp из под virtual box ( host xp, guest debian ) rdtsc встроенная в с++ код постоянно выдает разницу в 1100 - 1700 даже...

Функция RDTSC
Помогите пожалуйста(( Уже 6 часов сижу и не могу сделать лабу! :wall: Вот что у меня: Нужно с помощью RDTSC узнать тактовую частоту...

Как установить модуль rdtsc?
Здравствуйте! Решил найти пример использования модуля Threading. Нашёл пример. Собственно, вот он: from rdtsc import rdtsc from...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru