Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - Макрокоманда выборки из массива

Ответить
Настройки темы
Assm - Макрокоманда выборки из массива

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Drongo
Дата: 04-01-2014
Доброго времени суток. Так как я, откровенно, не силен в Эссемблере, прошу проверить, то что я написал и по возможности указать на ошибки.
Вот само задание:
Вот собственно технические требования, записанные с точностью, с его слов. Текст программы:
Написать макрокоманду для выборки из некоторого массива слов со знаком всех элементов больших
одного значения, но меньших другого. С помощью этой макрокоманды обработать два массива, выбирая из 1-го элементы большие 1000, но меньшие 2000, а из 2-го - большие (-5000), но меньшие 5000


Код: Выделить весь код
Name Program
    min1 = 1000     ; промежуток от 1000 до 2000
    max1 = 2000
    min2 = -5000    ; промежуток от -5000 до 5000
    max2 = 5000
;Описание  переменных
       Data segment
       X1 dw 4B0h
        dw 8520h
        dw 3EDh
        dw 7D1h
        dw 384h
        dw 601h
       Y1 dw 6 Dup(?) 
       X2 dw 8300h
        dw 1F4h
        dw 0F448h
        dw 13ECh
        dw 0EC14h
        dw 0D05h
       Y2 dw 6 dup(?) 
 
      Data ends
      Stack SEGMENT
        DW 16 dup(?)
        StkTOp LABEL  word
      Stack ends
 
      Code SEGMENT
        ASSUME CS: Code, DS: Data, ES: Data, SS: Stack
 
abc macro X, Y, N, min, max ; x - входной массив. у - выходной массив. n - кол-во чисел во входном массиве. min, max - промежуток для выборки
 
local M1, M2
          
    mov cx, N       ; кол-во чисел
    lea si, X             ; адрес массива чисел
    lea di, Y       ; адрес выходного массива
    
M1: mov ax, [si]    ; загружаем первое число
    cmp ax, min ; сравниваем
    JL M2           ; если меньше то идем на М2
    cmp ax, max ; сравниваем
    JG M2       ; если больше идем на M2                       
    mov [di], ax    ; выборка числа
    add di, type Y  ; переходим на другое число
    
M2: add si, type X  ; переходим на следующее число
    dec cx          ; цикл
    JNZ M1
endm
 
; Основная программа
Start:   mov AX, Data
     mov DS, AX
     mov ES, AX
     mov Ax, Stack
     mov SS, AX
     mov SP, offset StkTop
     
     abc X1, Y1, 6, min1, max1
     abc X2, Y2, 6, min2, max2
code ends
end start

Отправлено: 13:06, 04-01-2014

 


Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - Макрокоманда выборки из массива

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Выбор данных из массива. subuday77 Скриптовые языки администрирования Windows 1 25-12-2013 06:13
Разное - Pascal. Запись из массива в файлы. lenaustkz84 Программирование и базы данных 11 26-01-2012 18:32
CMD/BAT - [решено] Пакетный файл для выборки из спика файлов текстовый(название и описание) Скуб Скриптовые языки администрирования Windows 7 18-05-2010 15:17
[решено] Вставить текст из массива Не флужу AutoIt 16 19-07-2009 21:49
Создание сложной выборки из MySQL Vlad Drakula Вебмастеру 13 19-06-2004 10:22




 
Переход