HLA суммируя все числа между одним и n - PullRequest
0 голосов
/ 01 марта 2019

Язык ассемблера

Напишите программу, которая вычисляет (n) (n + 1) / 2.Он должен прочитать значение «n» от пользователя.Подсказка: вы можете вычислить эту формулу, сложив все числа от одного до n.

У меня есть проблема в написании вышеуказанного кода в HLA.Мне удалось получить следующее

program printing_n_Numbers;
    #include("stdlib.hhf");
    static
        n:int32;
        i:int32;
begin printing_n_Numbers;
    stdout.put("Enter n: ");
    stdin.get(n);
    mov(0,ecx)
    stdout.put("printing ",n," Numbers ",nl);
    for(mov(0,eax);eax<=n;add(1,eax)) do
        for(mov(0,ebx);ebx<eax;add(1,ebx)) do
            ecx = add(eax,ebx);
            stdout.put("N was = ");
            stdout.puti32(exc);
            stdout.newln();
        endfor;
    endfor;
end printing_n_Numbers;  

, когда я ввожу число, подобное 6, вывод будет

Enter n: 6
printing 6 Numbers
N was = 1
N was = 2
N was = 3
N was = 4
N was = 5
N was = 2
N was = 4
N was = 6
N was = 3
N was = 6
N was = 4
N was = 8
N was = 5
N was = 6

Как бы я закодировал его, чтобы вывести сумму введенных чисел?

1 Ответ

0 голосов
/ 02 марта 2019

Решено

После нескольких изменений программа работала.вот как я его изменил

mov(0,ecx);
    stdout.put("You Have Entered: ",n,nl);
    for(mov(0,eax);eax<=n;add(1,eax)) do
        add(eax,ecx);
    endfor;

Чтобы напечатать сумму, это код

stdout.puti32(ecx); 

Я использовал stdout.puti32 для преобразования шестнадцатеричной системы в исходную десятичную систему счисления

...