Вычислить сумму квадратов чисел от 1 до N. N≤100 - Assembler

Узнай цену своей работы

Формулировка задачи:

Помогите немного, вроде все правильно сделал, но чего-то не хватает...
%nolist
include mac.lib
%list
 
data   segment  para
n   dw  ?
s   dw  ?
 
mes1 db 10,13,'n=$'
mes2 db 10,13,'s=$'
mes3 db 10,13,'nedopustimoe znachenie$'
data   ends
stk  segment    para
     db      256 dup(?)
stk   ends
code    segment  para
    assume ds:data,ss:stk, cs:code
start:  mov ax,data
        mov  ds,ax
;     инициализация ds выполнена
message mes1
key_$2bin
mov n,ax
 
mov ax,n
cmp ax,0
jg m1
 
mov ax,n
cmp ax,100
jl m1

m3:mov ax,n;    n->ax
imul n; ax*ax
add cx,ax
mov cx,ax
sub n,1;    ax-1
jne m3
jmp m2
 
m1: mov ah,9
mov dx, offset mes3
int 21H
jmp exit
 
m2: mov ah,9
mov dx, offset mes2
int 21H
jmp exit
 
PRINT_NUMBER
exit: mov  ah,4Ch
      int   21h
code    ends
      end  start
end

Решение задачи: «Вычислить сумму квадратов чисел от 1 до N. N≤100»

textual
Листинг программы
mov cx, n
xor si, si
xor di, di
ololo:
   mov ax, cx
   imul cx
   add si, ax
   adc di, 0
   loop ololo

Объяснение кода листинга программы

  1. mov cx, n — в переменную cx записывается значение переменной n, которая содержит число от 1 до 100
  2. xor si, si — обнуление переменной si, которая будет использоваться как счётчик суммы циклом loop
  3. xor di, di — обнуление переменной di, которая будет использоваться как счётчик суммы циклом loop
  4. ololo: — начало цикла, который будет выполняться до тех пор, пока значение переменной cx больше или равно 1
  5. mov ax, cx — в переменную ax записывается значение переменной cx, которое представляет из себя число от 1 до 100
  6. imul cx — произведение числа в переменной cx на число в переменной cx записывается в регистр ax
  7. add si, ax — к значению переменной si прибавляется значение из регистра ax, полученное в предыдущем шаге, и записывается в переменную si
  8. adc di, 0 — к значению переменной di прибавляется 0 и записывается в переменную di
  9. loop ololo — если значение переменной cx меньше или равно 1, то цикл прекращается, в противном случае выполняется следующая итерация цикла
  10. Код в цикле выполняется до тех пор, пока значение переменной cx больше или равно 1
  11. Результат суммы циклом сохраняется в переменной si
  12. Результат выполнения программы будет содержаться в переменной si

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы