Как Обнулять Блок данных разного размера
Михаил; 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 не имеет никакого значения.