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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2019, 21:42   #1
Айтишник228
Новичок
Джуниор
 
Регистрация: 19.12.2019
Сообщений: 1
Вопрос Программа на языке Ассемблер, которая позволяет ввести с клавиатуры массив из N целых чисел, найти и вывести на экран те элементы массива, которые одновременно отрицательны и нечетны

добрый день,задали написать такую вот программку на языке ассемблера:
Написать программу на языке Ассемблера, которая позволяет ввести с клавиатуры массив из N целых чисел, найти и вывести на экран те элементы массива, которые одновременно отрицательны и нечетны.
Я написал массив,но дальше не знаю как его правильно отсортировать и как реализовать ввод отрицательных чисел в него.
Код:
data segment 
chislo db ? 
mas db 20 dup(0) 
zapros db 10,13,'Enter elements in massiv -> $' 
zapros1 db 'Number of elements in massiv -> $' 
g1 db 10,13,'Elements: -> $' 
g db 10,13,'Enter any key to exit$' 

data ends 


code segment 
assume cs: code, ds: data; 
begin: 
mov ax, data 
mov ds, ax 
mov ah,0 
mov al,2 
int 10h 
mov ah, 09h 
mov dx, offset zapros1 
int 21h 
mov ah, 08h 
int 21h 
mov ah,02h 
mov dl,al 
int 21h 
mov ah,0 
sub al,48 
mov chislo,al 
mov cx,ax 
mov ah, 09h 
mov dx, offset zapros 
int 21h 
mov si,0 
inpt: mov ah, 08h 
int 21h 
mov ah, 02h 
mov mas[si],al 
mov dl,al 
add si,1 
int 21h 
loop inpt 
mov bl,2 
mov si,0 
mov cl,chislo 
mov ah,9h 
mov dx,offset g1 
int 21h 
xor dx,dx 
proverka: 
mov ax,0 
mov al,mas[si] 
idiv bl 
cmp ah,0 
je m1 
jmp m2 

m1: 
rcl al,1 
mov al, [si] 
test al, al 
jns @@next 
test al, 1 
jz @@next 
вывод элемента массива 
@@next: 
loop proverka
;;;;;;;;;;;;;;;ЗДЕСЬ НУЖНО СДЕЛАТЬ ПРОВЕРКУ НА ОТРИЦАТЕЛЬНОЕ ЧИСЛО 
;;;;;;;;;;
mov ah, 02h 
mov dl,al 
int 21h 

m2: 
add si,1 
loop proverka 
mov ah, 09h 
mov dx, offset g 
int 21h 
mov ah, 08h 
int 21h 

; Выход 
mov ax, 4C00h 
int 21h 
code ends 



end begin
Айтишник228 вне форума Ответить с цитированием
Старый 20.12.2019, 11:19   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

1. Сортировать массив не надо, этого нет в задании.
2. Отрицательные числа вводятся с клавиатуры знаком - (минус) перед цепочкой цифр. Или не так ?
3. Признак отрицательного числа (уже в его двоичном виде) - старший бит установлен в 1. Для 16-битного числа, к примеру : 3FACh - положительное, C145h - отрицательное.

Последний раз редактировалось digitalis; 20.12.2019 в 11:24.
digitalis вне форума Ответить с цитированием
Старый 20.12.2019, 12:41   #3
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

На другом форуме ещё 10 декабря я даже приводил этому топикстартеру готовый код, который топикстартер без пояснений проигнорировал. Далее, на вопрос о способе фильтрации элементов массива я привёл ему фрагмент
Код:
  mov al, [si]
  test al, al
  jns @@next
  test al, 1
  jz @@next
  вывод элемента массива
@@next:
loop proverka
Но, видно, не в коня корм.
FPaul вне форума Ответить с цитированием
Старый 28.12.2019, 00:11   #4
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

есть варианты, чтобы чекать регистр флагов по мыске,
когда нужно проверить много флагов -sahf и маска
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 28.12.2019, 00:15   #5
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

по старинки пацы так делали
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 28.12.2019, 00:21   #6
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

digitalis идёт на пролом,
можно брать по 4-байта, и ролом крутить их с флагом - если были изменения, то продолжаеем
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 28.12.2019, 00:23   #7
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

а чё сообщения не добавляются...
косяк движка
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 28.12.2019, 11:52   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Цитата:
как реализовать ввод отрицательных чисел в него
Ну дык каков вопрос - таков ответ. Если не для мазохистов - прямо в hex - то с клавы посимвольно, потом преобразовать в бинарный, и символ 'минус' тут ему в помощь. Ну и так далее. А анализировать приведённый ассемблерный код - да ну его, лень. Я же не препод. И не тимуровец.

Последний раз редактировалось digitalis; 28.12.2019 в 11:56.
digitalis вне форума Ответить с цитированием
Старый 28.12.2019, 21:41   #9
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

просто Павел говорит так, а ему говорю нет
не учи своим стрёмный делам с проверками, скила наберись и чекай флаги по маске
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 28.12.2019, 21:47   #10
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Павлуша, тебе мало, как ты обкакался там.. ещё и сюда лезешь... сторонись меня
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ассемблер. Ввести с клавиатуры массив из 7 целых чисел, найти и вывести на эк- ран сумму тех элементов массива, которые при делении на 5 дают в остатке 1 или 3 kosplay321 Помощь студентам 5 11.01.2018 20:53
Программа НА С++ Ввести с клавиатуры массив целых чисел. Вывести на экран исходный массив и количество позитивных элементов Andry95 Помощь студентам 3 18.03.2016 11:18
Ввести массив с клавиатуры. В полученном массиве найти минимальный элемент. Вывести его на экран ok57 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 17.05.2013 05:07