Программа для вычисления формулы - 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

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

  1. Переменные: — eax (EAX) — ebx (EBX) — ecx (ECX)
  2. Операции: — mov (передача значения) — mul (умножение) — add (сложение) — sub (вычитание) — div (деление)
  3. Пояснения к коду: — Первый блок кода: значения из регистра 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).

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

5   голосов , оценка 3.8 из 5