Страница 2 из 53
Re: Задачка по мк51.Требуется помощ магистров!
Добавлено: Чт ноя 24, 2011 14:42:45
alyarma
Повторю: поясни назначение вот этих двух строчек:
Там должен быть не инкремент,а декремент.Я ошибся.Если имеется перенос, то программа прыгает на метку М3,а затем осуществляется декремент (для того,чтобы перейти на ячейку с номером на 1 меньше)
Код: Выделить всё
ORG 0
MOV R0,#2FH
MOV R1,#30H
MOV R3,#10H
MOV B,#0FFH
M1: MOV A,@R0
MOV @R1,A
DEC R0
INC R1
DJNZ R3,M1
MOV R3,#10H
MOV R0,#2FH
M2: MOV A,B
SUBB A,@R0
JC M3
M3: DEC R0
DJNZ R3,M2
MOV P1,B
END
Ошибка:
Re: Задачка по мк51.Требуется помощ магистров!
Добавлено: Чт ноя 24, 2011 14:46:22
Engineer_Keen
Да, уменьшение R3 проглядел...

Сказывается привыкание с системе команд AVR, в которой сея полезная инструкция отсутствует (но успешно заменяется макросом с аналогичным названием

)
alyarma писал(а):Если имеется перенос, то программа прыгает на метку М3
А если переноса нет, куда попадем после JC?
Подсказываю: туда же
Нужно между строками с условным переходом и M3 как раз сохранять число в регистре B.
Re: Задачка по мк51.Требуется помощ магистров!
Добавлено: Чт ноя 24, 2011 14:46:40
МитяРа
alyarma писал(а):Там должен быть не инкремент,а декремент.
Дело не в декременте или инкременте, а в том, что ты после проверки условия прыгаешь в одно и то-же место..
Re: Задачка по мк51.Требуется помощ магистров!
Добавлено: Чт ноя 24, 2011 14:52:03
МитяРа
alyarma, скачай нормальный виндовый симулятор, чё ты с DOS-овским мучаешся:
http://www.dontronics.com/zip/sim51.zip
Re: Задачка по мк51.Требуется помощ магистров!
Добавлено: Чт ноя 24, 2011 14:57:04
alyarma
Теперь понял.Исправил как вы и предложили,но опять ошибка
Код: Выделить всё
ORG 0
MOV R0,#2FH
MOV R1,#30H
MOV R3,#10H
MOV B,#0FFH
M1: MOV A,@R0
MOV @R1,A
DEC R0
INC R1
DJNZ R3,M1
MOV R3,#10H
MOV R0,#2FH
M2: MOV A,B
SUBB A,@R0
MOV B,A
M3: DEC R0
DJNZ R3,M2
MOV P1,B
END
Мне препод в универе дал ассемблер,вот я им и пользуюсь

А чем мой плох?
P.S.:Хм,а ведь переход нужен будет,если числа в массиве будут не по порядку идти.Но тогда нужно будет ещё 1 метку делать...
Re: Задачка по мк51.Требуется помощ магистров!
Добавлено: Чт ноя 24, 2011 15:06:15
МитяРа
alyarma писал(а):а ведь переход нужен будет,если числа в массиве будут не по порядку идти.
Порядок чисел тут не при чём..
Ты в начале загоняешь в
B максимальное число, а потом с ним сравниваешь по порядку все числа из массива..
Если число из массива меньше числа в
B, то копируем это число в
B, если нет - проверяем дальше..
P.S. А куда ты инструкцию перехода
JC выкинул?
P.P.S.
alyarma писал(а):А чем мой плох?
Дело не в "плохости", а в удобности.. Мя их в своё время много перепробовал и для 51-х-классик остановился на этом..
Re: Задачка по мк51.Требуется помощ магистров!
Добавлено: Чт ноя 24, 2011 15:11:46
alyarma
МитяРа писал(а):
P.S. А куда ты инструкцию перехода JC выкинул?
Да много идей уже в голову пришло,правда не удачных идей,вот и выкинул

Теперь так:
Код: Выделить всё
ORG 0
MOV R0,#2FH
MOV R1,#30H
MOV R3,#10H
MOV B,#0FFH
M1: MOV A,@R0
MOV @R1,A
DEC R0
INC R1
DJNZ R3,M1
MOV R3,#10H
MOV R0,#2FH
M2: MOV A,B
SUBB A,@R0
JC M3
MOV B,A
M3: DEC R0
DJNZ R3,M2
MOV P1,B
END
Re: Задачка по мк51.Требуется помощ магистров!
Добавлено: Чт ноя 24, 2011 15:15:02
Engineer_Keen
alyarma писал(а):Мне препод в универе дал ассемблер,вот я им и пользуюсь

