Асемблер задача

Дискусија во форумот 'Assembly' започната од bazingaa, 14 ноември 2016.

  1. bazingaa

    bazingaa
    Intern

    3
    0
    17 Март 2016
    Здраво, да не има некој што знае да ги реши задачиве.
    Задача 1: Даден е збор A. Тој е иницијализиран при неговото дефинирање. Напишете програма со која ќе генерирате збор B кој се добива така што секпја цифра 0 од А е заменета со буквата О.
    Пример: A: PR0CES0R B: PROCESOR

    Задача 2: Напишете процедура со која ќе проверите дали еден стринг А е подстринг на друг стринг B (Се подразбира дека крајот на стрингпвите е означен со знакпт $). Процедурата има два влезни податоци кои ги претставуваат ефективните адреси на стрингпвите А и B. Tие податпци треба да се предадат преку регистрите SI (A почнува на адреса DS:SI) и DI (B почнува на адреса ES:DI). Резултатот од процедурата треба да е 1 ако А е подстринг на B или 0 ако A не е подстринг на B. Резултатпт може да се предаде преку стек.
    Во главнипт дел од програмата реченицата се внесуваат двата стригнови и се запишуваат во меморија (стринговите имаат најмнпгу 50 знаци). За крај на стринговите се внесува знакот $. По читањето на стринговите треба да се повика процедурата и зависно од резултатот отпечатете порака дали А е подстринг на B.
    Пример 1:
    Vnesi go A: ana$ Vnesi go B: tetratka$ Излез: ana ne e podstring na tetratka

    Пример 2:
    Vnesi go A: ana$ Vnesi go B: ivana$ Излез: ana e podstring na ivana

    Задача 3: Да се напише рекурзивна процедура за собирање на последпвателни броеви од 1 до n. Бројот n се внесува пд тастатура. Влезните и излезните податпци од процедурата треба да се предаваат преку стек.
    Пример: За внесено n = 5: 1 + 2 + 3 + 4 + 5 = 15 За внесено n = 10: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55
     
  2. Multipass

    Multipass
    Gaining Experience

    70
    135
    1 ноември 2015
    Машко
    Не знам assembler за да ти помогнам, но пробај на Stack overflow. Вака на прв поглед ми делуваат елементарни задачиве, типични од тие што се даваат на факултетите за информатика, ако имаш време за учење би требало лесно да ги совладаш.

    Ако немаш време за учење, искористи го тоа што сите програмери го прават, кради и искористи нечив код од интернет. :) Пребарувачот ти е најдобар пријател.

    P.S. Во денешно време многу полесно е да се украде код, него од пред 10 години, баш заради горенаведената веб страница.

    Поздрав.
     
  3. kebe

    kebe
    Gaining Experience

    192
    152
    29 Март 2012
    Ова е 3. лабораториска задача по Микро процесорски на ФИНКИ? :)
     
  4. Pilsator

    Pilsator
    Gaining Experience

    410
    95
    15 Мај 2012
    Машко
    Првата задача.
    http://pastebin.com/Wiy9Ak8b
    најверојатно лаб ти е завршена ама не ти го постирав решението за да земеш поени од лаб. Дај слободно отвори, види, прочитај и кажи ми што ти е јасно а што не.
    Што треба да знаеш?
    За стрингови ти е потребно да знаеш како да работиш со DI и SI
    -STOSB,MOVSB,LODSB и што друго имаше таму сите овие пренесуваат по еден БАЈТ (db) доколку завршува на W пренесува WORD (dw) односно два бајти.
    -1 бајт ти е се LOW битовите во регистрите значи 1 бајт можеш да имаш во AL, BL,CL
    -2 бајти можеш да имаш во AX,BX,CX,DX
    Дали знаеш добро да се снајдеш во емулаторот, т.е да отвориш меморија и да видиш што точно имаш запишано, да извршуваш линија по линија?
    Незнам што би ти кажал, има многу затоа најдобро е прашај се што сакаш.

    HINT за втора задача.
    Бидејќи се работи за процедура при повик на процедурата на стек се става IP (Instruction pointer регистерот) а во задачата ти вика дека треба да предадеш податоци преку стек запази при работата со стек бидејќи нема да го земеш вистинскиот податок, прво треба да го извлечеш и зачуваш некаде IP од стек.

    Можеш да користис CMPSB (мислам дека вака беше) за споредба на два стрингови од SI i DI.
     
  5. bazingaa

    bazingaa
    Intern

    3
    0
    17 Март 2016
    Фала ви многу, ќе помогне нешто од ова :D
     
  6. bazingaa

    bazingaa
    Intern

    3
    0
    17 Март 2016
    Да :D
     
  7. Boldozer

    Boldozer
    Gaining Experience

    1,032
    474
    2 ноември 2012
    Машко
    некој помош за функцијава во mips, влез е адресата од зборот што треба да се избрише(покажува на првата буква) и должина треба да се избрише зборот и на излез да ја врати адреса после избришаниот збор, имав идеја со shift-ање во лево или запушување на буквите во друга низа, ама несупешно
    Код:
    izbrisi: #vlez a0=adress na prva karakter a1=dolzina
        addi $t3,$zero,0 # j
        loopdelete:
            slt $t2,$t3,$a1 #j<brojot na bukvi
            beq $t2,$zero,Vratizbor 
            add $t5,$a0,$t3 #a0+j - adress
            lb $t6,0($t5)
           
            sb $s7,0($t5) #store vo novata niza ili so shift ako e mozno - sll
            addi $t3,$t3,1 #j+1
        Vratizbor:
        #prazno mesto da ispise
     
        jr $ra
     
Слични теми
  1. Dance989
    Одговори:
    19
    Прегледи:
    1,604
  2. Psychoo
    Одговори:
    5
    Прегледи:
    1,011
  3. kabom
    Одговори:
    4
    Прегледи:
    809
  4. RFox
    Одговори:
    3
    Прегледи:
    6,168
  5. Pilsator
    Одговори:
    0
    Прегледи:
    1,643
Вчитување...

Сподели