Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

простенькая задачка на ассемблере

Ецио Аудиторе Профи (673), закрыт 8 лет назад
В заданном массиве чисел определить номера нечетных чисел и вывести их на екран. Массив чисел в блоке data задается. Нужно сделать под masm32
Лучший ответ
Миоко Таканава Гений (51590) 8 лет назад
The Masm32 SDK:

.386
.model flat, stdcall
option casemap :none

includelib msvcrt.lib

.nolist
include windows.inc
include msvcrt.inc
.list

.data
  array dd -161, -332, 151, 362, -335, -123, 116, 10, 202, -106,\
          427, -47, 183, 381, -226, -459, 185, -383, 500, -112
  Len equ ($ - array) shr 2
  Frmt db "%4u", 0

.data?
  Index dd ?

.code
N183797242:
    xor esi, esi
    mov ecx, Len
DoLoop:
    test array[esi * 4], 1
    jz @F
    mov eax, esi
    inc eax
    push ecx
    invoke crt_printf, addr Frmt, eax
    pop ecx
@@: inc esi
    loop DoLoop
   
    invoke crt__getch
    invoke crt__exit, NULL

    end N183797242

На экран выводятся именно номера нечетных чисел по порядку, а не индексы в массиве.
Остальные ответы
bd sm Ученик (113) 8 лет назад
Сравнивай с помощью cmp
extrnМыслитель (7119) 8 лет назад
нет. с помощью test
bd sm Ученик (113) Наверно, я только начинающий, но я могу ловить прерывания и обрабатывать их :
Питер Иванюк Ученик (201) 8 лет назад
в цикле прибавлять его индекс увеличивая индекс на 2 до заданного значения в каждой итерации.
extrnМыслитель (7119) 8 лет назад
индексы нечетных чисел, а не числа с нечетными индексами.
каждый элемент проверять нужно
Похожие вопросы