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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2009, 08:05   #1
Debro
 
Регистрация: 26.12.2009
Сообщений: 4
По умолчанию Masm32, помогите с задачами

Есть задачи - нужно решить на masm32. Срочно. Помогите пожалуйста

1. Найти в массиве из 5-ти переменных наименьший отрицательный элемент.
а) 7, -15, -2, -16, -1

2. Найти в массиве из 5-ти переменных сумму наибольшего отрицательного и наименьшего положительного элементов.
а) 55, -23, 5, 6, -18

3. Составить программу вычисления суммы первых 5-ти членов последовательности: x{n}=n*(n+2)*(n+3)

4. Дан массив из 6 элементов. Подсчитать, сколько раз в нем встречается минимальное по величине число

5. Дана строка. Если строка начинается с буквы А, вывести ее на экран, в противном случае вывести сообщение о неправильных данных

6. Написать программу выбора одинаковых чисел из двух массивов. На совпадение проверять числа, стоящие в массивах на одних и тех же позициях. Одинаковые элементы поместить в отдельный массив и вывести на экран.
Debro вне форума Ответить с цитированием
Старый 26.12.2009, 15:01   #2
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
Сообщение

Цитата:
1. Найти в массиве из 5-ти переменных наименьший отрицательный элемент
Смотри ЭТУ тему, переделаешь под свою(поменяй переход на jg)
2 и 3 задачи вытекают из предыдущей
Цитата:
3. Составить программу вычисления суммы первых 5-ти членов последовательности: x{n}=n*(n+2)*(n+3)
Где-то так(не проверял):
Код:
.data
  xn dd 0
.code
  start:
         
         mov eax,1
         mov edx,2
         lea esi,[xn]
         mov ecx,3 
l1:      mov ebx,edx
         add ebx,eax
         inc edx
         mov [esi],ebx
         inc esi
         loop l1
        
         mov ecx,3       
         lea esi,[xn]
l2:      mov bl,byte ptr[esi]
         mul ebx
         inc esi
         loop l2
         ret
    end start
Цитата:
4. Дан массив из 6 элементов. Подсчитать, сколько раз в нем встречается минимальное по величине число
Не дошло до меня. Это как???

Цитата:
5. Дана строка. Если строка начинается с буквы А, вывести ее на экран, в противном случае вывести сообщение о неправильных данных
Написал под Windows, а не под Dos, но смысл должен быть понятен
Код:
.386
.model flat,stdcall
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib kernel32.lib
include \masm32\include\user32.inc
includelib user32.lib

.data
 TITLEX      DB 'Assembler',0
 MsgCaption  db "Yes!!!",0
 MsgCaptionNo  db "No:(",0
  MsgErr  db "Error",0
.code
start:
    LEA     EBX,TITLEX  
l1:
    MOV     al,[EBX]      
    CMP     al,'A'       
    JnZ      l2
  invoke MessageBox, NULL,addr TITLEX, addr MsgCaption, MB_OK
  invoke ExitProcess,NULL
              
l2: 
  invoke MessageBox, NULL,addr  MsgErr, addr MsgCaptionNo, MB_OK
  invoke ExitProcess,NULL
   ret
end start
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 26.12.2009, 15:18   #3
Debro
 
Регистрация: 26.12.2009
Сообщений: 4
По умолчанию

Блин, кланяюсь в ноги! Все работает, спасибо огромное. Спас задницу мою (:
хотя вторую так чего-то и не понимаю как переделать :\

Последний раз редактировалось Debro; 26.12.2009 в 15:33.
Debro вне форума Ответить с цитированием
Старый 26.12.2009, 20:35   #4
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Цитата:
вторую так чего-то и не понимаю как переделать
Тебе только осталось найти max число и собрать программу воедино как конструктор.Затем осталось только сложить то что было в памяти min и max элемента. Вот сделал, как найти max элемент, остальное сам попробуй. (Прога под DOS):


Код:
     lea bx, mass    ; Загрузить адрес смещения массива
              mov cx, 10      ; Установить счетчик повторений цикла
              mov ax, [bx]    ; Первый элемент массива в Аккумулятор
        beg: cmp [bx], ax     ; Сравнить текущий элемент
     ; массива с максимальным
              jl no           ; он меньше
              mov ax, [bx]    ; он больше или равен
        no:   inc bx          ; Следующий элемент
               inc bx          ; массива
              loop beg
              mov max, ax ; сохраним max число
        quit: mov ax,4C00h    ; Код завершения 0
              int 21h         ; Выход в DOS
  max dw ?
  mass dw 55, -23, 5, 6, -18
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с задачами щдуп Паскаль, Turbo Pascal, PascalABC.NET 1 26.06.2008 18:39