Вернуться   Компьютерный форум > Компьютеры > Программы > Программирование
 
 
Опции темы
Старый 23.12.2011, 18:11   #1 (ссылка)
Новичок
 
Аватар для SchwarzeWolfin
 
Регистрация: 17.03.2011
Сообщений: 10
Репутация: 0
Профиль ВКонтакте Профиль в Мой мир
По умолчанию ассемблер. удаление элемента массива (помогите найти ошибку) СРОЧНО,ДО ЗАВТРА!!

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

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 вне форума  
Ads
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Срочно помогите! Удаление Win32/TrojanDownloader.Carberp.Ad Oxxximiron Безопасность 1 10.11.2011 14:20
помогите найти ошибку (Qt) SchwarzeWolfin Программирование 0 25.10.2011 20:18
Помогите срочно, при установки виндовс xp выдаёт ошибку CRC не возможно прочитать дан demon8432 Windows XP 5 06.05.2011 15:45
Помогите найти срочно sapphirebarry Железо 1 20.03.2011 11:39
Срочно помогите найти драйвер! ledge-xxx Железо 27 09.03.2010 17:09


Текущее время: 14:20. Часовой пояс GMT +4. Powered by vBulletin® Version 5.8.9
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.