Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Assembler
Перезагрузить страницу Работа с массивами как исправить ошибки
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
imported_Amber imported_Amber вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.05.2008
По умолчанию Работа с массивами как исправить ошибки - 14.05.2008, 20:43

Добрый вечер всем.
У меня проблемы с Ассемблером, никак не могу въехать в него=(( Есть опыт на С++, Дельфе, Яве, но в этот язык никак не могу...
Помогите плиз вот с таким заданием:
Тема "Обработка одномерных массивов"
Задан массив A из N чисел. Создать массив B , в котором будут записаны числа из массива A, и массив C, в котором Ci равно количеству чисел Bi в массиве A. Например, массив A (1,0,0,2,0,3,2,-4,1). Массив B должен быть (1,0,2,3,-4), а массив С (2,3,2,1).
Пример написания кода, относящегося именно к заданию, а не к внутренностям ассемблера.

Код:
Dseg Segment
;  индивидуальные данные - начало
   N dw 5
   A dw -2,3,4,-8,0
   B dw 10 dup (?)
   TextMA db 'Массив А: ',10,13,'$'
   TextMB db 'Массив В: ',10,13,'$'
   TextSum db 'Сумма=$'
;  Индивидуальные данные конец
   Prob db '  $'
   Buffer db 6 dup (?),'$'
   NL db 10,13,'$'
Dseg Ends

Stacks segment
   dw 128 dup (?)
Stacks ends

Codes segment
  Main proc far
    Assume CS:codes, DS:dseg, SS:stacks
    Mov AX,Dseg
    Mov DS,AX
; Индивидуальная часть программы - начало
    LEA DX,TextMA      ;блок 1
    CALL PRT    ;* напечатать 'Массив А:'

    LEA BP,A    ;блок 2
    Mov CX,N    ; загрузить в регистр BP адрес начала массива А
    CALL PRINTMAS      ; печать массива А

    LEA DX,NL    ;перевод строки
    CALL PRT
    Xor AX,AX          ;блок 2       SUM - регистр AX
    Xor BX,BX           ;блок 3       i - регистр BX
    Xor SI,SI           ;блок 4            j - регистр SI

    BL5:
        Mov DI,BX;блок  5
        SAL DI,1
        Mov CX,A[DI]
        CMP CX,2
        JG BL6         ; если A[i] >2, то на блок 6
        JMP BL7        ;               Ёиначе на блок  7

    BL6:               ;блок 5
        Add AX,CX
        JMP BL10       ; переход на блок 10
   

   BL7: Cmp CX,0    ;блок 7  
        JL BL8         ;  Если А[i]<0, то на блок 8
        JMP BL10       ;  иначе на блок 10
   BL8: NEG CX         ; изменили знак A[i]
        Mov DI,SI
        SAL DI,1
        Mov B[DI],CX   ; B[j]:=-A[i]
        INC SI         ;  блок 9
   BL10: INC BX        ; блок 10
        CMP BX,N       ;  блок 11
        JL BL5         ;если i<N, то на *  блок 5

    LEA DX,TextMB      ;блок 9
    CALL PRT    ;* напечатать 'Массив В:'

    LEA BP,B
    Mov CX,SI    ;перепишем в CX SI = j
    CALL PRINTMAS      ;Печать массива B 
    LEA DX,NL
    CALL PRT           ; перевод строки
    Lea DX,TextSUM     ;  печать текста  "сумма ="
    CALL PRT
    CALL PRN           ; Печать полученной суммы
; Индивидуальная часть программы конец  
    Mov AH,4CH
    Int 21h
  Main Endp

 ;*************************************************************************"
Это пример программы, задание которой вот такое (Задан массив А из N чисел. Найти сумму чисел, больших 2, и образовать массив B из отрицательных чисел массива A, взяв их по модулю).

Помогите, пожалуйста!!!
Заранее благодарю!!
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивами. sanchosss Задания за деньги 4 05.05.2012 13:29
Работа с массивами f0b0s Вопросы начинающих программистов 3 23.06.2011 11:48
Работа с COM портом как исправить ошибки tviktor .NET 3 15.07.2009 16:00
Работа с вектором STL как исправить ошибки Lisenok С/С++ 8 13.02.2009 15:01
Работа с DB2 как исправить ошибки kvas Другие СУБД 1 14.07.2008 22:32
Работа с массивами на С++ Builder Iv@nich C++ Builder 2 03.11.2007 03:58
Работа с массивами С++ и builder 6 Gansss Вопросы начинающих программистов 7 22.05.2007 18:27
Работа с динамическими массивами на С/C++ Gigahard Вопросы начинающих программистов 11 19.05.2006 13:03
Работа с массивами в С++ Builder sq-Weezee C++ Builder 5 22.02.2006 03:05
Работа с массивами в Delphi max153 Delphi 5 02.08.2004 19:13
Работа с сокетами как исправить ошибки KoKa С/С++ 1 26.04.2004 19:21
работа с массивами Anonymous Visual Basic 0 02.06.2003 19:39



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов