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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2016, 09:23   #1
Natascha Cherevko
Новичок
Джуниор
 
Аватар для Natascha Cherevko
 
Регистрация: 25.05.2016
Сообщений: 2
По умолчанию (Assembler) одномерные массивы

Помогите понять как её решить. Получается сплошной бред с этими метками ничего не понимаю что да как. Задача такая Дан одномерный массив размером М. Состоящий из целых чисел. Проверить есть ли в нём элементы равные нулю.
(Задача не решена)
.model small
.stack 100h
.data
m dw ?
n dw ?
mas dw 10 dup(?)
cher dw ?
k dw ?
messin db 0ah,0dh, 'elementov v massive: $'
bufer db 06,00,5 dup (?)
newline db 0ah, 0dh, '$'
answer db 7 dup(?), '$'
messout db 0ah, 0dh,'vedite znachenie elementa: $'
mes1 db 0ah,0dh,'elementov ravniix nulu: $'

.code
start:
mov ax,@data
mov ds,ax
mov messin+20,'m'
lea dx,messin
mov ah,09h
int 21h
call input
mov m,ax
xor si,si
mov cx,m
m1:lea dx,messout
mov ah,09h
int 21h
lea dx, bufer
call input
mov mas[si],ax
add si,2
loop m1

xor si,si
mov cx,m
m3: mov ax, mas[si]
cmp ax,0
mov bx,m1
add bx,1
mov m1,bx

loop m3



lea dx,mes1
mov ah,09h
int 21h
mov ax,m
call output
mov ah,4ch
int 21h

include bin2str.asm
include str2bin.asm

input proc
push bx
push dx
push dx
lea dx, newline
mov ah,09h
int 21h
pop dx
mov ah,0ah
int 21h
mov bx,dx
inc bx
call str2bin
pop dx
pop bx
ret
input endp
output proc
push bx
lea bx,answer
call bin2str
lea dx,answer+1
mov ah,09h
int 21h
lea dx,newline
mov ah,09h
int 21h
pop bx
ret
output endp
end start
Natascha Cherevko вне форума Ответить с цитированием
Старый 27.05.2016, 11:03   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Вот тебе код.. Вводишь с клавиатуры массив, вводишь элемент для поиска (ноль, или другое), и получаешь кол-во найденных элементов в массиве..

Код:
.model small
.386
.stack
        db    256 dup(0)

.data
mes0    db    13,10,' Введите массив....: $'
mes1    db    13,10,' Элемент для поиска: $'
mes2    db    13,10,' Найдено элементов.: $'
buff    db    80,0,80 dup(0)     ; буфер для строки

.code
start:  mov   ax,@data
        mov   ds,ax
        lea   dx,mes0            ; мессага
        call  Message            ;
        mov   ah,0Ah             ; вводим элементы массива
        mov   dx,buff            ;    ..и сохраняем их в буфере
        int   21h                ;

        lea   dx,mes1            ;
        call  Message            ;
        mov   ah,1               ; вводим элемент для поиска
        int   21h                ;
        xor   ah,ah              ;
        push  ax                 ; запоминаем его..

        lea   dx,mes2            ;
        call  Message            ;
        pop   ax                 ; искомый элемент в AL
        xor   cx,cx              ;
        mov   cl,[buff+1]        ; СХ - длина введённого массива
        inc   cx                 ;        +1 для последнего элемента
        lea   di,buff+2          ; DI - адрес массива
find:   repne scasb              ; ищем AL в буфере..
        or    cx,cx              ; все элементы проверили?
        jz    print              ; да: закончить
        inc   ah                 ; нет: считаем кол-во найденых
        jmp   find               ; продолжаем поиск дальше..

print:  shr   ax,8               ; отправляем результат в AL
        aam                      ; распаковываем его в BCD
        or    ax,3030h           ; переводим число в символы
        xchg  ah,al              ; +---> ..и выводим на экран
        int   29h                ; ^
        xchg  ah,al              ; ^
        int   29h                ; ^

exit:   xor   ax,ax              ; выход!
        int   16h                ;
        mov   ax,4c00h           ;
        int   21h                ;

;eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Message:
        mov   ah,9
        int   21h
        ret

end start
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерные массивы GoodNight Помощь студентам 26 06.11.2012 12:15
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Одномерные массивы (C++) PriZRak_vk Помощь студентам 9 05.12.2011 23:40
Одномерные массивы Neyrone Помощь студентам 8 23.12.2009 16:12
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12