Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Помогите пожалуйста. Tasm


Автор: Nubik 25.6.2014, 14:20
У меня была в начале одна задача. "Сформировать одномерный массив A={ai}(i=1...25), где ai вычисляется по формуле ai=(i+5*i/3) 0<i<26" Её я сделал и вот код:
Код:

data segment
mas db 25 dup (?) ;
data ends
code segment
assume cs:code, ds: data,
 start:
   mov ax,data
   mov ds,ax
   mov cl, 5
   mov ch, 3
   mov di, 1
   mov si, 0
 nexti:
   mov ax,di
   mul cl
   div ch
   xor ah,ah
   add ax,di
   mov [si],ax
   add si,1
   inc di
   cmp di,26
   jl nexti
   mov ax,4C00h
   int 21h
 code ends
   ends start

В дополнению к 1 задаче есть еще 2:
1. Найти максимальный элемент в массиве.
2. Вывести четные элементы массива.
Помогите пожалуйста сделать и если можно объясните, что да как.

Автор: ФедосеевПавел 25.6.2014, 20:50
Поищи по форуму подпрограмму вывода чисел на экран.
Максимальный элемент массива ищется также, как в ЯВУ (BASIC, Pascal, C)
max:=a[0];
for i:=1 to n do
  if max<a[i] then
    max:=a[i];
Цикл ты уже умеешь организовывать - проблем быть не должно.

Вывод всех чётных чисел - команда test al, 1 проверяет на чётность регистр al, дальше ветвление jz. А если чётное - воспользоваться подпрограммой вывода.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)