Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Составить программу на Ассемблере для вычисления выражения

sandora Ученик (124), на голосовании 2 месяца назад
1. Составить на языке ассемблера программу, выполняющую заданные вычисления. При этом: - массив элементов данных – размерность DW; - в программе выполнять проверку деления на ноль или другие особые ситуации. 2. Составить программу просчета задания на языке высокого уровня (любом) и убедиться, что результат совпадает с результатом, полученным на ассемблерной программе (в прогрмме проверки учесть, что все вычисления на ассемблере – целочисленные!). Z[k] = (k+1)**2*X[k+1]**2+(N+1-k)**2*X[N+1-k]**2 N=6 k=1,2,...6
Дополнен 3 месяца назад
и скриншоты работы программы
Голосование за лучший ответ
Ингерманландец Гуру (3054) 3 месяца назад
 .model small 
.stack 100h

.data
N DW 6
X DW 1, 2, 3, 4, 5, 6
Z DW 6 dup(?) ; Зарезервировано пространство для массива Z

.code
main proc
mov ax, @data
mov ds, ax

mov cx, 6 ; Инициализация счетчика цикла

; Цикл по k
loop_k:
push cx ; Сохранение значения счетчика
mov bx, cx ; bx = k
inc bx ; bx = k+1

; Вычисление (k+1)**2
mov ax, bx
mul ax ; ax = (k+1)**2

; Проверка деления на ноль для X[k+1]
mov bx, [X + bx*2] ; bx = X[k+1]
cmp bx, 0
je divide_by_zero

; Вычисление X[k+1]**2
mov dx, bx
mul dx ; dx:ax = X[k+1]**2

; Умножение на (k+1)**2
mul ax ; dx:ax = (k+1)**2 * X[k+1]**2

; Сохранение результата в Z[k]
mov [Z + bx*2 - 2], ax

; Вычисление (N+1-k)**2
mov bx, N
inc bx ; bx = N+1
sub bx, cx ; bx = N+1 - k
mov ax, bx
mul ax ; ax = (N+1-k)**2

; Проверка деления на ноль для X[N+1-k]
mov bx, [X + bx*2] ; bx = X[N+1-k]
cmp bx, 0
je divide_by_zero

; Вычисление X[N+1-k]**2
mov dx, bx
mul dx ; dx:ax = X[N+1-k]**2

; Умножение на (N+1-k)**2
mul ax ; dx:ax = (N+1-k)**2 * X[N+1-k]**2

; Сложение с Z[k]
add [Z + bx*2 - 2], ax

pop cx ; Восстановление значения счетчика
loop loop_k

; Вывод результатов
; ... (реализовать вывод массива Z)

exit:
mov ah, 4ch
int 21h

divide_by_zero:
; Обработка деления на ноль (например, вывод сообщения)
; ...
jmp exit
main endp
end main
Похожие вопросы