powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ассемблер
4 сообщений из 4, страница 1 из 1
Ассемблер
    #32758022
Dale
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите мне мою ошибку.
Данная программа должна выдать сумму всех отрицатльных элементов заданного массива в интервале от -4 до -15
Результат должен выводиться на экран.

model small
.data
mas db -2,0,2,-7,8,-12,1,3,-9,-18,11,12,-15 ;Инициализируем массив. Размер каждого элемента байт
message db 'Сумма отрицательных элементов в интервале (-4,-15): $',0ah,0dh
.stack 256
.code
start:

mov ax,@data
mov ds,ax

mov cx,13 ;Значение счетчика цикла
mov dx,0
lea bx,mas

m1:
mov ax,[bx]
or ax,ax
cmp ax,15 ;сравнить al c 4
jnle m2 ;перейти на метку если al=<-4
cmp ax,4
jnge m2 ;перейти на метку если al=>-15
add ax,30h
add dx,ax
m2:
inc bx ;Переходим на следующий элемент массива
loop m1 ;В начало цикла, если cx не равен 0

mov bx,dx
mov ah,09h ;Выводим сообщение message
lea dx,message
int 21h

mov dx,bx
mov ah,02h
add dx,30h
int 21h

exit:
mov ah,4ch
int 21h
end start

Количество отрицательных элементов массива считается правельно, если поставить счетчик
inc dx
вместо сумирования элементов. Само сумирование не идет


Пробовал считать сумму положительных элементов массива на интервале от 4 до 15

Количество элементов при этом считается правельно, но сумма не выводится.
Причем, в регистр dx записывается правельное значение суммы, но на экран оно не выводиться....


Подскажите кто что может....
Заранее спасибо
...
Рейтинг: 0 / 0
Ассемблер
    #32761281
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всмысле он у вас считает и не показывает ?!

а если так выводить ?!

mov dx, offset message
mov ah, 09h
int 21h

интерестно у вас комментарии растваленны


cmp ax,15 ;сравнить al c 4
jnle m2 ;перейти на метку если al=<-4
cmp ax, 4
jnge m2 ;перейти на метку если al=>-15




 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Ассемблер
    #32761456
Dale
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дико извеняюсь за свое произведение. Забыл удалить пред отправкой мессаги.
Это были эксперименты отчаянного меня.

Еще разок мой код:
model small
.data
mas db -2,0,2,-7,8,-12,1,3,-9,-18,11,12,-15 ;Инициализируем массив. Размер каждого элемента байт
message db 'Сумма отрицательных элементов в интервале (-4,-15): $',0ah,0dh
.stack 256
.code
start:

mov ax,@data
mov ds,ax

mov cx,13 ;Значение счетчика цикла (число элементов массива)
mov dx,0
lea bx,mas
m1:
mov al,[bx]
or al,al
cmp al,-4
jnle m2
cmp al,-15
jnge m2
add dx,[bx] ;Здесь я складываю отрицательные элементы заданного
;диапазона
m2:
inc bx
loop m1

mov bx,dx
mov ah,09h ;Выводим сообщение message
lea dx,message
int 21h

mov dx,bx ;До этого момента все работает
mov ah,02h ;Здесь же не выводиться сумма отрицательных элементов
add dl,30h ;массива
int 21h

exit:
mov ah,4ch
int 21h
end start

Может быть надо складывать модули нужных элементов, а при ывводе на экран результата дописывать символ "-". Но помоему должно быть другое решение....
...
Рейтинг: 0 / 0
Ассемблер
    #32763209
Odin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
mov dx,bx ;До этого момента все работает 
mov ah,02h ;Здесь же не выводиться сумма отрицательных элементов 
add dl,30h ;массива 
int 21h

Так точно ничего хорошего не выведется.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ассемблер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]