Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 40
1

Разработка циклических программ с использованием подпрограмм

31.05.2011, 14:20. Показов 1888. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1) Даны два массива чисел A(10) и C(18). Найти для каждого из массивов сумму положительных чисел

для одного получается, а для двоих нет(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2011, 14:20
Ответы с готовыми решениями:

РАЗРАБОТКА циклических ПРОГРАММ
Написать программу решения задачи: Delphi Найти сумму положительных чисел, меньших N.

Разработка и отладка циклических алгоритмов и программ
Значение аргумента x изменяется от a до b с шагом h. Для каждого x найти значения функции Y(x),...

Разработка и отладка циклических алгоритмов и программ
Значение аргумента x изменяется от a до b с шагом h. Для каждого x найти значения функции Y(x),...

Разработка программ с выделением подпрограмм
Добрый вечер. Очень нужна помощь с написанием программы или лечебным пинком. Обыскала всё, что...

16
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
31.05.2011, 14:25 2
Mimi1744, проще показать на твои ошибки, не находишь?
0
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 40
31.05.2011, 14:44  [ТС] 3
data segment
a db 1,2,3,4,5,6,-85,10,-9,11
n equ 10
c db 1,2,3,4,5,6,-85,10,-9,11,5,6,7,8,9,10,11,15
m equ 18
p db ' ','$'
q db ' ','$'
code Segment
assume cs:code, ds:data
start:
mov ax,data
mov ds, ax
;Начальные присвоения
;*********

mov ax,0
mov si,0
mov cx,n
;*********
;Решение
;*********
label1:
cmp a[si],0
jnl label2
inc si
cmp si,n
je c20
loop label1
label2:
add al,a[si]
inc si
cmp si,n
je c21
loop label1



;*********
;Вывод данных(работает как с 8 так и 16 и 32 битными операциями)
;*********
c21:
mov cx,10
lea si,p+3
c20:
cmp ax,10
jb c30
xor dx,dx
div cx
or dl,30h
mov [si],dl
dec si
jmp c20
c30:
or al,30h
mov [si],al
lea dx,p

mov ax,0
mov si,0
mov cx,m

label11:
cmp c[si],0
jnl label22
inc si
cmp si,m
je c200
loop label11
label22:
add al,c[si]
inc si
cmp si,m
je c211
loop label11


c211:
mov cx,18
lea si,q+3
c200:
cmp ax,18
jb c30
xor dx,dx
div cx
or dl,30h
mov [si],dl
dec si
jmp c200
c300:
or al,30h
mov [si],al
lea dx,q

mov ah,9
int 21h
code Ends
End Start

Добавлено через 1 минуту
а может я вообще не то делаю, я с этого форума взяла для одного задачку и попробовала сделать для двух(
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
31.05.2011, 14:52 4
Mimi1744, пункт первый -- используй тэги "код"
пункт второй -- вывалила ты на меня свою проблему, почему не бережешь моё время? Обясни в какой строке всплывает какая ошибка? Чего ты хотела добиться и почему не получилось? А так "добрый дядя" почему-то должен писать за тебя программу или копировать твою, компилировать, исправлять грамматические ошибки, или ты считаешь я от этого кайф ловлю?
0
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 40
31.05.2011, 14:58  [ТС] 5
ок
ошибок не выводит, и ничего не считает, после команды run черный экран
за основу брался вот этот код (для ондного массива)
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
.model small
.stack 100h
.data
     a db 1,2,3,4,5,6,-85,10,-9,11
     n equ 10
     p db '    ','$'
.code
     ;Начальные присвоения
     ;*********
     mov ax,@data
     mov ds,ax
     mov ax,0
     mov si,0
     mov cx,n
     ;*********
     ;Решение
     ;*********
label1:
      cmp a[si],0
      jnl label2
      inc si
      cmp si,n
      je c20
      loop label1
label2:
       add al,a[si]
       inc si
       cmp si,n
       je c21
       loop label1 
;*********
;Вывод данных(работает как с 8 так и 16 и 32 битными операциями)
;*********
c21:
     mov cx,10
     lea si,p+3
c20: 
     cmp ax,10
     jb c30
     xor dx,dx
     div cx
     or dl,30h
     mov [si],dl
     dec si
     jmp c20
c30:
     or al,30h
     mov [si],al
     lea dx,p
     mov ah,9
     int 21h
;The end =)
;*********
я просто не умела использовать теги "код"
0
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
31.05.2011, 15:50 6
Цитата Сообщение от Mimi1744 Посмотреть сообщение
Добавлено через 1 минуту
а может я вообще не то делаю, я с этого форума взяла для одного задачку и попробовала сделать для двух(
Интересный подход, для человека, ничего не понимающего в ASM.
последний предоставленный вариант, чуток не дописан.

Assembler
1
2
3
4
5
6
7
8
9
10
.code
start:                       ;вставить
 
;The end =)
;*********
;в конце  
    mov ah,4ch                      ;вставить
    int 21h                            ;вставить
    
    end start                         ;вставить
и результат на экране!
0
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 40
31.05.2011, 16:09  [ТС] 7
Да то что программа должна выглядеть вот так я понимаю
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
data segment
     a db 1,2,3,4,5,6,-85,10,-9,11
     n equ 10
     
     p db '    ','$'
 
code Segment
assume cs:code, ds:data
start:
mov ax,data
mov ds, ax
     ;Начальные присвоения
     ;*********
    
     mov ax,0
     mov si,0
     mov cx,n
     ;*********
     ;Решение
     ;*********
label1:
      cmp a[si],0
      jnl label2
      inc si
      cmp si,n
      je c20
      loop label1
label2:
       add al,a[si]
       inc si
       cmp si,n
       je c21
       loop label1 
 
 
 
;*********
;Вывод данных(работает как с 8 так и 16 и 32 битными операциями)
;*********
c21:
     mov cx,10
     lea si,p+3
c20: 
     cmp ax,10
     jb c30
     xor dx,dx
     div cx
     or dl,30h
     mov [si],dl
     dec si
     jmp c20
c30:
    or al,30h
    mov [si],al
    lea dx,p
 
     mov ah,9
    int 21h
code Ends
А как должна выглядеть программа для двух массивов??

Добавлено через 9 минут
Я не то чтобы совсем ничего не понимаю. Я формулы считать умею :Р. А сегодня менждунородный день блондинок, поэтому все простительно, даже если я брюнетка)
0
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
31.05.2011, 16:15 8
Если бы ты понимала, у тебя не возникло бы ни каких проблем.
0
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 40
31.05.2011, 16:19  [ТС] 9
добрый zzzyyyxxx Помоги пожалуйста
0
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
31.05.2011, 16:48 10
Типа давишь на жалость? Да и насчёт того, что я добрый не факт, с тебя ПИВО.
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
.model small
.stack 100h
.data
     a db 1,1,3,4,5,6,-85,10,-9,11
     b db 1,-1,3,-4,5,6,-85,-10,-9,11
     n equ 10
     p db '    ','$'
