Assemblimi i nje instruksioni assembly ne assembler (:?

Nuk eshte loje fjalesh,  mjafton te lexoni kodin dhe eshte i komentuar shume mire.
http://albanianwizard.org/Postokodin/37
Per te shkarkuar:
http://albanianwizard.org/mips_assembly_source_code_examples/programator/assembly.s

##################################

#albanianwizard.org #

#Licence GPLv3 #

#arditi – arditi{at}hush{pik}ai #

######################################################################################################################

#Asemblo instruksionin ori $8, $9, 0x0019 duke mbledhur 1 nga 1 pjeset e tij [opcode],[rt],[rs],[imm] #

#dhe duke e depozituar instruksionin ne menyre te rregullt duke respektuar formatin ne nje regjister ç’faredo. #

#########################################################################################################################################################

#Te assemblojm ORI-n #

#Formatin mund ta gjeni tek: #

#http://albanianwizard.org/informatika_shqiptare/arkitekture_kompiuterike/gjuha_e_programimit_assembly/formati-i-instruksioneve-ne-arkitekturen-mips/ #

#Ne kete ushtrim do te shohim se si duke mbledhur copeza kodi mund te arrijm tek instruksioni i deshiruar. #

#Ne rastin tone eshte: ori $8,$9,0×0019 #

#########################################################################################################################################################

.text

.globl main

######################################################################################

# INTRO #

#ori $8, $9, 0x0019 eshte i barabart me isntruksionin 0x35280019 #

#ori ka opcode 1101 == 13 ne dec ose D ne hex #

#Shohim qe ka 1 operand dhe 1 regjister destinacioni dhe 1 vlere te menjehershme #

#Operandi [rs]= $9 / 0x9 #

#Destinacioni [rt]= $8 / 0x8 #

#Vlera e menjehershme [Imm] = 0x0019 #

#Zgjedhim $24 si regjister per te asembluar instruksionin #

######################################################################################

main:

ori $11,$0,0xD # opcode /kodi i instruksionit ori (0xD)/13/1101 ===>$11

ori $12,$0,0×9 # operandi $9 / [rs] ===>$12

ori $13,$0,0×8 # destinacioni $8 /[rt] ===>$13

ori $14,$0,0×0019 # [Imm] = 0x0019 ===>$14

########################

# Rregullojm Bitet #

########################

sll $11,$11,26 # spostojm [opcode] ne pozicionin e vet pasi tani eshte 0000 0000 0000 0000 0000 0000 0000 1101

# dhe duhet te jete (si opcode) ne pozicionin e vet: 0011 0100 0000 0000 0000 0000 0000 0000

sll $12,$12,21 # spostojm [rs] ne pozicionin e vet duke e levizur majtas 21 njesi dhe kemi:

# 0000 0000 0000 0000 0000 0000 0000 1001 mbasi e spostojm 21 njesi majtas kemi

# 0000 0001 0010 0000 0000 0000 0000 0000 [kjo eshte pamja e regjistrit mbas egzekutimit te sll $12, $12, 21

sll $13,$13,16 # spostojm [rt] (destinacionin) ne vendin e vet pasi tani eshte :

# 0000 0000 0000 0000 0000 0000 0000 1000 dhe duhet te jete :

# 0000 0000 0000 1000 0000 0000 0000 0000 [kete e ben instruksioni 😉 ]

##################################################

#Fillojm spostojm bitet ne regjistrin e deshiruar#

##################################################

or $24,$24,$11 # Bejme OR [opcode] (R11) tek regjistri $24 i cili do te marri pamjen:

# 0011 0100 0000 0000 0000 0000 0000 0000

or $24,$24,$12 # Bejme OR [RS] qe e kemi “qendisur” tek regjistri 12 me $24 i cili tani duke u shtuar dhe [rs] do marri pamjen

# 0011 0101 0010 0000 0000 0000 0000 0000

or $24,$24,$13 # Kalojm me OR $13 [rt] (destinacionin) tek regjistri yne $24 qe tani do te mari pamje akoma me te kompletuar :

# 0011 0101 0010 1000 (0000 0000 0000 0000) == IMM 😀

######################################################

#Na ngelen vetem 16 bitet e vleres se menjehershme :D#

######################################################

or $24,$24,$14 # Se fundmi fusim dhe vleren tone 0x0019 qe ne sistemin binar paraqitet me : 0000 0000 0001 1001

# Dhe pamja perfundimtare e regjistrit do jete:

# 0011 0101 0010 1000 0000 0000 0001 1001

ori $2, $0, 10 # Po vdis re Vdis 😛

syscall # Mbyllja e programit

################################################################

# PERFUNDIM #

#######################################################################################

#ori $8,$9,0×0019 <===> 0x35280019 <===> 0011 0101 0010 1000 0000 0000 0001 1001 #

#######################################################################################


			

Leave a Reply

Your email address will not be published. Required fields are marked *