Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массивы и условия в асме ПОМОГИТЕ!!! 
:(
    Опции темы
Гость_Zlo
Дата 11.1.2006, 09:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











народ понимаю, что это безнадежно, но может найдется такой человек который решиться помочь!
Задача:
Ввести одномерный массив, найти в нем максимальный элемент и прибавить его ко всем элементам массива. Получившийся массив вывести на экран.

Я уже недели 2 бьюсь с этим но никак не получается. Находит максиммальный элемент не правильно и прибовлят тоже как то косо! Вот собсно что я тут накодил:
Код

Title        xam2(exe)
Codeg        segment para   'Code'
Assume    cs:codeg,ds,codeg,ss,codeg,es:nothing
Org        100h
main        jmp    begin

;******Pazdel objvlenij dannix**********
a        label        byte
MaxlnA        db        4
ReallnA        db        ?
StA        db        1 dup(' '),'$'

;b        label        byte
;MaxlnB        db        4
;ReallnB        db        ?
;StB        db        1 dup(' '),'$'

;x        label        byte
;MaxlnX        db        4
;ReallnX        db        ?
;StX        db        1 dup(' '),'$'

Primer        db        'BBEDUTE ODHOMEPHbIU MACCUB [1..10]:', '$'
Stroka2        db        'MAKCUMAJIbHbIU EJIEMEHT:', '$'

BinA        dw        0
BinB        dw        0
BinA2        dw        0
BinB2        dw        0
BinX        dw        0

massiv        dw        10 dup(?)
;massiv2        dw        10 dup(?)

BinV        dw        0

Pa        dw        1 dup(' '),'$'
Pb        dw        1 dup(' '),'$'
Px        dw        1 dup(' '),'$'
ccx        dw        0
koordx        dw        1
Otvet        dw        0
mul10        dw        1
k        db        1 dup(' ')
m10        dw        1
kt        dw        0
max        dw        0
;***************************************

;---------------------------------------Main Program Procedure
Begin        proc
;-------------rejim---------
        Mov        ah,00
        Mov        al,03
        Int        10h
;--------------Vivod Primera-
        Mov        dh,01
        Mov        dl,02
        Call        Cursor

        Lea        dx,primer
        Call        Write

;--------------Vvod massiva ---
;==================podgotovka cikla=========
        mov        cx,10
        mov        bp,0
        mov        koordx,1
;==================Telo cikla=========
L:                
        add        koordx,3

        mov        dh,03
        mov        dl,koordx
        Call        Cursor

        Lea        dx,a
        Call        Read
        mov        ccx,cx
;---------------------------------------------------------------
;                   Perevod v Bin
    
        lea    si,StA-1
        mov    bl,RealLnA
        call    bin
        mov    BinA,di

        mov    cx,ccx
        mov    ax,BinA
        mov    massiv[bp],ax
        add    bp,2
        loop    L
;---------------------------------------------------------------
        ;Mov        dh,04
        ;Mov        dl,02
        ;Call        Cursor
;
        ;Lea        dx,stroka2
        ;Call        Write


;-------------------------------------------------------------

        ;mov    ax,Otvet
        ;mov    binv,ax
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;    lea    si,Pa-1
;    mov    ax,BinV
;    call    ascii
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-------------------------------
;Deustvij s massivom
;=============================================================
        mov        cx,10
        mov        bp,0

L3:
        sub        dx,massiv[bp]
        jc        L4
        jnc        L5
L4:        
        
        mov        dx,massiv[bp]
        mov        BinV,dx
        mov        max,dx
L5:


        add        bp,2
        Loop        L3

        ;mov        bp,2
        ;mov        ax,dx
        ;mov        BinV,ax
;----------------------------------------------------------
        Mov        dh,05
        Mov        dl,02
        Call        Cursor

        Lea        dx,stroka2
        Call        Write
        
        ;------------------------------------------
        lea        si,Pa-1
        mov        ax,max
        call        ascii
        ;------------------------------------------
        Mov        dh,05
        Mov        dl,27
        Call        Cursor

        Lea        dx,pa
        Call        Write
        
;============================================================


;===============Vivod massiva===============

;===============Podgotovka cikla===========
        mov    cx,10
        mov    bp,0
        mov    koordx,1    
;==========================================
        
L2:

        add        koordx,3
        mov        ax,massiv[bp]
        add        ax,max

        mov        binv,ax
        mov        ccx,cx
;------------------------------------------
        lea        si,Pa-1
        mov        ax,BinV
        call        ascii
;------------------------------------------
        mov        cx,ccx

        Mov        dh,07
        Mov        dl,koordx
        Call        Cursor



        Lea        dx,pa
        Call        Write

        ;add        koordx,3

        add        bp,2
        mov        ax,0
        
        loop        L2

;============================================
;+++++++++++++++++++++++++++++++++++++++++
;        Mov        dh,07
;        Mov        dl,02
;        Call        Cursor
;
;        Lea        dx,stroka2
;        Call        Write
;
;----------------------------------------------------------------
;        Lea        dx,pa
;        Call        Write
;-----------Zaderjka--------
        Mov        ah,00
        Int        16h
;++++++++++++++++++++++++++
        Int        20h
        Ret
Begin        endp
;---------------------------------------------------------------
;            Procedure and Function

Cursor        Proc

        mov        ah,02h
        Mov        bh,00
        int        10h

        Ret
Cursor        endp

Write        Proc

        mov        ah,09
        int        21h

        Ret
Write        endp

Read        Proc

        Mov        ah,0ah
        Int        21h

        Ret
Read        endp

Simvol        Proc

        Mov        ah,0ah
        Mov        bh,0
        mov        bl,00
        Mov        cx,1
        Int        10h

        Ret
Simvol        endp


bin proc
    mov    m10,1
    mov    di,0
    mov    cx,10
b20:    mov    al,[si+bx]
    and    ax,00fh
    mul    m10
    add    di,ax
    mov    ax,m10
    mul    cx
    mov    m10,ax
    dec    bx
    jnz    b20
    ret
bin endp

ascii proc
    mov    cx,10
    mov    bx,3
c20:    cmp    ax,10
    jb    c30
    mov    dx,0
    div    cx
    or    dl,30h
    mov    [si+bx],dl
    dec    bx
    jmp    c20
c30:    or    al,30h
    mov    [si+bx],al
    ret
ascii endp


Codeg        ends
    end        begin

  Вверх
cardinal
Дата 11.1.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


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

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



Пocтрочно отлаживал? Debugging называется... smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Zlo
Дата 11.1.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



cardinal
А ченить пореальнее предложить не как ? smile
PM MAIL   Вверх
cardinal
Дата 11.1.2006, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


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

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



Ну что я могу предложить тебе по реальнее? Если у тебя нет нормального отладчика, то я бы пошел таким путем. Т.к.
Цитата(Гость_Zlo @ 11.1.2006, 07:34 Найти цитируемый пост)

Находит максиммальный элемент не правильно

то ты берешь и начинаешь с того, чтобы добиться правильной работы хотя бы этой части проги. Берешь MS VS C++ 6.0 (или новее) и пишешь там кусок asm кода засунув его в _asm{..} ковычки. Отладчик там хороший (по крайней мере проще и лучше я не знаю).
Как будет работать ты сможешь почти один к одному этот код вставить в свою прогу, что ты показал выше.

Потом увидим дальше...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Guest
Дата 12.1.2006, 05:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











cardinal
К сожелению у меня ниту Вижуала и я в нем совершенно не бум-бум smile
Зато есть Дельфа седьмая и я знаю что там можно делать асм вставки
в блоках asm....end;
Но как там объявлять данные и вообще взаимодействовать с внешним миром я не знаю smile
  Вверх
cardinal
Дата 12.1.2006, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


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

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



Узнавай, потом зато все будет просто...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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