| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Задача асемблер за PIC16C73 http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=12677 |
Страница 1 от 6 |
| Автор: | EquilibriumCST [ Нед Фев 09, 2014 10:30 pm ] |
| Заглавие: | Задача асемблер за PIC16C73 |
Здравейте, Контролера е PIC16C73 и използваме mplap за информация. Ето и условието на задачата Да се състави програма на асемблер, която: 1. Да съдържа подпрограма, пресмятаща израза: R = A.4 – B/4 + 178, където А – еднобайтова променлива в данновата памет; В – еднобайтова променлива в данновата памет. 2. Подпрограмата да се извика за елементите на два масива от по 12 еднобайтови числа. Мога да предоставя и примерна задача подобна на тази. Ако не се намери някой доброволец почитащ червения кръст може и срещу заплащане Или предлагам мой труд като Java Web Developer. Поздрави Валери |
|
| Автор: | EquilibriumCST [ Нед Фев 09, 2014 10:33 pm ] |
| Заглавие: | Re: Задача асемблер за PIC16C73 |
Май съм пуснал темата на грешно място. Моля някой с права да я премести в Микроконтролери - Програмиране раздела. |
|
| Автор: | Cekins [ Пон Фев 10, 2014 12:20 am ] |
| Заглавие: | Re: Задача асемблер за PIC16C73 |
Темата ти е най-вече за "Обяви". А сега може би един тъп въпрос - какво ще прави тоя дядка като сметне нещата - ще започне да подскача на един крак ли, що ли ? И накрая решението - изтегли си някъв (къв да е) компилатор за пик-чета - за съжаления на Java няма, тъй че ще трябва да се примириш с С, паскал или бейсик. Написваш си кода, компилираш го, преписваш компилираното, като махаш(или променяш) коментарите дето ги слага компилатора и си готов. Не че няма ентусиасти тука, ама едва ли някой ще седне ей сега да пише на асемблер. И последно - питай даскала R каква трябва да е : byte, shortint, integer, longint, float, real , signed, unsigned ? Щото за пикчето има голямо значение... |
|
| Автор: | CarBeta [ Пон Фев 10, 2014 10:04 am ] |
| Заглавие: | Re: Задача асемблер за PIC16C73 |
Че тя задачата е 5 реда на асемблер Даскала ти е дал най-лесния вариант за умножение и делене(четна константа). В случая резултата от умножение по 4 ти е А и два пъти RLF, a делене на 4 ти е B и два пъти RRF. Преди всяка RLF/RRF операция трябва да нулираш С, да не се намъкне в резултата. Ако резултата от умножението е повече от 8 бита се гледа DC и ти трябва още една променлива за старшите битове. |
|
| Автор: | Cekins [ Пон Фев 10, 2014 8:22 pm ] |
| Заглавие: | Re: Задача асемблер за PIC16C73 |
Да де ама R не е уточнено какво е - щото ако е байт - лесно, ама ако е някакъв интиджер - вече е друго. За масива - гадинката има FSR тъй че и туй олеснява допълнително задачата. |
|
| Автор: | Vesko [ Пон Фев 10, 2014 8:59 pm ] | |||||||||
| Заглавие: | Re: Задача асемблер за PIC16C73 | |||||||||
Другото неуточнено е в какъв размер се прави самата математика. Тя може да се прави както в инт (дефаулта за Ц за цели числа), така и в друг вид. И не е задължително резултата да съвпада с начина на смятане. ПП:Ако не е тайна тази задача в какво учебно заведение е? |
||||||||||
| Автор: | Cekins [ Вто Фев 11, 2014 10:21 am ] |
| Заглавие: | Re: Задача асемблер за PIC16C73 |
Аз по-горе писах че не са уточнени типовете. Искат му го на асемблер написано - там май няма дефоулт. |
|
| Автор: | ike [ Вто Фев 11, 2014 10:27 am ] |
| Заглавие: | Re: Задача асемблер за PIC16C73 |
R = A.4 – B/4 + 178 се събира в int16_t значи в такъв тип трябва да е отговора. |
|
| Автор: | Vesko [ Вто Фев 11, 2014 11:03 am ] | |||||||||
| Заглавие: | Re: Задача асемблер за PIC16C73 | |||||||||
R може да си е всякакъв тип, независимо че се събира в int16_t. |
||||||||||
| Автор: | CarBeta [ Вто Фев 11, 2014 12:39 pm ] |
| Заглавие: | Re: Задача асемблер за PIC16C73 |
Никъде не е споменато изискване за типа на R, т.е. не е нужно да си усложняваме живота с разсъждения "какво може", "какво би било...", "ако..." и т.н. В случая е важно да се напише на асемблер и резултата винаги да е верен. Уловките по-скоро са 16 битовaтa променливa за резултат и приоритета на аритметиката. |
|
| Автор: | didofen [ Вто Фев 11, 2014 12:43 pm ] |
| Заглавие: | Re: Задача асемблер за PIC16C73 |
човека иска асемблер - ротации, събирания, никви инт никви чар |
|
| Автор: | Vesko [ Вто Фев 11, 2014 12:45 pm ] | |||||||||
| Заглавие: | Re: Задача асемблер за PIC16C73 | |||||||||
Точно това "винаги да е верен" си май неизпълнимо. Например: Ако А = 64 и B = 0, то 64*4+0xb2 = 0xb2, ако се смята в int8 = 0x1b2, ако се смята в int16 Иначе вероятно за целите на задачата, надали има значение. |
||||||||||
| Автор: | Cekins [ Вто Фев 11, 2014 1:03 pm ] |
| Заглавие: | Re: Задача асемблер за PIC16C73 |
Е как пък да няма значение? Ако е Int8 няма да го интересува C флага, няма да има допълнителна команда да си оправя старшия байт. Освен това А*4 ако примерно А=180 и ако А се смята само като байт (демек rlf два пъти) е едно а ако трябва да си се сметне като int16 с проверка на кери и т.н. става друго. Въобще заданието е страшно непълно. Очевидно е, че който е дал заданието иска да види rrf и rlf ама дали с пренос или без и т.н. - не е ясно. Затова, както още в началото казах - тегли се един компилатор, написва си го на къвто език си ще, компилира, поочиства кода да изглежда като писан на ръка и ще блесне пред даскала. Пък че нищо няма да научи - тва вече друга тема. |
|
| Автор: | CarBeta [ Вто Фев 11, 2014 2:13 pm ] | |||||||||
| Заглавие: | Re: Задача асемблер за PIC16C73 | |||||||||
Условието си е много ясно - асемблер, MPlab
Какви интежъри ви гонят на асемблер. Работи се с байтове в хекс. Естествено че R ще бъде двубайтова променлива ако искаме да смята вярно за всички стойности от 0x00 до 0xFF. То и това е уловка, щото с по-големи стойности за А няма как да мине без пренос. Идеята е да се замисли човек как с 8 битов контролер да скалъпи цялата галимация. |
||||||||||
| Автор: | Vesko [ Вто Фев 11, 2014 2:50 pm ] | ||||||||||||||||||
| Заглавие: | Re: Задача асемблер за PIC16C73 | ||||||||||||||||||
И кое му е естественото? В С е нормално цялата математика да е int (16 или 32 зависи от компилатора, ако A и B са char или int), Обаче няма изисквания за R да е int, може да си е char. Въпрос на мислене и на условие на задачата си е, а в случая недефинирано. Поне в цитираното условие. |
|||||||||||||||||||
| Страница 1 от 6 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|