Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.10.2010
Сообщений: 25
1

Цикл: нахождение наименьшего положительного элемента массива [masm32]

08.10.2010, 16:35. Просмотров 1853. Ответов 2
Метки нет (Все метки)


Вечер добрый. Ассемблер только начали изучать...линейные проги ещё ладно,решаемо...
но вот на организацию циклов уже не очень... просьба проверить ниже приведенную программу.
Ошибок не выдает,но и выполняться не хочет почему-то...сил нет уже,мозг взрывается(
если не составит труда,пожалуйста...

1. Найти в массиве из 5-ти переменных наименьший положительный элемент.
а) 4, 6, -2, 9, 1
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.data
         buf db 8 dup(?)
         frmt db "Z= %d",0
         Title1 db "Массив с наим. положит. эл-том",0
         masA db -4, 6, -2, 9, 1
         len  EQU  $-masA       ; опр. раз-р м-ва
         min db 0
.code
start:
         mov  ebx,offset masA   ; поиск наим. полож. эл-т м-ва А
         mov  ecx, len      ; поместим в регистр ECX размер массива в байтах
         mov  AL,0          ; обнуляем
      a0:    cmp byte ptr [ebx], al     ;проверка ebx на содержание 0
                  jl a1                 ;если <0, перех. на а1
                  mov al, byte ptr [ebx]        ;заносим в AL первый полож.эл-т
          jmp h             ;переход на h
      a1:     inc ebx           ; увеличиваем адрес (переход к след.эл.массива)
                   loop a0  ; при выходе из цикла в AL наименьший положительный элемент массива А
      h:      mov min, al
          cmp al, byte ptr [ebx]        ; цикл со сравнением со старым полож.эл-том и нулем
                  jg a2                 
          cmp byte ptr [ebx], 0
          jl a2
            mov min, al
       a2:  inc ebx                 ;переход к след. эл. и проверка на конец цикла
                loop h  
invoke wsprintf,offset buf,offset frmt,eax
invoke MessageBoxA,0,offset buf,offset Title1,MB_OK
invoke ExitProcess,0
end start
Добавлено через 17 минут
^^ спасибо)
просто первый раз обращаюсь с подобной просьбой.
сама хотела отредактировать,не успела...)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2010, 16:35
Ответы с готовыми решениями:

Нахождение номера наименьшего положительного элемента в последовательности
Написать программу нахождения номера наименьшего положительного элемента в последовательности N...

Неправильный результат поиска наименьшего положительного элемента массива
Добрый день Не могу разобраться в чем ошибка. Задача: Даны вещественные массивы А, F. Для...

Заполнение масива по формуле и нахождение наименьшего положительного элемента масива
Итак условие задачи: Написать программу для заполнения масива з 20 элементов по формуле...

Найти номер и значение наименьшего положительного нечётного элемента массива
Помогите написать программу на Си Найти номер и значение наименьшего положительного нечётного...

2
2530 / 826 / 10
Регистрация: 31.05.2009
Сообщений: 1,669
08.10.2010, 16:43 2
поправил немного
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
.386
.model flat, stdcall
option casemap :none
    
    include windows.inc
    include user32.inc
    include kernel32.inc
    includelib user32.lib
    includelib kernel32.lib
    
    bsize equ 300
.data
    buf db 8 dup(?)
    frmt db "Z= %d",0
    Title1 db "Массив с наим. положит. эл-том",0
    masA db -4, 6, -2, 9, 1
    len  EQU  $-masA           ; опр. раз-р м-ва
    min db 0
.code
start:
    mov  ebx,offset masA       ; поиск наим. полож. эл-т м-ва А
    mov  ecx, len              ; поместим в регистр ECX размер массива в байтах
    mov  AL,0                  ; обнуляем
a0:
    cmp byte ptr [ebx], al         ;проверка ebx на содержание 0
    jl a1                                 ;если <0, перех. на а1
    mov al, byte ptr [ebx]                ;заносим в AL первый полож.эл-т
    jmp h1                         ;переход на h
a1:
    inc ebx                       ; увеличиваем адрес (переход к след.эл.массива)
    loop a0     ; при выходе из цикла в AL наименьший положительный элемент массива А
 
h1:
    mov dl,[ebx] ; берем очередной символ
    test dl,dl  ; проверяем его на знак
    js a2 ; пропускаем если число отрицательное
    
       cmp dl,al ; сравниваем текущее и наименьшее числа
       ja a2  ; пропускаем если больше
    
          mov al,dl ; делаем текущее число наименьшим
a2:
    inc ebx ; повторить если не все
    loop h1
 
    invoke wsprintf,offset buf,offset frmt,eax
    invoke MessageBoxA,0,offset buf,offset Title1,MB_OK
    invoke ExitProcess,0
end start
1
0 / 0 / 0
Регистрация: 08.10.2010
Сообщений: 25
08.10.2010, 16:48  [ТС] 3
ой...постараюсь разобраться)
спасибо большое.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2010, 16:48

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Вывести на экран произведение наименьшего по модулю отрицательного и наименьшего положительного элемента
Организовать ввод последовательности из N чисел и получить и вывести на экран произведение...

Двумерный массив: поиск наименьшего положительного элемента, элементы массива образуют арифметические прогрессии
Помогите пожалуйста с программой: Составить программу поиска наименьшего из положительных элементов...

Нахождение наименьшего элемента массива
Составьте программу нахождения наименьшего элемента двумерного массива A(N,M), большего данного T

Нахождение наименьшего элемента массива
Задан одномерный числовой массив. Постройте алгоритм и составьте программу нахождения наименьшего...

Нахождение последнего положительного элемента массива
Нужно составить программу нахождения последнего положительного элемента массива, длину которого...

Нахождение наименьшего по модулю элемента массива в С++
Вот мой код :#include &lt;iostream&gt; #include&lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;cmath&gt; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.