Программа для вычисления формулы - Assembler
Формулировка задачи:
Разработать программу для вычисления заданной формулы ( [] – частное от деления)
N-любое число
N2+N-[4/3]
Взял программа друга для примера только с другой формулой (3N - [N/10] - (100/N)) но не понимаю что где изменять
TITLE arifm INCLUDE Irvine32.inc .data p1 BYTE " 3N - [N/10] - (100/N) ",0 p3 BYTE "vvod chisla: ",0 p2 BYTE "otvet: ",0 .code main PROC call ClrScr call Vvod call Arif call Show call Edn exit main ENDP ;--------------------------- Vvod PROC mov edx,OFFSET p1 call WriteString call Crlf mov edx,OFFSET p3 call WriteString call ReadInt Vvod ENDP ;---------------------------- Arif PROC mov ecx,0 mov ecx,eax ;------------- ; 3N ;------------- mov ebx,3 mul ebx ;EAX = 60 mov esi,0 mov esi,eax ;ESI = 60 mov eax,0 ;EAX = 0 ;------------- ;N/10 частное ;------------- mov edx,0 mov eax,ecx mov ebp,10 div ebp ;------------- ;3N - [N/10] ;------------- sub esi,eax mov eax,0 ;-------------- ;100/N остаток ;-------------- mov edx,0 mov eax,100 mov ebp,ecx div ebp mov ebp,0 mov ebp,edx ;--------------------- ;3N - [N/10] - (100/N) ;--------------------- sub esi,ebp ;esi = 58 mov eax,0 mov eax,esi ;-------------------------- Arif ENDP ;---------------------------- Show PROC mov edx,OFFSET p2 call WriteString call WriteInt Show ENDP ;---------------------------- Edn PROC call Crlf call WaitMsg call Clrscr exit Edn ENDP END main
Решение задачи: «Программа для вычисления формулы»
textual
Листинг программы
mov ebx, eax mul ebx add ebx, eax mov eax, 4 mov ecx, 3 cdq div ecx sub ebx, eax mov eax, ebx
Объяснение кода листинга программы
- Переменные: — eax (EAX) — ebx (EBX) — ecx (ECX)
- Операции: — mov (передача значения) — mul (умножение) — add (сложение) — sub (вычитание) — div (деление)
- Пояснения к коду: — Первый блок кода: значения из регистра eax (EAX) копируются в регистр ebx (EBX), затем значения в ebx (EBX) умножаются на значение в eax (EAX). Результат сложения копируется обратно в eax (EAX). — Второй блок кода: в eax (EAX) записывается значение 4, в ecx (ECX) — 3. Затем выполняется деление значения в eax (EAX) на значение в ecx (ECX). — Третий блок кода: результат вычитания значения в ebx (EBX) из значения в eax (EAX) сохраняется в eax (EAX). — Четвёртый блок кода: значение в eax (EAX) копируется в ebx (EBX).