Вычислить сумму квадратов чисел от 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
Объяснение кода листинга программы
mov cx, n
— в переменнуюcx
записывается значение переменнойn
, которая содержит число от 1 до 100xor si, si
— обнуление переменнойsi
, которая будет использоваться как счётчик суммы цикломloop
xor di, di
— обнуление переменнойdi
, которая будет использоваться как счётчик суммы цикломloop
ololo:
— начало цикла, который будет выполняться до тех пор, пока значение переменнойcx
больше или равно 1mov ax, cx
— в переменнуюax
записывается значение переменнойcx
, которое представляет из себя число от 1 до 100imul cx
— произведение числа в переменнойcx
на число в переменнойcx
записывается в регистрax
add si, ax
— к значению переменнойsi
прибавляется значение из регистраax
, полученное в предыдущем шаге, и записывается в переменнуюsi
adc di, 0
— к значению переменнойdi
прибавляется 0 и записывается в переменнуюdi
loop ololo
— если значение переменнойcx
меньше или равно 1, то цикл прекращается, в противном случае выполняется следующая итерация цикла- Код в цикле выполняется до тех пор, пока значение переменной
cx
больше или равно 1 - Результат суммы циклом сохраняется в переменной
si
- Результат выполнения программы будет содержаться в переменной
si
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д