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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2011, 17:36   #1
SchwarzeWolfin
 
Аватар для SchwarzeWolfin
 
Регистрация: 28.11.2010
Сообщений: 5
По умолчанию удаление элемента массива (ассемблер)

задание заключается в удалении элемента массива. размер массива,элементы,удаляемый элемент вводятся с клавиатуры. кучу раз уже переписывала код по новой, привожу самый нормальный вариант (который работает совсем не так как надо). до конца ввода вроде нет ошибок,проверяла. насколько я могу предположить,ошибка кроется где-то начиная с проверки элементов на удаление вплоть до вывода. подскажите пожалуйста,что нужно исправить,завтра уже нужно сдавать рабочую программу. а,и ещё.бесконечные циклы в конце сделаны чтобы окно не закрывалось после завершения программы,но это почему то не всегда срабатывает.есть ли какое-нибудь прерывание для таких целей?

http://zalil.ru/32355197

Код:
.model 	tiny
	.code
	org	100h
start:
	mov	ah,9h
	mov	dx,offset text1
	int	21h				;вывод сообщения
	mov	ah,1h
	int	21h				;считывание символа
	call 	perevod				;преобразуем код в символ
	mov	dx,10h
	mul	dx				;умножаем на 10
	mov	dx,ax
	mov	ah,1h
	int	21h				;считываем символ
	call 	perevod				;преобразуем код в символ
	add	ax,dx
	mov	razmer,ax			;записываем в переменную

	mov	kol,0h				;обнуляем счётчик
	mov	bx,offset massiv		;адрес начала списка
	mov	adres,bx
	mov	ah,9h
	mov	dx,offset text2
	int	21h				;вывод сообщения
vvod:
	mov	ah,1h
	int	21h				;ввод символа
	mov	ah,0h
	mov	bx,adres
	mov	[bx],al				;записываем считанный символ в список
	add	bx,2h
	mov	adres,bx			;увеличиваем адрес на 2 байта
	mov	bx,kol
	add	bx,1h				;увеличиваем количество итераций
	mov	kol,bx
	mov	cx,razmer
	cmp	bx,cx
	jl	vvod				;если введены не все элементы,вводим
	
	mov	ah,9h
	mov	dx,offset text3
	int	21h				;вывод сообщения
	mov	ah,0h
	mov	ah,1h
	int	21h				;считываем символ
	mov	ah,0h
	mov	udal,ax				;и записываем в переменную

	mov	kol,0h				;обнуляем счётчик
	mov	ind,0h
	mov	bx,razmer
	add	bx,1h
	mov	razmer,bx			;увеличиваем размер массива на 1
	mov	bx,offset massiv
	mov	adres,bx			;начало списка
proverka:
	mov	bx,kol
	add	bx,1h
	mov	kol,bx
	mov	cx,razmer
	cmp	bx,cx
	je	vyvod				;если проверили все элементы,выводим
	mov	bx,ind
	add	bx,1h
	mov	ind,bx
	mov	bx,adres
	mov	cx,[bx]
	add	bx,2h
	mov	adres,bx			;увеличиваем адрес на 2 байта
	mov	bx,udal
	cmp	bx,cx
	je	sdvig				;если элемент нужно удалить,сдвигаем
	jmp	proverka

	mov	bx,offset massiv
	mov	adres,bx
	mov	kol,0h
vyvod:
	mov	ah,2h
	mov	bx,adres
	mov	dx,[bx]
	int	21h
	mov	bx,adres
	add	bx,2h
	mov	adres,bx
	mov	bx,kol
	add	bx,1h
	mov	kol,bx
	mov	cx,razmer
	cmp	bx,cx
	jl	vyvod
	jmp	konec

konec:
	jmp	konec

	
perevod:
	mov	ah,0h
	mov	bx,ax
	mov	cx,3ah
	cmp	bx,cx
	jl	m1
	sub	bx,40h
	add	bx,9h
	jmp	m2
m1:
	sub	bx,30h
m2:
	mov	ax,bx
	ret

sdvig:
	mov	k,0h
	mov	ax,razmer
	mov	dx,ind
	sub	ax,dx
m3:
	mov	cx,[bx+2h]
	mov	[bx],cx
	add	bx,2h
	mov	dx,k
	add	dx,1h
	mov	k,dx
	mov	cx,ax
	cmp	dx,cx
	jl	m3
	mov	ax,razmer
	sub	ax,1h
	mov	razmer,ax
	ret
	
n:
	jmp	n


k	dw	0h				
ind	dw	0h				
udal	dw	0h				;символ для удаления
razmer	dw	0h				;размер списка
kol	dw	0h				;счётчик
massiv	dw	0h				;начало списка
massiv2	dw	0h				;начало итогового массива
adres	dw	0h				;адрес элемента списка
text1	db	"Vvedite razmer massiva v 2-x znachnom vide: ",'$'
text2	db	0Dh,0Ah,"Vvedite elementy massiva: ",'$'
text3	db	0Dh,0Ah,"Vvedite elementy dlya udaleniya: ",'$'
	end	start
SchwarzeWolfin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление элемента из массива Dmitry73 Помощь студентам 3 02.12.2010 09:10
удаление элемента массива Studentka_iz_ZP Общие вопросы C/C++ 2 02.10.2010 13:55
Удаление элемента из массива prostac Помощь студентам 2 30.09.2010 11:14
Удаление элемента из массива asd874 Помощь студентам 3 13.05.2010 12:13
Удаление элемента из массива Ozerich PHP 10 14.02.2009 02:21