Как сделать арифметические операции с использованием сборки? - PullRequest
0 голосов
/ 14 апреля 2019

Я сейчас изучаю ассемблер и застрял с использованием функций.По сути, я пытаюсь получить два числа путем ввода и выполнить некоторые операции, например, добавить или или и xor.Моя проблема в том, что я получил это без вызова функций.Но когда я собрал весь код (Add или or и xor), программа просто выполнила первую операцию.

Я не знаю, как объявлять переменные и использовать их.Вот код, над которым я работал.

main:
    # Get 1 number from user, put into $t0
    li $v0, 5 #load syscall read_int into $v0
    syscall   #make the syscall
    move $t0, $v0 #move the number read into $t0 

    # Get 2 number from user, put into $t1
    li $v0, 5 #load syscall read_int into $v0
    syscall #make the syscall
    move $t1, $v0 #move the number read into $t1

    add $t2, $t0, $t1 #make the sum

    #Print $t2
    move $a0, $t2 #move the number to print into $a0
    li $v0, 1 #load syscall print_int into $v0
    syscall #make the syscall

    li $v0, 10 #syscall code 10 to exit
    syscall #make the syscall 

С другой стороны, пытаясь объявить переменные num1 и num2, я застрял:

.data
    num1: .byte 8
    num2: .byte 8

.text
    main:

    add $v0, num1, num2

    move $a0, $t2 #move the number to print into $a0
    li $v0, 1 #load syscall print_int into $v0
    syscall #make the syscall

Я имел отношение к языку C, чтобы попытаться понять, например:

int main (...)
sum(num1, numm2);


sum (num1, num2){
    result = num1 + num2;
    return result;
}

и так далее ...

...