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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [TASM] Нахождение минимального элемента массива, Минимальный элемент массива 
V
    Опции темы
avlzll
Дата 8.4.2009, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем добрый день. Застопорился на простенькой задаче.

Необходимо найти минимальный элемент массива. ( Y = min (X) )

Начало есть.

Код

Ideal
P386n
Model Small

Dataseg
    n equ 10    
    x dw 0, 9, 3, 2, -4, 19, -19, 07, 7, -9    
    y dw ?

Codeseg

Start:
    mov    ax, @DATA
    mov    ds, ax
    mov    cx, n
    xor    ax, ax
    lea    bx, [x]


Дальше ясно, что надо организовать цикл, используя метки, cmp и условные переходы. Вопрос в том, как? 

Заранее спасибо за любую помощь.

Это сообщение отредактировал(а) avlzll - 8.4.2009, 19:04
PM MAIL   Вверх
Akina
Дата 8.4.2009, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

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



Код

mov ax, @DATA
mov ds, ax
mov cx, n
lea si,x
dec si
cld
lodsw
mov y,ax
label0:
lodsw
cmp ax,y
jae label1
mov y,ax
label1:
rep label0
PS. Проверять лень.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
avlzll
Дата 8.4.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо за оперативный ответ smile Но в таком виде, увы, не компилируется.

Код

Ideal
P386n
Model Small

Dataseg
    n equ 10    
    x dw 0, 9, 3, 2, -4, 19, -19, 07, 7, -9    
    y dw ?

Codeseg

Start:
    mov ax, @DATA
    mov ds, ax
    mov cx, n
    lea si,x
    dec si
    cld
    lodsw
    mov y,ax
label0:
    lodsw
    cmp ax, y
    jae label1
    mov y, ax
label1:
    rep label0

    mov ax, 4c00h
    int 21h

Stack 100
end start


В листинге вот что
Т.е. ошибки в строках 16, 20, 23, 25 и 27.
Код

      1                     Ideal
      2                     P386n
      3        0000             Model Small
      4
      5        0000             Dataseg
      6          = 10                 n equ 10
      7        0000  0000 0009 0003 0002 +         x dw 0, 9, 3, 2, -4, 19, -19, 07, 7, -9
      8          FFFC 0013 FFED 0007 +
      9          0007 FFF7
     10        0014  ????                 y dw ?
     11
     12        0016             Codeseg
     13
     14        0000             Start:
     15        0000  B8 0000s             mov ax, @DATA
     16        0003  8E D8                 mov ds, ax
     17        0005  B9 000A             mov cx, n
     18        0008  BE 0000r             lea si,x
*Warning* lab2.ASM(16) Pointer expression needs    brackets
     19        000B  4E                 dec si
     20        000C  FC                 cld
     21        000D  AD                 lodsw
     22        000E  A3 0014r             mov y,ax
*Warning* lab2.ASM(20) Pointer expression needs    brackets
     23        0011                 label0:
     24        0011  AD                 lodsw
     25        0012  3B 06    0014r             cmp ax,y
*Warning* lab2.ASM(23) Pointer expression needs    brackets
     26        0016  73 05    90 90             jae label1
     27        001A  A3 0014r             mov y,ax
*Warning* lab2.ASM(25) Pointer expression needs    brackets
     28        001D                 label1:
     29        001D  F3>                 rep label0
**Error** lab2.ASM(27) Illegal instruction
     30        001E  B8 4C00             mov ax, 4c00h
     31        0021  CD 21                 int 21h
     32
     33        0023             Stack 100
     34                     end start

PM MAIL   Вверх
Akina
Дата 8.4.2009, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

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



Да, вместо rep label0 должно быть loop label0. А уж остальное сам поправь, что надо сделать - очевидно...
PS. А результат-то выводить собираешься?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
avlzll
Дата 8.4.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, остальные места тоже поправил и скомпилилось. Спасибо за помощь!
Готовое решение выглядит так (мб кому в будущем пригодится :) .

Код

Ideal
P386n
Model Small

Dataseg
    n equ 10    
    x dw 0, 9, 3, 2, -4, 19, -19, 07, 7, -9    
    y dw ?

Codeseg

Start:
    mov ax, @DATA
    mov ds, ax
    mov cx, n
    lea si, [x]
    dec si
    cld
    lodsw
    mov [y], ax
label0:
    lodsw
    cmp ax, [y]
    jae label1
    mov [y], ax
label1:
    loop label0

    mov ax, 4c00h
    int 21h

Stack 100
end start



Насчет вывода на экран — как получится, ибо это всего лишь вторая в жизни программа на Асме :) Пока с трудом идет.


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

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


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

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

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

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


 




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


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

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