Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Assembler] Подсчитать количество положительных элементов в ма 
:(
    Опции темы
ROKI
Дата 25.1.2009, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 26.5.2008

Репутация: нет
Всего: нет



Привет всем!!! Кому не трудно, помогите пожалуйста доделать программу. Большую часть я уже сделал, осталось реализовать следующее задание:

"Подсчитать количество положительных элементов в массиве, которые удовлетворяют условию: c<=a[i]<=d "

Вот код программи в которой вводятся элементы "с" и "d", размерность массива ("n"), и сам массив:
Код

stak segment stack
     db 256 dup(0)
stak ends
data segment
array db '         $'
masx db '   $'
newl db 0ah,0dh,'$'
sizemes db 'Size of array:$'
elem db 'mas[i]=$'
c_in db 'Enter c:$'
d_in db 'Enter d:$'
error1 db 'Menyshe 30h$'
error2 db 'Bolyshe 39h$'
result db 'Result:$'
line db '-------------$'
buffer label byte
maxlen db 20
actl db ?
masiv db 20 dup(0)
des db 10
buf db 0
n db ?       ;array size
c db ?
d db ?
rez dw 0
k db 0       ;counter
data ends
code segment
Assume cs:code,ds:data,ss:stak

;-----------------New line------------------------------
newline proc
        push ax
        push dx
        mov dx,offset newl 
        mov ah,09h
        int 21h
        pop dx
        pop ax
        ret
endp newline
;----------------------StrToNum------------------------
StrToNum proc
      push ax
      push cx
      push dx
      mov buf,0
      xor cx,cx
      xor si,si
      mov cl,actl
      mov si,cx
      dec si
      mov ax,1
mit:
      cmp si,0
      jne nemin
      mov bl,masiv[si]
      cmp bl,45
      jne last
      mov al,buf
      neg al
      mov buf,al
      jmp exit
nemin:
      mov bl,masiv[si]
      cmp bl,30h
      jb er1
      cmp bl,39h
      ja er2
      sub bl,30h
      push ax
      mul bx
      add buf,al
      pop ax
      mul des
      xor bx,bx
      dec si
      loop mit
last:
      mov bl,masiv[si]
      cmp bl,30h
      jb er1
      cmp bl,39h
      ja er2
      sub bl,30h
      push ax
      mul bx
      add buf,al
      pop ax
      mul des
      xor bx,bx
      jmp exit
exit:     
      xor ax,ax
      mov al,buf
      pop dx
      pop cx
      pop ax
      ret
er1:
      mov dx, offset newl
      mov ah,09h
      int 21h
      mov dx,offset error1
      mov ah,09h
      int 21h
      jmp exit
er2: 
      mov dx, offset newl
      mov ah,09h
      int 21h
      mov dx,offset error2
      mov ah,09h
      int 21h
      jmp exit
endp StrToNum
;--------------------Ввод----------------------------
Input proc
      push ax
      push dx
      mov dx,offset buffer
      mov ah,0ah
      int 21h
      pop dx
      pop ax
      ret
endp Input 


;---------------------NumToStr-------------------- 
NumToStr proc
      xor ax,ax
      mov al,k
      mov cl,actl
      mov si,cx
      cmp ax,0
      jg mitx
      neg ax
      mov masx[0],'-'
mitx:
      div des
      add ah,30h
      mov masx[si],ah
      xor ah,ah
      dec si
      cmp al,0
      je exitx
      cmp al,10
      jg mitx
      add al,30h
      mov masx[si],al
      jmp exitx
exitx:
      mov ah,09h
      mov dx,offset masx
      int 21h
      ret
endp NumToStr   

start:
      mov ax,data
      mov ds,ax
      ;-------Enter C
      mov dx,offset c_in
      mov ah,09h
      int 21h
      call input
      call strtonum
      xor ax,ax
      mov al,buf
      mov c,al
      call newline
      ;-------Enter D
      mov dx,offset d_in
      mov ah,09h
      int 21h
      call input
      call strtonum
      xor ax,ax
      mov al,buf
      mov d,al
      call newline
      ;--------Enter mas size
      call newline
      mov dx,offset sizemes
      mov ah,09h
      int 21h
      call input
      call strtonum
      xor ax,ax
      mov al,buf
      mov n,al
      call newline
      
      xor cx,cx
      mov cl,n
      xor bx,bx
cycl:
      jcxz quit
      mov dx,offset elem
      mov ah,09h
      int 21h
      call input
      call strtonum
      xor ax,ax
      mov al,buf    
      mov array[bx],al
      inc bx
      call newline
      loop cycl
      
      call newline
      mov dx,offset line
      mov ah,09h
      int 21h
      call newline      
      mov dx,offset result
      mov ah,09h
      int 21h
      call NumToStr
      call newline
      mov dx,offset line
      mov ah,09h
      int 21h

            

quit:      
      mov ah,4ch
      int 21h
code ends
end start


Зарание спасибо !!!
PM MAIL   Вверх
dumb
Дата 26.1.2009, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 6
Всего: 158



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 
PM MAIL   Вверх
airyashov
Дата 26.1.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 1.7.2008

Репутация: 1
Всего: 6



если Вы сами написали эту программу, то добавить такой код не составит труда.
если за финансы стучите, недорого
icq: 3(один)7748666
mail: airyashov(собака)inbox.ru




--------------------
icq:3(один)7748666
mail:airyashov( а )inbox.ru
PM MAIL   Вверх
grigiv
Дата 27.1.2009, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 1.12.2008

Репутация: -3
Всего: -3



Здравствуйте!
Еще нужна помощь?
Помогу за вознаграждение.

Обращайтесь:
[email protected]
http://www.grigiv.h15.ru

P.S. Высылайте подробное задание и сообщите желаемый срок выполнения работы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.