А чем мой плох?
Наверняка он менее удобный.
Ошибка в том, что программа на ассемблере не может заканчиваться как любая программа на языке высокого уровня - контроллер будет дальше выполнять инструкции в памяти после слова END, а так как там ничего не написано - там может быть мусор и неизвестно что, вот симулятор и ругается. Программу нужно заканчивать циклом типа
тогда ошибки не будет, потому что дальше цикла контроллер не попадет.
Re: Задачка по мк51.Требуется помощ магистров!
Добавлено: Чт ноя 24, 2011 15:17:40
МитяРа
alyarma писал(а):Теперь так:
Вроде походу будет работать..
Re: Задачка по мк51.Требуется помощ магистров!
Добавлено: Чт ноя 24, 2011 15:25:51
alyarma
Про зацикливание в конце совсем забыл.
Теперь в порт записывается число,но почему-то не минимальное в массиве.А точнее число,которого вообще в массиве нету
Код: Выделить всё
ORG 0
MOV R0,#2FH
MOV R1,#30H
MOV R3,#10H
MOV B,#0FFH
M1: MOV A,@R0
MOV @R1,A
DEC R0
INC R1
DJNZ R3,M1
MOV R3,#10H
MOV R0,#2FH
M2: MOV A,B
SUBB A,@R0
JC M3
MOV B,A
M3: DEC R0
DJNZ R3,M2
MOV P1,B
JMP $
END
А вот в этой части после вычитания в B записывается ведь результат вычитания?Если да,то,по-ходу,в этом ошибка...
Попробывал,действительно,в B записывался результат вычитания,а не число из массива

Всё заработало,всем большое спасибо

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Добавлено: Чт ноя 24, 2011 15:36:27
МитяРа
Вместо mov b,a, напиши mov b,@r0
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Добавлено: Чт ноя 24, 2011 15:37:16
alyarma
МитяРа писал(а):Вместо mov a,b, напиши mov b,@r0
Уже сам догадался

Ещё раз всем спасибо

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Добавлено: Чт ноя 24, 2011 15:39:03
МитяРа
alyarma писал(а):Ещё раз всем спасибо
Угу..
Теперь можешь гордится, у тя на коте есть "прикреплённая" тема про МК51..
И щоб вопросы по этому семейству только в ней задавать..

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Добавлено: Чт ноя 24, 2011 15:40:30
alyarma
МитяРа писал(а):alyarma писал(а):Ещё раз всем спасибо
Угу..
Теперь можешь гордится, у тя на коте есть "прикреплённая" тема про МК51..
И щоб вопросы по этому семейству только в ней задавать..

Учту

Правда врятли ещё что-то по ассемблеру буду делать,ибо это была последняя индивидка

Хотя всякое в жизни бывает

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Добавлено: Чт ноя 24, 2011 16:07:01
МитяРа
alyarma писал(а):Хотя всякое в жизни бывает
И не только у тя..
Удачи..

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Добавлено: Чт ноя 24, 2011 17:09:28
pyzhman
Извините за офтоп, не могу удержаться.
С нескрываемым интересом следил за перипетиями матча. Испытал массу впечатлений. Спасибо участникам. Многим есть чему поучиться.
МитяРа, +7 пунктов.

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Добавлено: Чт ноя 24, 2011 17:16:31
МитяРа
pyzh_man писал(а): +7 пунктов.
Какие-такие пункты? Опять на мя досье строчишь? А старое - опять потерял?
P.S. Приветствую, кстати..

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Добавлено: Чт ноя 24, 2011 18:09:54
BOB51
пока мудрил, похоже тема вперед ушла...
ну и мой "ляп" приложу...(атмелевский c51asm+fd51rus)
вариации на тему "пузырьков" ("а минимальное значение вывести на светодиоды порта вывода Р1.") - набросок прицепил в виде листинга для меньшей заморочки - код совершенно неоптимален

но вроде работает...

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Добавлено: Чт ноя 24, 2011 18:17:53
МитяРа
BOB51 писал(а):ну и мой "ляп" приложу.
Это ещё почему - ляп, всё по правильному сделано и в одном цикле..
Ты пушистый, профессионализм свой - не принижай..

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Добавлено: Пт ноя 25, 2011 07:38:27
BOB51
а потому ляп, что не все проблемные точки проверены - "скороспелка" получилась
взять хотя-бы отсутствие очистки CY перед операцией subb a,......
да и для всплытия "наименьшего из" достаточно одного прохода, а не 16 (для полной сортировки)
