Как Обнулять Блок данных разного
размера
Михаил;
1.12.04
Есть такая вот задачка, у меня имеется блок данных DB1, в котором
забиты биты ошибок, система только запускаеться и необходимо
периодически добавлять и удалять количество битов, тоесть размер
блока данных DB1 будет меняться, мне необходимо периодически
обнулять данные биты ошибок.
я обнуляю с помощью BLKMOV, там надо задать нач. адрес, кол-во байт
которорые нужно занести в блок DB, каждый раз при изменении размера
DB1, приходиться менять и значение в параметрах ф-ии BLKMOV, Как
сделать так чтобы автоматически подставлялся размер обнуляемого DB,
(если можно примерчик пожалуйста).
Re: Как Обнулять Блок данных разного
размера
В. Хрижановский,
BTC; 1.12.04
Во-первых, можно просто зарезервировать нужное число битов. DB
тогда будет иметь постоянную длину. А теперь по существу.
OPN DB1
L DBLG
В ACCU1 в результате имеем длину блока. А далее - ее в пойнтер для
BLKMOV. В явном виде уже не получится, нужно самому сформировать
этот пойнтер. Если длина большая, может потребоваться не один вызов
BLKMOV.
См. http://www.btc-automation.lv/
Re: Как Обнулять Блок данных разного
размера
Михаил; 2.12.04
У меня как раз проблемы каким образом запихать эту длину DB в
BLKMOV, тоесть как сформировать этот поинтер?
Re: Как Обнулять Блок данных разного
размера
В. Хрижановский,
BTC; 2.12.04
Вот пример:
VAR_TEMP
pDB1 : ANY ;
DBLen : INT;
SaveAR1: DWORD;
NETWORK
TITLE =
//Preparing of pointer.
OPN DB1;
L DBLG;
T DBLen;
TAR1;
T SaveAR1;
LAR1 P##pDB1;
L B#16#10; // Syntax ID
T LB [AR1,P#0.0];
L B#16#2; // Data type: byte
T LB [AR1,P#1.0];
L DBLen; // Repetition factor
T LW [AR1,P#2.0];
L 1; // DB1 as destination
T LW [AR1,P#4.0];
L P#0.0; // From start of DB1
T LD [AR1,P#6.0];
L B#16#84; // Memory area: DB
T LB [AR1,P#6.0];
Ну а далее надо указать pSource как аргумент для BLKMOV. Как и где
вы будете вызывать этот кусок, я не знаю. А тут есть нюансы.
Поэтому рекомендую сохранять AR1 в SaveAR1. После выполнения BLKMOV
восстановите командами L SaveAR1; LAR1.
Re: Как Обнулять Блок данных разного
размера
Михаил; 3.12.04
В. Хрижановский, спасибо друг я понял. Я просто почти не работал
ранее с указателями, поэтому для меня эта задачка стала проблемой.
Буду пробовать.
Re: Как Обнулять Блок данных разного
размера
Валентин; 6.12.04
Если DB не находится на флэш-карте и не UNLINKED , его можно
удалить с помощью SFC23, а следующей строкой программы восстановить
блок с помощью SFC22, но уже с нулевыми значениями в битах DB. В
данном случае длина DB не имеет никакого значения.