Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2016, 19:25   #1
Пэгги
 
Аватар для Пэгги
 
Регистрация: 20.02.2016
Сообщений: 8
По умолчанию Массивы в FASM

Сама задача вот такая: "Дан целочисленный одномерный массив. Вывести на экран нечетные элементы массива и подсчитать их сумму."

Если подсчитать сумму элементов я могу, то вот как вывести на экран нечетные элементы не знаю. Искала в других темах и книгах по ассемблеру, но именно fasm там я не нашла. Может плохо искала и если есть, то можете дать ссылку на информацию и я постараюсь сделать сама. Буду благодарна и за это.

Заранее спасибо за помощь.

Кода нет по причине того, что изначально нужно вывести на экран нечетные элементы массива, а именно это я не знаю как сделать.
Пэгги вне форума Ответить с цитированием
Старый 05.04.2016, 17:03   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Код:
org 100h
jmp start

mess    db  'Summ: $'
array   db  1,2,7,63,55,8,6,3,10,4,20,38
size    =   $ - array         ; размер массива

start:
   mov   ah,9                 ; мессага
   mov   dx,mess              ;
   int   21h                  ;

   mov   si,array             ; SI = указатель на массив
   mov   cx,size              ; CX = длина массива/цикла
   xor   ax,ax                ; очищаем АХ (сюда будем читать)
   shr   bx,16                ; очищаем ВХ (здесь будет сумма)
cycle:                        ;
   lodsb                      ; берём в AL очередной байт из SI
   test  al,1                 ; проверяем бит(0) на 1
   jz    miss                 ; если он сброшен, то число чётное
                              ;      ..пропускаем его.
   add   bx,ax                ; иначе: сумма в ВХ
miss:                         ;
   loop  cycle                ; мотаем цикл СХ-раз

   mov   ax,bx                ; выводим сумму на экран
   mov   bx,10                ; система счисления 10-тичная
   call  hex2asc              ; зовём функцию вывода чисел на экран!

exit:
   xor   ax,ax                ; ждём любую клавишу
   int   16h                  ;
   int   20h                  ; на выход!

;ннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
hex2asc:                 ; Функция переводит числа в символы
   pusha                 ; Вход:  АХ = число, BX = система счисления
   xor   cx,cx           ; Выход: на экране
isDiv:                   ;
   xor   dx,dx           ;
   div   bx              ;
   push  dx              ;
   inc   cx              ;
   or    ax,ax           ;
   jnz   isDiv           ;
isOut:                   ;
   pop   ax              ;
   cmp   al,9            ;
   jle   noHex           ;
   add   al,7            ;
noHex:                   ;
   add   al,30h          ;
   int   29h             ;
   loop  isOut           ;
   popa                  ;
ret                      ;
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FASM sky99 Помощь студентам 6 18.02.2016 05:59
Чем отличаеться fasm от fasm editor&? TotKtoNado Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 07.11.2011 17:00
FASM + RegCreateKeyEx WebbMan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 01.08.2011 15:27
FASM 1 курс Sobaka_ru Помощь студентам 2 29.12.2010 18:10
LEA [FASM] m32 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 03.10.2010 13:57