Не могу разобраться с метками

Тема в разделе "WASM.ASSEMBLER", создана пользователем winnix, 29 ноя 2008.

  1. winnix

    winnix New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    22
    Задача в написании макрокоманды сортировки массива.Написал.При трансляции возникает error A2005: Symbol is multidefined: M1 и error A2026: Reference to multidefined symbol...это вроде из за меток...Что в них никак не могу разобраться.
    Код (Text):
    1. NAME SORT
    2.  
    3.  
    4. DATA SEGMENT
    5. MAS1 DW 3,4,2,5,1,8,6,2,5,9
    6. MAS2 DW 3,1,5,2,7,3,8,2,5,1
    7. DATA ENDS
    8.  
    9. STACK SEGMENT STACK
    10.       DW 16 DUP(?)
    11.  STKTOP LABEL WORD
    12. STACK ENDS
    13.  
    14. CODE SEGMENT
    15.      ASSUME CS:CODE,DS:DATA,SS:STACK
    16.  
    17. SORTMAS MACRO MAS
    18.  
    19.    MOV DI,0
    20.    MOV CX,LENGTH MAS-1    ;индекс массива
    21.    MOV SI,0                ;загрузка i-индекса
    22.  
    23.    M1 LABEL FAR :  MOV DI,CX          ;загрузка j-индекса
    24.          JMP FAR PTR M2           ;переход на основное тело цикла
    25.  
    26.    M4 LABEL FAR :  MOV BX,SI         ;BX=i
    27.         MOV AX,MAS[BX]   ;AX=mas[i]-первый элемент массива
    28.         MOV BX,DI         ;BX=j
    29.         CMP AX,MAS[BX]   ;сравнение mas[i] c mas[j]
    30.         JLE FAR PTR M3           ;переход на метку если mas[i]<mas[j]
    31.         MOV DX,AX        ;HD=mas[i]
    32.         MOV BX,DI         ;BX=j
    33.         MOV AX,MAS[BX]   ;AX=mas[j]
    34.         MOV BX,SI         ;BX=i
    35.         MOV MAS[BX],AX   ;mas[i]=mas[j]
    36.         MOV BX,DI         ;BX=j
    37.         MOV AX,DX
    38.         MOV MAS[BX],AX   ;mas[j]=HD
    39.                          ;обмениваем элементы
    40.    M3 LABEL FAR :  DEC DI           ;j--
    41.  
    42.    M2 LABEL FAR :  MOV AX,DI         ;AX=j
    43.         CMP AX,SI         ;сравнить j=i
    44.         JG FAR PTR M4             ;если j>i то переход на цикл обмена MEX,иначе чикл по i
    45.         INC SI            ;i++
    46.         CMP SI,CX          ;сравниваем i с CX
    47.         JL FAR PTR M1            ;i>n выход из цикла,иначе продолжаем
    48.  
    49.  
    50.  
    51. ENDM
    52.  
    53. START:
    54.  
    55.        MOV AX,DATA
    56.        MOV DS,AX
    57.        MOV AX,STACK
    58.        MOV SS,AX
    59.        LEA SP,STKTOP
    60.  
    61.        SORTMAS MAS1
    62.        SORTMAS MAS2
    63. CODE ENDS
    64.      END START
    Подскажите как исправить...Работаю на MASM...(
     
  2. winnix

    winnix New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    22
    Все разобрался...Спасибо...
     
  3. winnix

    winnix New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    22
    Новая проблема...не работает сам алгоритм сортировки...(((
     
  4. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    с алгоритмами - в другой раздел раздел , пожалуста
     
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    этот работает и очень хорошо ;))
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.787
    winnix
    Здесьреализация на MASM сортировок: пузырьковой, шейкером, пирамидальной, прямым включением, прямым выбором, Шелла, Хоара (быстрая сортировка) на примере одного и того же массива двойных слов