КОНТРОЛНО СЪСТЕЗАНИЕ ЗА ПЪРВО НАЦИОНАЛНИЯ ОТБОР
София, 30 април 2002
Задача 3. АСЕМБЛЕР
Въображаем процесор има една клетка-акумулатор и достъп до памет, която клетките са в номерирани
последователно, започвайки от 1 до 10000. Във всяка клетка (включително и в акумулатора) процесорът
може да запише по едно цяло число в диапазона от 0 до 1020 и да го прочете оттам. Езикът за
програмиране от асемблеров тип за този процесор има 4 команди: LOA i - зарежда акумулатора със стойността на i-тата клетка от паметта; STO i - записва стойността на акумулатора в i-тата клетка от паметта; ADD i - събира стойността на акумулатора и стойността на клетка i, като резултатът остава в аку- мулатора; MUL i - умножава стойността на акумулатора и стойността на клетка i, като резултатът остава в. акумулатора Напишете програма ASSEM.EXE за генериране на редица от команди на описания език, предназначена за пресмятане стойността на даден алгебричен израз, съставен с някои от променливите X1, X2, ..., X9 чрез действията събиране и умножение, като могат да се използват и скоби, обичайните съгласно правила за съставяне на алгебрични изрази. Стойностите на променливите във вид на цели неотрицателни числа, не но-големи от 1000 заредени в са първите 9 последователни клетки от паметта. Резултат от пресмятането Крайният на алгебричния израз трябва да остане в акумулатора. Вашата програма трябва да прочете входните си данни от текстовия файл ASSEM.INP, се състои който от два реда. В първия ред, разделени с по една шпация, са дадени стойностите на първите 9 клетки от паметта, а във втория ред е записан дадения алгебричен израз, който може да съдържа общо най-много 200 знака. Изходните данни трябва да бъдат записани в текстов файл ASSEM.OUT. Първия ред трябва На да ¥ записана стойността на алгебричния израз, при заместване на пресметната променливите със съответните им числени стойности. Следващият ред във На файла трябва да ¥ записан броят на командите за пресмятане на израза. На следващите редове трябва да са записани съответните команди, по една на ред. Пример
đang được dịch, vui lòng đợi..