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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2011, 13:32   #1
Andi3z
Новичок
Джуниор
 
Регистрация: 26.06.2011
Сообщений: 1
По умолчанию

Добрый день, уважаемые. Хотел бы попросить помочь мне дописать программу. С ассемблером пока не очень, привык к языкам типа С и Pascal. Проблема в том что вроде все сделано логически верно, но не были использованы регистры(все действия проводил с переменными). Ну и конечный блок, где нужно найти произведение не доведен до ума.
Код:
;массив из 10 эл-тов

.model small
.stack 100h
.data
   mas db 15,1,3,0,2,4,0,2,4,1
   pro dw 0,"$" ;произведение
   max db 0,"$"
   frs db 0
   sec db 0
   mes db "Error",13,10"$"
.code

start:
	mov ax,@data
	mov ds,ax

	xor cx,cx
	xor ax,ax
	mov si,0
;-----------------------поиск максимального эл-та--------
pmax:	cmp mas[si],max
	js maxel
;-----------------------поиск нулей, контроль индекса----
a:	cmp mas[si],0
	jz nul
	cmp si,9
	inc si
	jnz pmax
	jz vmax
;------------------------запись максимального эл-та------
maxel:  mov max,mas[si]
	jmp a
;-------------------------установка нулей----------------
nul:    cmp frs,sec
	jz  1n
	jnz 2n
1n:	mov frs,si
2n:	mov sec,si
	inc si
	jmp pmax
;------------------------вывод макс знач-----------------	
vmax:	mov dx,offset max
	mov ah,09h
	int 21h
;------------------------проверка нулей------------------
	cmp frs,sec
	jz err
	inc frs
	cmp frs,sec
	dec frs
	jz err
	jnz end

err: 	mov dx,offset mes
	mov ah,09h
	int21
	end start

|end:	mov si,frs
|	inc si
|	mov al,mas[si]
|	mov cl,
|	mul cl
|
|end start
Буду рад любым советам и любой помощи.

блиин самое главное забыл! Задание: найти произведение чисел, находящихся между крайними нулями, а также найти самое большое число.

Последний раз редактировалось Stilet; 26.06.2011 в 18:40.
Andi3z вне форума Ответить с цитированием
Старый 26.06.2011, 18:39   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С потолка:
Код:
 ;Доползаем до первого нуля
 mov di,mas
 xor ax,ax
aga:
 scasb
 jne aga

 ;Доползаем до следующего нуля
 mov ax,1
ugu:
 mul [pr] ;произведение чисел
 mov dl,[edi]  ;Находка максимального
 cmp dl,[max]
 jle nono
 mov [max],dl
nono:
 xor ax,ax
 scasb
 mov al,[di]
 jne ugu

ret
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Циклы. Не могу довести до ума man-utd- Помощь студентам 2 21.12.2010 20:05
Не могу довести до ума задачу в Паскале. Кому неспицца?) Ilotoshka Помощь студентам 2 24.11.2010 05:18
Не могу фильтр на форме довести до ума. Помогите пожалуйста. lg140980bav Microsoft Office Access 5 28.11.2009 18:31
Помогите довести до ума andresan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 27.11.2009 07:46