Форум программистов, компьютерный форум, киберфорум
Наши страницы
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
AISAlexa
2 / 2 / 1
Регистрация: 10.03.2011
Сообщений: 39
1

Подскажите (Прерывание ассемблера в Паскале)

09.08.2011, 17:32. Просмотров 1284. Ответов 8
Метки нет (Все метки)

Подскажите, как КОРРЕКТНО использовать прерывание внутри программы?
Снизу привёл код программы. В первом случае (Enable_Assembler_code=false) Считываем время и копируем значения. Во втором, нужно сделать тоже самое.
Подправьте, пожалуёста.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
   if Enable_Assembler_code = false then
    begin
     gettime(hour, minute, second, sec00);
     ahour:=hour;
     aminute:=minute;
     asecond:=second;
     asec00:=sec00;
    end
   else
    begin
asm
    mov ah, 0
    int $16
 
    mov ah,$2C;{Считывание времени из BIOS.}
    int $21
 
    XCHG ahour, ch;{Обмен значениями.}
    XCHG aminute, cl
    XCHG asecond, dh
    XCHG asec00, dl
end;
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2011, 17:32
Ответы с готовыми решениями:

Прерывание ошибок в паскале
Йоу,ребят. Есть одна программа по вычислению корней квадратного уравнения.Нужно сделать так,чтобы...

арифметические операции в паскале, использование ассемблера
Написать программу вычисляющую арифметические операции(+,-,*,/). При этом результат результат...

Подскажите в чем ошибка на паскале
Суть задачи: отсортировать произвольную МАТРИЦУ методом вставок с использованием барьера вставок. с...

Подскажите что такое buf в паскале
Подскажите что такое buf в паскале

Подскажите, пожалуйста, как в паскале на экране вывести 0.5 или 1/2?
Подскажите, пожалуйста, как в паскале на экране вывести 0.5 или 1/2? Заранее спасибо.

8
Step_UA
1537 / 621 / 214
Регистрация: 09.06.2011
Сообщений: 1,280
09.08.2011, 20:05 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
 if Enable_Assembler_code = false then
     gettime(ahour, aminute, asecond, asec00)
   else
asm
        mov ah,$2C;{Считывание времени из DOS.}
        int $21
 
        mov byte ptr ahour, ch;
        mov byte ptr aminute, cl
        mov byte ptr asecond, dh
        mov byte ptr asec00, dl
end;
PS в FreePascal для Win32 вызов прерываний работать не будет (
0
AISAlexa
2 / 2 / 1
Регистрация: 10.03.2011
Сообщений: 39
09.08.2011, 20:45  [ТС] 3
Может есть какие-то аналоги... может можно что-нибудь сделать...
Для меня цель считать время быстрее, чем процедура 'gettime'.
0
Step_UA
1537 / 621 / 214
Регистрация: 09.06.2011
Сообщений: 1,280
09.08.2011, 21:15 4
если вам это необходимо для определения промежутков времени, то можно работать с ячейкой 0:46с ... но точность ~ 55 мсек
Pascal
1
var tic:longint absolute $0:$046c;
0
09.08.2011, 21:15
AISAlexa
2 / 2 / 1
Регистрация: 10.03.2011
Сообщений: 39
10.08.2011, 13:30  [ТС] 5
А можно маленький примерчик(От 'Var' до 'END.'). Для наглядности, так сказать.
0
Step_UA
1537 / 621 / 214
Регистрация: 09.06.2011
Сообщений: 1,280
10.08.2011, 16:14 6
Pascal
1
2
3
4
5
6
7
8
9
10
var
 t:longint absolute 0:$46c;
    start,finish:longint;
begin
 start:=t;
 readln;
 finish:=t;
 writeln('Тики = ',finish-start,'  Время = ',(finish-start)/18.2:0:3);
 readln
end.
PS не знаю работает ли на FP Win32 ... стоит FP Go32v2
0
AISAlexa
2 / 2 / 1
Регистрация: 10.03.2011
Сообщений: 39
10.08.2011, 20:19  [ТС] 7
**.pas(2,22) Error: absolute can only be associated with a var or const
Жалко...
0
Puporev
Модератор
58517 / 44439 / 30685
Регистрация: 18.05.2008
Сообщений: 106,456
10.08.2011, 20:34 8
Вот здесь можно посмотреть..
http://volvo71.narod.ru/time_count.htm
0
AISAlexa
2 / 2 / 1
Регистрация: 10.03.2011
Сообщений: 39
10.10.2011, 20:07  [ТС] 9
А какие-нибудь прерывания выполнить можно: иниц. графики, обработчик клавы, работа с каталогами/файлами? Что-нибудь-то должно быть...
0
10.10.2011, 20:07
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2011, 20:07

Подскажите как с Паскале поменять местами целую и дробную часть.
Подскажите как с Паскале поменять местами целую и дробную часть. Например было число 456.123, а...

Как на паскале написать |sinx/3,12+cosx2|-8,3sin3x подскажите пожалуйста
cos|2x|/1,12-cos(3x-2)+6,15

Как создать фаил в паскале вставками ассемблера
Как создать фаил в паскале вставками ассемблера.Спасибо)


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.