Робота с масивами.

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

BBC
Сообщения: 9
Зарегистрирован: 26 окт 2008, 02:43

Последовательно переписать все значения большие А0 из одного массива с 16 элементами в другой,остаток массива заполнить нулями.
Вывести количество таких значений.
01 A3 00 FE 77 01 ....
результат
A3 FE 00 00 00 ....
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

01, A3, FE... это Byte или String?
Ну просто удивительно, как ухитряются в этом разделе люди сделать все возможное, чтобы иметь максимальное количесво шансов получить неправильное решение!
BBC
Сообщения: 9
Зарегистрирован: 26 окт 2008, 02:43

Откровенно говоря я не знаю.Скорее всего Byte.Но вот в чем дело.Я бы не обращался если бы препод обьяснил бы хотябы что нибуть.Но он даже не дал синтаксиса.Плюс у нас в универе работают на Assembler для 86 процессора в котором нету регистров AX BX,а есть только AL BL CL DL.Вобщем в отличии от С++ я здесь ничего не понимаю, и буду крайне признателен если мне помогут хоть чем нибуть.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Если нет регистрорв AX, BX, DX, то это не может быть x86-ым процессором!
Что-то тут не чисто...
Скажите точно, какие регистры есть?
Для работы с массивами нам понадобятся индексные SI, DI... они-то есть?
BBC
Сообщения: 9
Зарегистрирован: 26 окт 2008, 02:43

http://www.softwareforeducation.com/-вот это ссылка на закачку того симулятора на котором мы работаем в универе.В разделе Microprocessor Simulator есть скрин сейв того симулятора.Возможно посмотрев на него ты сам все поймешь.К моему большому сожалению я немогу даже ответить на твой вопрос по поводу индексных SI, DI,поскольку не знаю где они находятся.А сам симулятор походу был написан студентом нашего универа гдето 3-4 года назад-это была его защита дипломной и программу оставили в универе как учебное пособие.Если что разберешь пиши, поскольку боюсь что сам не справлюсь.Заранее извиняюсь если по правилам форума ссылки на программы оставлять нельзя.
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

&quot писал(а):Если нет регистрорв AX, BX, DX, то это не может быть x86-ым процессором!
очень похоже на ассемблер 580 процессора...
BBC
Сообщения: 9
Зарегистрирован: 26 окт 2008, 02:43

Как считаете на нем реально написать выше упомянутую программу.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

согласно документации там должна работать индексная адресация

mov al,[20+bl]

но почему-то не работает :( не ассемблируется даже.
BBC, у вас ассемблируется такая строчка?

Скачал последнюю версию упомянутого симулятора, даже зарегистрировал ее...
Но она как-то неадекватно себя ведет:

1) CMP al, A0 - не влияем на OF, а только на SF и ZF
2) SUB cl, A0 -
при вычитании
07-A0 - флаги S=0, O=0
7F-A0 - S=1, O=1
80-A0 - S=1, O=0

В результате не пойму, как сделать проверку AL>=A0

CMP AL,A0
JO noaddtoarray2

Дает неожиданные результаты, но в остальном все работает

Код: Выделить всё

entry:	
	jmp start
array1:	;address - 02
	db 07 db 7F db 80 db FF db A0 db A1 db 9F db 16
	db E0 db EE db 20 db 30 db 99 db AE db F1 db 66
array2: ;address - 12
        db ff db ff db ff db ff db ff db ff db ff db ff 
	db ff db ff db ff db ff db ff db ff db ff db ff 
start:	
	mov bl,02	; base of array1
	mov dl,12	; base of array2
	mov cl,a0
loop:
	cmp bl,12	; закончился ли исх.массив
	jz fillzero	; если да, то AL=0
	mov al,[bl]	; иначе AL=array1[bl]
	inc bl
	cmp al,a0	
	jo noadd2arr2	
	jmp add2arr2
fillzero:
	xor al,al
	mov al,0
add2arr2:
	mov [dl],al ;arra2[dl]=AL
	inc dl
noadd2arr2:
	cmp dl,22  ; если не выщли за границу array2
	jnz loop     ; то сначала
	end
BBC
Сообщения: 9
Зарегистрирован: 26 окт 2008, 02:43

К сожалению нет.Выдает следующее: Expected a hexadecimal number, AL,BL,CL, or DL . Got 20+BL
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

BBC писал(а):Как считаете на нем реально написать выше упомянутую программу.


Прикольный вообще-то симулятор. :) , только памяти и регистров мало.
Периферия прикольная. Помимо клавы и экрана там есть нагревательное оборудование, лифт, 2 светофора, газорязрядный индикатор и еще какая-то фигнюшка :)
Ответить