Advertisement
Guest User

thing

a guest
Oct 28th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MPASM 1.45 KB | None | 0 0
  1. .data
  2.     v:.space 400
  3.     w:.space 400
  4.     z:.space 400
  5.     n:.space 4
  6.     sp:.asciiz " "
  7. .text
  8. main:
  9.  
  10.     li $v0, 5
  11.     syscall
  12.     move $t0, $v0
  13.     sw $t0, n
  14.  
  15.     li $t1, 0
  16.     li $t2, 0
  17.  
  18. # read v
  19. readv:
  20.    
  21.     beq $t1, $t0, readvexit
  22.     li $v0, 5
  23.     syscall
  24.  
  25.     sw $v0, v($t2)
  26.  
  27.     addi $t1, 1
  28.     addi $t2, 4
  29.  
  30.     j readv
  31.  
  32.  
  33. readvexit:
  34.  
  35.     li $t1, 0
  36.     li $t2, 0
  37.  
  38. #read w
  39. readw:
  40.    
  41.     beq $t1, $t0, readwexit
  42.     li $v0, 5
  43.     syscall
  44.  
  45.     sw $v0, w($t2)
  46.  
  47.     addi $t1, 1
  48.     addi $t2, 4
  49.  
  50.     j readw
  51.  
  52. readwexit:
  53.  
  54.     li $t1, 0 #index for array 1
  55.     li $t2, 0 #index for array 2
  56.     li $t3, 0 #index for final array
  57.  
  58.     lw $t4, n
  59.     add $t4, $t4, $t4 #the length of the new array
  60.    
  61.     #multiply t4 by 4
  62.     add $t4, $t4, $t4
  63.     add $t4, $t4, $t4
  64.  
  65.     lw $t9, n
  66.     add $t9, $t9, $t9
  67.     add $t9, $t9, $t9
  68.  
  69. merge:
  70.  
  71.     beq $t3, $t4, exit
  72.    
  73.     bge $t1, $t9, pushsecond
  74.     bge $t2, $t9, pushfirst
  75.  
  76.     lw $t5, v($t1) #value in v
  77.     lw $t6, w($t2) #value in w
  78.  
  79.     ble $t5, $t6, pushfirst
  80.  
  81. pushsecond:
  82.    
  83.     lw $t6, w($t2) #value in w
  84.  
  85.     # else, push the second number
  86.     sw $t6, z($t3)
  87.  
  88.     addi $t3, 4
  89.     addi $t2, 4
  90.  
  91.     j merge
  92.  
  93. pushfirst:
  94.  
  95.     lw $t5, v($t1) #value in v
  96.  
  97.     sw $t5, z($t3)
  98.     addi $t3, 4
  99.     addi $t1, 4
  100.     j merge
  101.  
  102. exit:
  103.  
  104.     lw $t0, n
  105.     add $t0, $t0, $t0
  106.     li $t1, 0
  107.     li $t2, 0
  108.  
  109. printarray:
  110.  
  111.     beq $t1, $t0, exitprint
  112.  
  113.     lw $t3, z($t2)
  114.  
  115.     li $v0, 1
  116.     move $a0, $t3
  117.     syscall
  118.  
  119.     la $a0, sp
  120.     li $v0, 4
  121.     syscall
  122.  
  123.     addi $t1, 1
  124.     addi $t2, 4
  125.  
  126.     j printarray
  127.  
  128. exitprint:
  129.  
  130. li $v0, 10
  131. syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement