Загрузка данных


.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