Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 24.09.2010
Сообщений: 6
1

Функция поиска убывающих последовательностей, доработать код

26.12.2012, 14:04. Показов 628. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не могу написать алгоритм этой задачи ,на языке ассемблер. Как именно его записывать??
сам код вот:
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
##########################################
; Функция поиска убывающих
; последовательностей. Через
; ax передаем номер строки в 
; matrix. Если функция определяет, 
; что это строка - убывающая 
; последовательность, то она 
; выводит целиком всю строку. 
; В противном случаи ничего не делает.
;##########################################
sequence proc  // последовательность
    push bx      // сохраним используемый регистр
    push dx  // сохраним адрес буфера
    push cx
    mov cx, N
    mul cx  //умножение ах и сх
    mov bx, 2
    mul bx
    mov bx, ax
    mov si, ax
    mov cx, N
    sub cx, 1   ; ибо последний сравнивать не с чем
cyclp:
    mov ax, matrix[si]
    add si, 2   ; matrix состоит из слов, а в слове 2 байта
    cmp ax, matrix[si]
    jl endl         ; если хоть одно число больше предыдущего, то это точно не то что мы ищем
loop cyclp
    lea dx, ANS     ; если дошли до сюда, то выводим строку
    mov ah, 09h    //вывод строки
    int 21h    //вывод
    mov cx, N
    mov si, bx
cyclinp:            ; собственно вывод
    mov ax, matrix[si]
    add si, 2    // переход к след.элементу
    lea bx, answer   //адрес буфера для преобразования
    call bin2str   //преобразуем число в строку
    lea dx, answer+1   // помещаем в dx адрес начала строки
    mov ah, 09h   // помещаем в ah номер прерывания
    int 21h  // вывод строки
loop cyclinp
endl:
    pop cx  //восстановим счётчик цикла
    pop dx   //восстановим адрес буфера ввода
    pop bx
    ret
endp
start:          ; начало программы
    mov ax,@data     // в ax   занес  занесём адрес сегмента данных
    mov ds,ax  // загрузим адрес сегмента данных в ds
    lea dx, inpSizeMat  
    mov ah, 09h   // для вывода строки нужна функ 09h(вызов функции)
    int 21h //прерывания 21 h(вывод строки)
    lea dx, buff
    call InputCons  ; ввод размерности матрицы
    mov N, ax  // сохраним введённое число в N
    mov bx, ax
    mov si, 0  // смещение от начала матрицы равно нулю
    mul bx
    mov cx, ax
cycl1:
    lea dx, inpElem ; ввод элементов матрицы
    mov ah, 09h
    int 21h
    lea dx, buff // адрес буфера для ввода
    call InputCons  //вводим одно число
    mov matrix[si], ax  ; запись введеного числа в соответствующую ячейку
    add si, 2   // переход к след. элементу
loop cycl1
    mov cx, N
cycl2:              ; перебор всех строк ...
    mov ax, N
    sub ax, cx
    push cx
    call sequence   ; ...с целью поиска убывающих последовательностей
    pop cx  // восстановим счётчик внешнего вида
loop cycl2
exit:
    mov ah, 04Ch    ; корректное завершение программы
    int 21h     end start
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2012, 14:04
Ответы с готовыми решениями:

Определить кол-во убывающих последовательностей в массиве из 20 целых неотрицательных элементов
Не могу отладить прогу, пишет что ошибка в строке 71,77,106 никак не могу разобраться. Вот код: N...

15. В файле записаны числа. Создать новый файл, содержащий длины всех убывающих последовательностей
#include <iostream> #include <stdio.h> #include <conio.h> using namespace std; int main()...

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

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

1
Ушел с форума
Автор FAQ
16281 / 7605 / 1066
Регистрация: 11.11.2010
Сообщений: 13,618
26.12.2012, 14:51 2
Анастасия_Я,
сложно разбираться в чужой программе, но если я понял правильно, смысл задачи в следующем:
  1. нам дают матрицу
  2. нужно среди строк матрицы найти убывающую последовательность
  3. если мы такую нашли, тогда выводим номер строки или ее содержимое
Правильно?

Алгоритм
пусть у тебя есть строка (массив слов) как ты определишь, что это убывающая последовательность?
в начале программы index=0
  1. Сравниваешь элемент[index] и элемент[index+2], если элемент[index] https://www.cyberforum.ru/cgi-bin/latex.cgi?\geq элемент[index+2] переходишь к шагу 2 иначе выходишь из программы и делаем вывод что последовательность неубывающая
  2. index := index +2 если index = N выходим из программы и делаем вывод что последовательность убывающая, иначе идем к шагу 1
теперь просматриваем строку за строкой пока не дойдем до последней строки
для начала считай, что матрица уже в памяти, ввод матрицы оставь на потом
0
26.12.2012, 14:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2012, 14:51
Помогаю со студенческими работами здесь

Доработать код поиска наименования
Здравствуйте! Помогите доработать код для каждого отдельного варианта. Если в столбце L начиная с...

Выводит ли результаты поиска стандартная функция поиска в html? Код привел ниже
При обращении к стандартному поиску в html, код которого приведен ниже, будут ли выводится...

Доработать код, добавив кнопку поиска по параметрам и кнопку удаления
jButton1.setText("Добавить"); jButton1.addActionListener(new...

Алгоритм поиска последовательностей в массиве байт
Известно: есть массив байт массив разделен на блоки: <head> <line1> <line2> <kan1> <kan2>...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru