Робота с масивами.
Модератор: Andy
Последовательно переписать все значения большие А0 из одного массива с 16 элементами в другой,остаток массива заполнить нулями.
Вывести количество таких значений.
01 A3 00 FE 77 01 ....
результат
A3 FE 00 00 00 ....
Вывести количество таких значений.
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?
Ну просто удивительно, как ухитряются в этом разделе люди сделать все возможное, чтобы иметь максимальное количесво шансов получить неправильное решение!
Ну просто удивительно, как ухитряются в этом разделе люди сделать все возможное, чтобы иметь максимальное количесво шансов получить неправильное решение!
Откровенно говоря я не знаю.Скорее всего Byte.Но вот в чем дело.Я бы не обращался если бы препод обьяснил бы хотябы что нибуть.Но он даже не дал синтаксиса.Плюс у нас в универе работают на Assembler для 86 процессора в котором нету регистров AX BX,а есть только AL BL CL DL.Вобщем в отличии от С++ я здесь ничего не понимаю, и буду крайне признателен если мне помогут хоть чем нибуть.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Если нет регистрорв AX, BX, DX, то это не может быть x86-ым процессором!
Что-то тут не чисто...
Скажите точно, какие регистры есть?
Для работы с массивами нам понадобятся индексные SI, DI... они-то есть?
Что-то тут не чисто...
Скажите точно, какие регистры есть?
Для работы с массивами нам понадобятся индексные SI, DI... они-то есть?
http://www.softwareforeducation.com/-вот это ссылка на закачку того симулятора на котором мы работаем в универе.В разделе Microprocessor Simulator есть скрин сейв того симулятора.Возможно посмотрев на него ты сам все поймешь.К моему большому сожалению я немогу даже ответить на твой вопрос по поводу индексных SI, DI,поскольку не знаю где они находятся.А сам симулятор походу был написан студентом нашего универа гдето 3-4 года назад-это была его защита дипломной и программу оставили в универе как учебное пособие.Если что разберешь пиши, поскольку боюсь что сам не справлюсь.Заранее извиняюсь если по правилам форума ссылки на программы оставлять нельзя.
-
- Сообщения: 375
- Зарегистрирован: 31 авг 2007, 03:06
очень похоже на ассемблер 580 процессора..." писал(а):Если нет регистрорв AX, BX, DX, то это не может быть x86-ым процессором!
Как считаете на нем реально написать выше упомянутую программу.
- 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
Дает неожиданные результаты, но в остальном все работает
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
К сожалению нет.Выдает следующее: Expected a hexadecimal number, AL,BL,CL, or DL . Got 20+BL
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
BBC писал(а):Как считаете на нем реально написать выше упомянутую программу.
Прикольный вообще-то симулятор.

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