.686
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
.data
_a equ 10
_b equ 5
_c equ 2
_d equ 3
denom equ (_b * _c + _d - _b)
num equ (_a * _a - _b * _b)
if denom eq 0
.err <ASSEMBLY ERROR: Division by zero detected in constants!>
endif
if (num gt 32767) or (num lt -32768)
.err <ASSEMBLY ERROR: Numerator exceeds 16-bit SWORD range!>
endif
res dw 0
format db "Answer y = %d", 0
buffer db 64 DUP(0)
title_w db "Equation 8", 0
.code
start:
mov ax, num
mov cx, denom
cwd
idiv cx
mov res, ax
movsx eax, res
invoke wsprintf, addr buffer, addr format, eax
invoke MessageBox, 0, addr buffer, addr title_w, MB_OK
invoke ExitProcess, 0
end start