Здравствуйте. Я очень плохо знаю asm, но по учебе задали задачку решить, а я не знаю как.(( О, гуру, сжальтесь на о мной, и помогите, вот условие: str db 5,8,9,9,1,7,0,3,4.строковая переменная расположенная во флэш памяти.определить наибольшую и наименьшую цифру этой последовательности.
cibermind Давайте подумаем: Код (Text): Ip = @Str Count = Length Min = BYTE(0xFF) Max = BYTE(0) Do N = BYTE[Ip] If N < Min: Min = N If N > Max: Max = N Ip = Ip + 1 Count = Count - 1 Loop Count Описать этот псевдокод кодом мы не можем, так как не знаем необходимую вам архитектуру.
Clerk Там поправку: Min = BYTE(0xFF) и Max = BYTE(0). В потоке может не быть больших или меньших. Например имеем -128(,-127) -> Min=-128, Max=0. Например имеем 127 -> Min=-1, Max=127. фасм-макро, сильно не проверял Код (Text): ;rus: sz str1,'строка1',,'строка2' -> ; str1.size=len('строка1',,'строка2') ; dd str1.size ; name db 'строка1' ; db 'строка2' ; db 0 macro sz name*,[strings]{ common dd 0 label name forward if ~strings eq db strings end if common name#.size=$-name store dword name#.size at name-4 db 0 } ;rus: найти мин. и макс. знаковые байты строки(и вывести на экран), совместимой с производимыми макросом <sz>. macro min_max string*{ ;rus: отругать за пустую строку if string#.size=0 display 13,10,`string,'.size=0!' err else ;rus: локальные переменные local char,min,max ;rus: movsx qword char, byte char macro _movsx\{ if char and $80<>0 char=$ffff'ffff'ffff'ff00 or char end if \} ;rus: установить начальные min и max как предположительно максимально возможные ; расширить байт в учетв.слово: !фасм считает qword'ами load char byte from string _movsx min=char max=char ;rus: пройтись по всех символах, кроме уже взятого первого, подбирая новые min и max repeat string#.size-1 load char byte from string+% _movsx if char<min min=char end if if char>max max=char end if end repeat ;rus: выводит знаковый байт, записанный как знаковый qword macro sdec3 val\{ char=val if char<0 display '-' char=-char end if display char/100+'0',(char/010)mod 10+'0',char mod 10+'0' \} ;rus: вывод результатов display 13,10,'min=' sdec3 min display 13,10,'max=' sdec3 max ;тест макро: вывести диапазон -128..127 ; display 13,10 ; repeat 128 ; sdec3(%-1-128) ; display ',' ; end repeat ; repeat 127 ; sdec3 % ; display ',' ; end repeat ;rus: выгрузить макро purge _movsx purge sdec3 end if } sz str1,\ -128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113,-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-099,-098,-097,-096,-095,-094,-093,-092,-091,-090,-089,-088,-087,-086,-085,-084,-083,-082,-081,-080,-079,-078,-077,-076,-075,-074,-073,-072,-071,-070,-069,-068,-067,-066,-065,-064,-063,-062,-061,-060,-059,-058,-057,-056,-055,-054,-053,-052,-051,-050,-049,-048,-047,-046,-045,-044,-043,-042,-041,-040,-039,-038,-037,-036,-035,-034,-033,-032,-031,-030,-029,-028,-027,-026,-025,-024,-023,-022,-021,-020,-019,-018,-017,-016,-015,-014,-013,-012,-011,-010,-009,-008,-007,-006,-005,-004,-003,-002,-001,001,002,003,004,005,006,007,008,009,010,011,012,013,014,015,016,017,018,019,020,021,022,023,024,025,026,027,028,029,030,031,032,033,034,035,036,037,038,039,040,041,042,043,044,045,046,047,048,049,050,051,052,053,054,055,056,057,058,059,060,061,062,063,064,065,066,067,068,069,070,071,072,073,074,075,076,077,078,079,080,081,082,083,084,085,086,087,088,089,090,091,092,093,094,095,096,097,098,099,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 min_max str1
edemko С чего вы взяли что значения знаковые ? Более того вполне вероятно что ТС хотел сказать что это текстовая строка.
Min = BYTE(0xFF) Макро не имеет ограничений на тип данных, но обрабатывает их побайтно. Можно написать: sz str1,0,1,2,3,4,5 Можно написать: sz str2,'stroka1','stroka2',-1,-127,4,5
Сорь, что вмешиваюсь... Но, просто для информации. Сия личность уже успела создать три топика с таким же названием и содержимым на ксакепе. Два было удалено, в одном даже кто-то ответил кодом. Если интересно я могу поискать ссылку. Личность на вопросы не отвечает, тупо задаёт один и тот же вопрос. Причём каждый раз с созданием нового топика. Я склоняюсь к мысли что это бот.
а подскажите это код разве на ассемблере?просто я изучаю програмирование микрокантроллеров семейство AVR,мне тоже попадалась такая задачка,вот частет кода я сомневаюсь и еще если кому не трудно выложите блок схему решения этой задачи