Использование строковых массивов

Тема в разделе "WASM.BEGINNERS", создана пользователем dsoft, 24 дек 2010.

  1. dsoft

    dsoft Евгений

    Публикаций:
    0
    Регистрация:
    20 май 2007
    Сообщения:
    54
    Адрес:
    Омск
    Код (Text):
    1. .data
    2.   szAarray BYTE 'Item1', 0
    3.      BYTE 'Item2', 0
    4.      BYTE 'Item3', 0
    5.      BYTE 'Item4', 0
    6.      BYTE 'Item5', 0
    7.      BYTE 'Item6', 0
    8.      BYTE 'Item7', 0
    9.      BYTE 'Item8', 0
    10.      BYTE 'Item9', 0
    11. .data?
    12.   szName    DWORD 9 dup(?)
    13. ...
    14.   lea esi, szArray
    15.   xor ebx, ebx
    16.   .repeat
    17.     lodsb
    18.     .if al != 0
    19.       dec esi
    20.       mov szName[ebx * sizeof DWORD], esi
    21.       inc esi
    22.       .while TRUE
    23.         lodsb
    24.         .break .if al == 0
    25.       .endw
    26.     .endif
    27.     inc ebx
    28.   .until ebx == 9
    29. ...
    30.   mov    eax, szName[ebx * sizeof DWORD]
    31.   invoke crt_printf, eax
    Для получения адресов отдельных строк массива я использую приведённый код, но как то всё это мне кажется криво. Существует ли, какой-нибудь стандартный способ в MASM-е?

    И дополнительно, можно ли для функции crt_printf установить цвет выводимого текста?