Арифметика и синтаксис на языке ассемблера - Assembler
Формулировка задачи:
Необходимо вычислить уравнение:
Не ясны преобразования в регистрах различной разрядности...
исп. FASM
format PE Console 4.0 entry Start include 'win32a.inc' section '.data' data readable writeable y db 0 x db 1 a db 4 b db 2 z db ? p db ? Start: mov al, [x] mul [x] mov [z], al mov al, [a] mul [x] sub [z], al mov bl, [b] add bl, 2 mov ax, [z] div bl mov ah, 0 mov [z], al mov bl, [x] mul [x] mul [x] mov ax, bl mov cl, 3 div cl mov ah, 0 sub [z], ax mov bl, [a] mul [a] mul [x] sub [z], bl Exit: invoke ExitProcess, 0
Решение задачи: «Арифметика и синтаксис на языке ассемблера»
textual
Листинг программы
mov AL,[a] cbw idiv [b]; AL=a/b sub AL,[x]; AL=a/b - x neg AL; AL=x-a/b imul [x]; AX=x*x - a*x/b add AX,2; AX=x*x - a*x/b + 2 mov BX,AX; BX=x*x - a*x/b + 2 mov AL,[x]; AL = x imul AL; AX = x*x imul [x]; AX = x*x*x mov CL,3; CL=3 idiv CL; AL = x*x*x/3 cbw sub BX,AX; BX = (x*x - a*x/b + 2) - (x*x*x/3) mov AL,[x] imul [a]; AX=x*a imul [a]; AX=x*a*a sub BX,AX; BX = (x*x - a*x/b + 2) - (x*x*x/3) - (x*a*a)
Объяснение кода листинга программы
- Переменная
a
содержит значение 2. - Переменная
b
содержит значение 3. - Переменная
x
содержит значение 4. - mov AL,[a] - AL = a
- cbw - BL = a
- idiv [b] - AL = a/b
- sub AL,[x] - AL = a/b - x
- neg AL - AL = x - a/b
- imul [x] - AX = xx - ax/b
- add AX,2 - AX = xx - ax/b + 2
- mov BX,AX - BX = xx - ax/b + 2
- mov AL,[x] - AL = x
- imul AL - AX = x*x
- imul [x] - AX = xxx
- mov CL,3 - CL = 3
- idiv CL - AL = xxx/3
- cbw
- sub BX,AX - BX = (xx - ax/b + 2) - (xxx/3)
- mov AL,[x] - AL = x
- imul [a] - AX = x*a
- imul [a] - AX = xaa
- sub BX,AX - BX = (xx - ax/b + 2) - (xxx/3) - (xaa)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д