ASM->>>VB6 HELP!!!!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Tekil
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 07.09.2003 (Вс) 9:59

ASM->>>VB6 HELP!!!!

Сообщение Tekil » 07.09.2003 (Вс) 10:09

Помогите переложить на VB приведенный алгоритм с асма.
Код: Выделить всё
;*****************************************************************************
;* ПРОЦЕДУРА ВЫЧИСЛЕНИЯ 8-БИТНОЙ CRC для MCS51    *
;*****************************************************************************
;Пример использования:
   mov   CRC,#0      ;Перед вычислением надо обнулять CRC.
     mov   A,BYTE1      ;Названия байтов к примеру.
   call   DO_CRC
;В CRC сейчас находится контрольная сумма байта BYTE1.
   mov   A,BYTE2
   call   DO_CRC
;В CRC сейчас находится контрольная сумма байтов BYTE1 и BYTE2.
   mov   A,BYTE3
   call   DO_CRC
;В CRC сейчас находится контрольная сумма байтов BYTE1, BYTE2, BYTE3.
;И так далее.

;-----------------------------------------------------------------------------

; Контрольная сумма.
CRC   DATA   1Bh      ;переменная CRC
;-----------------------------------------------------------------------------
; Процедура обновления CRC (циклическая контрольная сумма). Параметр в A.
DO_CRC:
   PUSH   ACC      ;сохранить аккумулятор в стеке
   PUSH   B      ;сохранить B в стеке
   PUSH   ACC      ;сохранить аккумулятор в стеке
   MOV   B,#8      ;счетчик сдвигов = 8
CRC_LOOP:
   XRL   A,CRC      ;"исключающее ИЛИ" над ACC и предыдущим операндом
   RRC   A      ;крутить вправо на бит через флаг переноса
   MOV   A,CRC      ;получить предыдущее значение CRC
   JNC   ZERO      ;пропустить если был 0
   XRL   A,#18H      ;"исключающее ИЛИ" над ACC и операндом 18H
ZERO:
   RRC   A      ;крутить вправо на бит через флаг переноса
   MOV   CRC,A      ;сохранить текущее значение CRC
   POP   ACC      ;получить предыдущее значение
   RR   A      ;крутить вправо
   PUSH   ACC      ;сохранить результат на стеке
   DJNZ   B,CRC_LOOP   ;повторять 8 раз
   POP   ACC      ;чистка стека
   POP   B      ;восстановить B
   POP   ACC      ;восстановить аккумулятор
   RET         ;выход
;-----------------------------------------------------------------------------




Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 11

    TopList  
cron