| Автор |
Съобщение |
|
EquilibriumCST
Ранг: Минаващ
Регистриран на: Нед Фев 09, 2014 10:22 pm Мнения: 3
|
 Задача асемблер за PIC16C73
Здравейте, Контролера е PIC16C73 и използваме mplap за информация. Ето и условието на задачата Да се състави програма на асемблер, която: 1. Да съдържа подпрограма, пресмятаща израза: R = A.4 – B/4 + 178, където А – еднобайтова променлива в данновата памет; В – еднобайтова променлива в данновата памет. 2. Подпрограмата да се извика за елементите на два масива от по 12 еднобайтови числа. Мога да предоставя и примерна задача подобна на тази. Ако не се намери някой доброволец почитащ червения кръст може и срещу заплащане  Или предлагам мой труд като Java Web Developer. Поздрави Валери
|
| Нед Фев 09, 2014 10:30 pm |
|
 |
|
EquilibriumCST
Ранг: Минаващ
Регистриран на: Нед Фев 09, 2014 10:22 pm Мнения: 3
|
 Re: Задача асемблер за PIC16C73
Май съм пуснал темата на грешно място. Моля някой с права да я премести в Микроконтролери - Програмиране раздела.
|
| Нед Фев 09, 2014 10:33 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Задача асемблер за PIC16C73
Темата ти е най-вече за "Обяви".
А сега може би един тъп въпрос - какво ще прави тоя дядка като сметне нещата - ще започне да подскача на един крак ли, що ли ?
И накрая решението - изтегли си някъв (къв да е) компилатор за пик-чета - за съжаления на Java няма, тъй че ще трябва да се примириш с С, паскал или бейсик. Написваш си кода, компилираш го, преписваш компилираното, като махаш(или променяш) коментарите дето ги слага компилатора и си готов. Не че няма ентусиасти тука, ама едва ли някой ще седне ей сега да пише на асемблер.
И последно - питай даскала R каква трябва да е : byte, shortint, integer, longint, float, real , signed, unsigned ? Щото за пикчето има голямо значение...
|
| Пон Фев 10, 2014 12:20 am |
|
 |
|
CarBeta
Ранг: Форумен бог
Регистриран на: Пет Май 01, 2009 4:01 pm Мнения: 1438
|
 Re: Задача асемблер за PIC16C73
Че тя задачата е 5 реда на асемблер Даскала ти е дал най-лесния вариант за умножение и делене(четна константа). В случая резултата от умножение по 4 ти е А и два пъти RLF, a делене на 4 ти е B и два пъти RRF. Преди всяка RLF/RRF операция трябва да нулираш С, да не се намъкне в резултата. Ако резултата от умножението е повече от 8 бита се гледа DC и ти трябва още една променлива за старшите битове.
|
| Пон Фев 10, 2014 10:04 am |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Задача асемблер за PIC16C73
Да де ама R не е уточнено какво е - щото ако е байт - лесно, ама ако е някакъв интиджер - вече е друго. За масива - гадинката има FSR тъй че и туй олеснява допълнително задачата.
|
| Пон Фев 10, 2014 8:22 pm |
|
 |
|
Vesko
Ранг: Популярен
Регистриран на: Пон Мар 22, 2010 8:52 pm Мнения: 328
|
 Re: Задача асемблер за PIC16C73
Другото неуточнено е в какъв размер се прави самата математика. Тя може да се прави както в инт (дефаулта за Ц за цели числа), така и в друг вид. И не е задължително резултата да съвпада с начина на смятане. ПП:Ако не е тайна тази задача в какво учебно заведение е?
|
| Пон Фев 10, 2014 8:59 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Задача асемблер за PIC16C73
Аз по-горе писах че не са уточнени типовете. Искат му го на асемблер написано - там май няма дефоулт.
|
| Вто Фев 11, 2014 10:21 am |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: Задача асемблер за PIC16C73
R = A.4 – B/4 + 178 се събира в int16_t значи в такъв тип трябва да е отговора.
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Вто Фев 11, 2014 10:27 am |
|
 |