.code
start:
     ;Начальные присвоения
     ;*********
     mov ax,@data
     mov ds,ax
     mov ax,0
     mov si,0
     mov cx,n
     ;*********
     ;Решение
     ;*********
     
    mov bx,offset a
    call PROW
    
    mov ah,2
    mov dl,0ah
    int 21h
    
    xor ax,ax 
    xor si,si
    
    mov bx,offset b
    call PROW
    
    mov ah,4ch
    int 21h
    
PROW proc   
label1: 
      cmp byte ptr bx[si],0
      jnl label2
      inc si
      cmp si,n
      je c20
      loop label1
label2:
       add al,byte ptr bx[si]
       inc si
       cmp si,n
       je c21
       loop label1 
;*********
;Вывод данных(работает как с 8 так и 16 и 32 битными операциями)
;*********
c21:
     mov cx,10
     lea si,p+3
c20: 
     cmp ax,10
     jb c30
     xor dx,dx
     div cx
     or dl,30h
     mov [si],dl
     dec si
     jmp c20
c30:
     or al,30h
     mov [si],al
     lea dx,p
     mov ah,9
     int 21h
        ret
PROW endp   
    end start
P.S.:В проге есть маленькая проблемка, последний элемент нельзя делать отриц, ну это так, чтобы ты приложила хоть какие то усилия (скорее всего тот кто писал, специально или нет, допустил её)
1
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 40
31.05.2011, 17:03  [ТС] 11
Както неправильно получается, суммы должно быть две, а переменная одна(
Упс, я поняла, что там два раза выполнить можно)))
а нельзя никак за один? просто в 2 переменные?
А еще у меня второй массив 18 элементов содержит, подскажи в каких строчка нужно поменять (
0
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
31.05.2011, 17:20 12
Какая нафиг разница одна переменная или две, РЕЗУЛЬТАТ на экране, и преподу этого до жопы хватит.
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
.model small
.stack 100h
.data
     a db 1,1,3,4,5,6,-85,10,-9,11
     b db 1,1,3,4,5,6,-85,10,-9,11,0,0,0,10,0,10,0,10
     n dw 0
     p db '    ','$'
.code
start:
     ;Начальные присвоения
     ;*********
     mov ax,@data
     mov ds,ax
     mov ax,0
     mov si,0
     ;*********
     ;Решение
     ;*********
     
        mov n,10
        mov cx,n
    mov bx,offset a
    call PROW
    
    mov ah,2
    mov dl,0ah
    int 21h
    
    xor ax,ax 
    xor si,si
    
    mov n,18
    mov cx,n
    mov bx,offset b
    call PROW
    
    mov ah,4ch
    int 21h
    
PROW proc   
label1: 
      cmp byte ptr bx[si],0
      jnl label2
      inc si
      cmp si,n
      je c20
      loop label1
label2:
       add al,byte ptr bx[si]
       inc si
       cmp si,n
       je c21
       loop label1 
;*********
;Вывод данных(работает как с 8 так и 16 и 32 битными операциями)
;*********
c21:
     mov cx,10
     lea si,p+3
c20: 
     cmp ax,10
     jb c30
     xor dx,dx
     div cx
     or dl,30h
     mov [si],dl
     dec si
     jmp c20
c30:
     or al,30h
     mov [si],al
     lea dx,p
     mov ah,9
     int 21h
        ret
PROW endp   
    end start
1
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 40
01.06.2011, 12:09  [ТС] 13
Спасибочки !!!!! Жаль пиво не получится, какбэ далеко))

