Написать программу на Ассемблере вычисления выражений: b/c + ас. Результат вычисления выражения сохранить в памяти. Навести значение и порядок размещения данные в памяти.

.386 ; директива определения команд микропроцессора

.model flat,stdcall ; задание линейной модели памяти
; но соглашения ОС Windows
option casemap:none ; отличие строчных и прописных букв
includelib\masm32\lib\kernel32.lib
ExitProcess proto :DWORD
ADDDD proto :WORD, :WORD, :WORD ; прототип процедуры
.data ; директива определения данные
res dw 2 dup(0) ; резервирование амбарчиков для результата
.code ; директива начала кода программы
start: ; метка начала программы с именем start
invoke AddDD,5,86,1986 ; вызов директивы AddDD с параметрами
invoke ExitProcess,0
ADDDD proc arg1:WORD,arg2:WORD,arg3:WORD
mov eax,0 ; очистка регистров
mov ebx,0
mov ecx,0
mov edx,0

mov ах,arg3 ; arg3 = 1986
div arg2 ; операция деления
mov bx,ax
mov cx,dx

mov ах,arg1 ; ах := arg1
mul arg2 ; ax* arg2 = 86
SHL edx,16 ; операция здвигу
mov dx,ax

add ebx,edx
mov res,cx ; запоминание в памяти
mov res+2,dx ; запоминание в памяти
ret ; возвращение из процедуры
AddDD endp ; окончание процедуры с именем AddDD
end start ; окончание программы с именем start

Вывод данных в файл: для функции Y = 40Х + 10 получить первое значение, превышающей 512, начиная с Х = 1. Значение аргумента и функции записать в ячейки памяти.

.386 ;директива определения типа микропроцессора

. Model flat, stdcall ; задачи линейной модели памяти
; И соглашения ОС Windows
option casemap: none; отличие малых и больших букв

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

BSIZE equ 40; количество байтов, которые записываются в файл
. Data; директива определения данных
fName BYTE «info_file.txt», 0; ячейки для файла
fHandle DWORD? ; Резервирования в памяти 32-разрядной
;ячейки с именем fHandle для дескриптора сохранения файлов
cWritten DWORD? ; Резервирования 32-разрядной ячейки памяти
; С именем cWritten для адреса символов вывода
st1 db ‘Аргумент =’, 0
st1_kol = $ — st1
st2 db ‘Значение функции =’, 0
st2_kol = $ — st2
st3 db 100 dup (0)
stemp db 3 dup (0)
stemp2 db 3 dup (0)
ifmt db «% d», 0
_x dw 1
_y dw 0
const40 dw 40
const10 dw 10
temp db 15
prom db 0

. Code; директива начала сегмента-данных
start:; метка начала программы с именем start

mov eax, 0
mov ebx, 0
mov ecx, 0
mov edx, 0

lea edi, st3
lea esi, st1
mov ecx, st1_kol
m1:
mov al, [esi]
mov [edi], al
inc esi
inc edi
loop m1

m2:
mov ax, _x
mul const40
add ax, const10
mov _y, ax
. IF (_y> 512)
jmp _end
. ELSE
inc _x
jmp m2
. ENDIF
_end:
mov eax, 0
mov ax, _x

invoke wsprintf, \; API-функция преобразования числа
ADDR stemp, \; адрес буфф, куда будет записана помет. символов
ADDR ifmt, \; адрес строки преобразования формата
eax; регистр, содержимое которого превращается

lea esi, stemp
mov ecx, 3
dec edi
z1:
mov al, [esi]
mov [edi], al
inc edi
inc esi
loop z1
mov al, 10
mov [edi], al
inc edi
mov al, 13
mov [edi], al
inc edi

lea esi, st2
mov ecx, st2_kol
m3:
mov al, [esi]
mov [edi], al
inc esi
inc edi
loop m3
dec edi

mov eax, 0
mov ax, _y
invoke wsprintf, \; API-функция преобразования числа
ADDR stemp2, \; адрес буфф, куда будет записана помет.символов
ADDR ifmt, \; адрес строки преобразования формата
eax; регистр, содержимое которого превращается
lea esi, stemp2
mov ecx, 6
dec esi
z2:
mov al, [esi]
mov [edi], al
inc edi
inc esi
loop z2

invoke CreateFile, ADDR fName,; адрес имени файла с символами
GENERIC_WRITE, \; запись в файл
0, NULL,; параметры многозадачности
CREATE_ALWAYS,; уничтожить и создать новый файл
FILE_ATTRIBUTE_ARCHIVE, 0

mov fHandle, eax; программирование дескриптора устройства
invoke WriteFile, fHandle,; дескриптор устройства
ADDR st3,;адрес области памяти,сохраняющий символы
BSIZE,, Количество символов
ADDR cWritten,; адрес памяти,где хранится число
NULL; записанных в файл символ_в
invoke CloseHandle,fHandle; дескриптор файла
invoke ExitProcess,0 ; возврат управления Windows
; И освобождения ресурсов
end start; директива окончания программы с именем start