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

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

  1. bazingaa

    bazingaa Wax on, wax off

    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 Wax on, wax off

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

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

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

    Поздрав.
     
  3. bibil

    bibil Гик

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

    Pilsator Гик

    424
    98
    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 Wax on, wax off

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

    bazingaa Wax on, wax off

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

    Boldozer Активен гик

    1,012
    447
    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,562
  2. Psychoo
    Одговори:
    5
    Прегледи:
    983
  3. kabom
    Одговори:
    4
    Прегледи:
    788
  4. RFox
    Одговори:
    3
    Прегледи:
    6,056
  5. Pilsator
    Одговори:
    0
    Прегледи:
    1,596
Вчитување...

Сподели