מבנה המחשב תרגיל 1

bennyassembly, mips assembly, מבנה המחשבLeave a Comment

תרגיל 1 – מבנה המחשב

שאלה 1 :
כתוב תוכנית שמעתיקה בלוק של מילים – שמתחיל בכתובת הנמצאת ברגיסטר $a0
אל בלוק של מילים שמתחיל בכתובת הנמצאת ברגיסטר $a1
בנוסף התוכנית תספור את מספר המילים שהועתקו ותשמור את התוצאה ברגיסטר $v0
. המילה האחרונה שתועתק אך לא תיספר הינה בעלת ערך 0
שאלה 2 :
כתוב תוכנית שקוראת נתון בגודל מילה הנמצא בכתובת 0x10010020
על התוכנית לסכום את סכום ספרותיו של הנתון ולשמור סכום זה בכתובת 0x10010010

.data
block1: .word 1,2,3,4,7,6,0
block2: .word
.text
li $t3,0        # initialize the counter whith '0'.
la,$a0,block1    # $a0-> block1 (containe words)
la,$a1,block2   # $a1-> block2 (empty now)
loop:
lw $t1,0($a0)  #load data stored in addres which is in $a0 to $t1
sw $t1,0($a1)  # store data in addrse pointd by $a1
beq $t1,$zero,finish  # if $t1==0 (if the word is: '0') break 
addiu,$a0,$a0,4  # promote the pointer to the next word  on the word block1
addiu,$a1,$a1,4  # promote the pointer to the next place to srote the word
addi $t3,$t3,1  #counter++
bne $t3,$0, loop   #jump tp begining of loop if the wotd is not '0'.
finish:
add $v0,$0,$t3      #print the counter velue ($v0 reg).

פיתרון לשאלה 2

li $a0,0 #start counter = 0. sum=0
.text
loop:
li $v0,5 # load code 5 to reg v0 (input code)
syscall # get number
add $a0,$a0,$v0 #sum+=v0
beq $v0,$zero,finish #if the value is: '0' brake.
j loop
finish:
li $v0,1 #load code 1 to reg v0 (print code)
syscall #print the sum .

 

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *