Подскажите пожалуйста, правильно ли написан код на данное задание? Язык программирования assembler.
Задание: "Написать подпрограмму для подсчёта суммы массива вещественных чисел двойной точности, начало задано в SI, количество в регистре CX, использовать команды сопроцессора. Результат поместить на верхушке системного стека."
код:
mov cx, 10
mov si, massiv
xor ax, ax
add si, 100H
A: add ax, [si]
inc si
inc si
loop A
B:jmp B
massiv DW 1, 17,4, 3, 2, 1, 5, 8, 12, 10
Другие языки программирования и технологии
Подскажите, правильно ли? assembler
Принципиально неправильно. В вашем задании написано использовать команды сопроцессора, а в вашей "программе" даже намёка на него нет.
B:jmp B - такое впечатление, что вы пытались написать программу для какого-то экзотического контроллера на базе Intel 80x86 без операционной системы. В PC завершение работы этой программы возможно только с помощью трёх волшебных клавиш.
16-ти разрядная программа для реального режима работы процессора i8086, операционная система MS DOS, компилятор MASM/TASM.
Надеюсь, что в действительности в вышей вычислительной системе установлен процессор не старее i80486, поэтому команды fwait не включены.
.model small
.data
massiv dq 1.0, 17.0, 4.0, 3.0, 2.0, 1.625, 5.0, -8e-2, 1.2, 10.0
Len equ ($ - massiv) shr 3
Result dq ?
.stack 100h
.code
;Подпрограмма вычисления суммы элементов массива
Sum proc
fld qword ptr [si]
dec cx
DoLoop:
add si,8
fadd qword ptr [si]
loop DoLoop
pop cx
sub sp,8
mov bp,sp
fstp qword ptr [bp]
push cx
ret
Sum endp
;Пример использования подпрограммы
N69601597:
mov bx,@data
mov ds,bx
finit
lea si,massiv
mov cx,Len
call Sum
mov bp,sp
fld qword ptr [bp]
add sp,8
fstp Result
mov ah,4Ch
int 21h
end N69601597
P.S. Довольно необычное требование возвращать действительное число на вершине системного стека.
P.P.S. Результат вычисления записывается в переменную Result.
B:jmp B - такое впечатление, что вы пытались написать программу для какого-то экзотического контроллера на базе Intel 80x86 без операционной системы. В PC завершение работы этой программы возможно только с помощью трёх волшебных клавиш.
16-ти разрядная программа для реального режима работы процессора i8086, операционная система MS DOS, компилятор MASM/TASM.
Надеюсь, что в действительности в вышей вычислительной системе установлен процессор не старее i80486, поэтому команды fwait не включены.
.model small
.data
massiv dq 1.0, 17.0, 4.0, 3.0, 2.0, 1.625, 5.0, -8e-2, 1.2, 10.0
Len equ ($ - massiv) shr 3
Result dq ?
.stack 100h
.code
;Подпрограмма вычисления суммы элементов массива
Sum proc
fld qword ptr [si]
dec cx
DoLoop:
add si,8
fadd qword ptr [si]
loop DoLoop
pop cx
sub sp,8
mov bp,sp
fstp qword ptr [bp]
push cx
ret
Sum endp
;Пример использования подпрограммы
N69601597:
mov bx,@data
mov ds,bx
finit
lea si,massiv
mov cx,Len
call Sum
mov bp,sp
fld qword ptr [bp]
add sp,8
fstp Result
mov ah,4Ch
int 21h
end N69601597
P.S. Довольно необычное требование возвращать действительное число на вершине системного стека.
P.P.S. Результат вычисления записывается в переменную Result.
абсолютно неправильно.
дак выполни код и посмотри то ли он делает что нужно или нет
У тебя сразу принципиальная ошибка. У тебя в задании вещественные числа. сопроцессор использовать нужно.
Похожие вопросы
- Assembler или C для микроконтроллеров?
- Assembler помогите создать файлы *.obj *.exe
- какой язык легче выучить.C++ или Assembler? какой язык легче выучить.C++ или Assembler?
- Assembler. HEEEEEEEEEEEEELP! дан одномерный массив найти количество и сумму нечетных элементов assembler
- Скажите мне истинные программисты, стоит ли изучать Assembler, если ты знаешь другие ЯП?
- Как написать программу для assembler (ассемблер)?
- Нужно ли учить assembler или лучше потратить время на изучение высокоуровневых языков?
- Подскажите пожалуйста, как правильно оформить рекламную листовку?
- Насколько актуальное сейчас знание Assembler ?
- Assembler (не знающим просьба не писать!!!)