Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- format PE console
- entry start
- include 'win32ax.inc'
- include 'api\kernel32.inc'
- ;----------------------------------------------------------------------
- section '.idata' import data readable
- library kernel32, 'kernel32.dll',\
- msvcrt, 'msvcrt.dll'
- import msvcrt,\
- printf, 'printf',\
- scanf , 'scanf'
- ; a * 5 – (b + c + d) / 2
- ;----------------------------------------------------------------------
- section '.data' data readable writeable
- a dd 1
- b dd 2
- c dd 3
- d dd 4
- r_1 dd ? ; = a * 5
- r_2 dd ? ; = b + c + d
- r_3 dd ? ; = r_2 / 2
- r_4 dd ? ; = r_1 - r_3 = a * 5 – (b + c + d) / 2
- ;----------------------------------------------------------------------
- section '.code' code readable executable
- start: call Get_var
- call test_var
- mov eax, [a] ; r_1 = a * 5
- shl eax, 2
- inc eax
- mov [r_1], eax
- mov eax , [b] ; r_2 * a + b + c
- add eax , [c]
- add eax , [d]
- mov [r_2], eax
- shr eax, 1 ; r_3 = r_2 / 2
- mov [r_3], eax
- mov eax, [r_1] ; r-1 - r_3
- sub eax, [r_3]
- mov [r_4], eax
- call test_r_x
- cinvoke printf, <" ", 10, 0>
- cinvoke printf, <"Answer: ", 10, 0>
- cinvoke printf, <"- - - - - - - - - - - - - - - - -", 10, 0>
- cinvoke printf, <"a * 5 - (b + c + d) / 2 = %d", 10, 0>, [r_4]
- ;------------------------
- cinvoke scanf, <"%d", 10, 0>, 76313
- invoke ExitProcess, 0
- ; Функция ожидает от пользователя ввод: a, b, c, d
- ; Например, так: 1 22 3 7
- ;/////////////////////////////////////////////////////////////
- proc Get_var ;//
- cinvoke printf, <"Enter: a, b, c and d: ", 0>
- cinvoke scanf, <"%d%d%d%d">, a, b, c, d
- ret
- endp
- ;Процедура, которая показывает содержимое: a, b, c, d
- ;----------------------------------------------------------------------
- test_var: cinvoke printf, <10, 0>
- cinvoke printf, <"a = %d", 10, 0>, [a]
- cinvoke printf, <"b = %d", 10, 0>, [b]
- cinvoke printf, <"c = %d", 10, 0>, [c]
- cinvoke printf, <"d = %d", 10, 0>, [d]
- ret ;Возврат из процедуры
- ;Процедура, которая показывает содержимое: r_1, r_2, r_3, r_4
- ;----------------------------------------------------------------------
- test_r_x: cinvoke printf, <10, 0>
- cinvoke printf, <" a * 5 = r_1 = %d", 10, 0>, [r_1]
- cinvoke printf, <"b + c + d = r_2 = %d", 10, 0>, [r_2]
- cinvoke printf, <" r_2 / 2 = r_3 = %d", 10, 0>, [r_3]
- cinvoke printf, <"r_1 - r_3 = r_4 = %d", 10, 0>, [r_4]
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement