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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2012, 22:06   #1
openatom
 
Регистрация: 20.05.2012
Сообщений: 5
Вопрос TASM :: Найти все эллементы в массиве А, которые делются на 3 и 2...

Всем привет
Начал изучать ассемблер недавно, в общем получил задания:
Свормировать одномерный массив А = {Аi} (i=1...40), где Аi вычисляется по формуле Ai=(3*i+7)/5+(i/2+i/3). 0<i<41.
Цитата:
CSEG SEGMENT
ASSUME CS:CSEG;DS:CSEG

MAS DW 40 DUP (0)
A DW 5H
B DW 3H
C DW 2H

START:
PUSH CS
POP DS

MOV SI, 80
MOV CX, 28H
R1:
DEC SI
DEC SI
MOV AX, CX
MUL B
ADD AX, 7H
XOR DX,DX
DIV A
MOV BX, AX
MOV AX, CX
XOR DX,DX
DIV C
ADD BX, AX
MOV AX, CX
XOR DX, DX
DIV B
ADD BX, AX
MOV MAS[SI], BX
LOOP R1

MOV AX, 4C00H
INT 21H
CSEG ENDS
END START

После этого требуется следующее:
Найти все эллементы в массиве А, которые делются на 3 и 2 и сдвинуть их влево на 2 разряда.

Вопрос такой, для этого нужно писать новую программу или дорабатывать старую? И вопрос в том, как это осуществить?
Буду благодарен за любую помощь
openatom вне форума Ответить с цитированием
Старый 28.05.2012, 07:42   #2
openatom
 
Регистрация: 20.05.2012
Сообщений: 5
По умолчанию

Маленько накидал, но не в курсе как сделать цикл?

Код:
CSEG SEGMENT             ; Начало сегмента кода
ASSUME CS:CSEG;DS:CSEG   ; Определение начала сегмента данных и сегмента кода в памяти

MAS DW 20 dup (0)

A DW 2H
B DW 3H

START:
PUSH CS                  ; Размещаем в стеке CS
POP DS                   ; Извлекаем из стека DS

mov cx 20                ; Задаем 20 элементов массива (20 циклов)
mov si, 0                ; Заносим в регистр 0
r1:
inc si                   ; Увеличиваем si на 1
inc si                   ; Увеличиваем si на 1
mov ax,si                ; Заносим элемент массива в ax
mov mas[si-2],ax         ; Сдвигаем элементы массива
loop r1                  ; Выполнение цикла

mov cx, 20               ; 
mov si, 0                ; 
r2:
mov ax, mas[si]          ; Заносим в ax эллемент массива
mov bx,2                 ; Заносим в bx 2
div bx,2                 ; Делим bx на 2
mov ah, dx               ; Заносим в ah dx



MOV AX, 4C00H	         ; Обнуление AX
INT 21H                  ; Вызов прерывания DOS
CSEG ENDS                ; Конец сегмента кода
END START				 ; Конец программы
openatom вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Квадраты некоторых трехзначных чисел оканчиваются тремя цифрами, которые как раз и со-ставляют исходные числа. Найти все такие monokol Помощь студентам 1 24.12.2011 13:57
Квадраты некоторых трехзначных чисел оканчиваются тремя цифрами, которые как раз и со-ставляют исходные числа. Найти все такие monokol Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2011 18:01
Квадраты некоторых трехзначных чисел оканчиваются тремя цифрами, которые как раз и со-ставляют исходные числа. Найти все такие monokol Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2011 16:44