Добавлено через 18 часов 44 минуты
А вот это не подскажешь ?
Даны два массива чисел A(13), B(20). Создать по каждому из заданных массивов новый, поместив в него все числа, которые входят в данный массив по одному разу.
0
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
01.06.2011, 12:27 14
Я чёт не пойму, ты решила весь задачник перерешать или у вас усиленная нагузка по asm?
0
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 40
01.06.2011, 12:33  [ТС] 15
Одна задача с контрольной, а вторая с лабораторной =)
0
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
01.06.2011, 12:37 16
А в вашем учебном заведении контрольные на дом дают?
0
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 40
01.06.2011, 12:43  [ТС] 17
Я заочник, была бы на дневном сама б решала)
0
01.06.2011, 12:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2011, 12:43
Помогаю со студенческими работами здесь

Разработка циклических программ с заданным числом по-вторений
2.Сформировать массив В, содержащий сумму элементов каждого столбца матрицы Если можно то блок...

Разработка циклических программ с заданным числом по-вторений
задача в документе

Программ с использованием циклических алгоритмов
Здравствуйте. Пожалуйста, помогите с данной программой, буду благодарен: Задано действительные...

Разработка и отладка линейных, разветвляющихся и циклических алгоритмов и программ
Найти max{min(a, b), min(c, d)}. Написание для Visual studio


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

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