Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ассемблер / 4 сообщений из 4, страница 1 из 1
27.10.2004, 20:03
    #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
29.10.2004, 15:11
    #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
29.10.2004, 16:32
    #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
01.11.2004, 14:29
    #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]