|
Vesko
Ранг: Популярен
Регистриран на: Пон Мар 22, 2010 8:52 pm Мнения: 328
|
 Re: Задача асемблер за PIC16C73
R може да си е всякакъв тип, независимо че се събира в int16_t.
|
| Вто Фев 11, 2014 11:03 am |
|
 |
|
CarBeta
Ранг: Форумен бог
Регистриран на: Пет Май 01, 2009 4:01 pm Мнения: 1438
|
 Re: Задача асемблер за PIC16C73
Никъде не е споменато изискване за типа на R, т.е. не е нужно да си усложняваме живота с разсъждения "какво може", "какво би било...", "ако..." и т.н. В случая е важно да се напише на асемблер и резултата винаги да е верен. Уловките по-скоро са 16 битовaтa променливa за резултат и приоритета на аритметиката.
|
| Вто Фев 11, 2014 12:39 pm |
|
 |
|
didofen
Ранг: Популярен
Регистриран на: Вто Юни 27, 2006 11:13 am Мнения: 381 Местоположение: Варна
|
 Re: Задача асемблер за PIC16C73
човека иска асемблер - ротации, събирания, никви инт никви чар 
|
| Вто Фев 11, 2014 12:43 pm |
|
 |
|
Vesko
Ранг: Популярен
Регистриран на: Пон Мар 22, 2010 8:52 pm Мнения: 328
|
 Re: Задача асемблер за PIC16C73
Точно това "винаги да е верен" си май неизпълнимо. Например: Ако А = 64 и B = 0, то 64*4+0xb2 = 0xb2, ако се смята в int8 = 0x1b2, ако се смята в int16 Иначе вероятно за целите на задачата, надали има значение. 
|
| Вто Фев 11, 2014 12:45 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Задача асемблер за PIC16C73
Е как пък да няма значение? Ако е Int8 няма да го интересува C флага, няма да има допълнителна команда да си оправя старшия байт. Освен това А*4 ако примерно А=180 и ако А се смята само като байт (демек rlf два пъти) е едно а ако трябва да си се сметне като int16 с проверка на кери и т.н. става друго. Въобще заданието е страшно непълно. Очевидно е, че който е дал заданието иска да види rrf и rlf ама дали с пренос или без и т.н. - не е ясно. Затова, както още в началото казах - тегли се един компилатор, написва си го на къвто език си ще, компилира, поочиства кода да изглежда като писан на ръка и ще блесне пред даскала. Пък че нищо няма да научи - тва вече друга тема.
|
| Вто Фев 11, 2014 1:03 pm |
|
 |
|
CarBeta
Ранг: Форумен бог
Регистриран на: Пет Май 01, 2009 4:01 pm Мнения: 1438
|
 Re: Задача асемблер за PIC16C73
Условието си е много ясно - асемблер, MPlab Какви интежъри ви гонят на асемблер. Работи се с байтове в хекс. Естествено че R ще бъде двубайтова променлива ако искаме да смята вярно за всички стойности от 0x00 до 0xFF. То и това е уловка, щото с по-големи стойности за А няма как да мине без пренос. Идеята е да се замисли човек как с 8 битов контролер да скалъпи цялата галимация.
|
| Вто Фев 11, 2014 2:13 pm |
|
 |
|
Vesko
Ранг: Популярен
Регистриран на: Пон Мар 22, 2010 8:52 pm Мнения: 328
|
 Re: Задача асемблер за PIC16C73
И кое му е естественото? В С е нормално цялата математика да е int (16 или 32 зависи от компилатора, ако A и B са char или int), Обаче няма изисквания за R да е int, може да си е char. Въпрос на мислене и на условие на задачата си е, а в случая недефинирано. Поне в цитираното условие.
|
| Вто Фев 11, 2014 2:50 pm |
|
|