Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2016, 23:38   #1
fluttyoyo
Новичок
Джуниор
 
Регистрация: 11.05.2016
Сообщений: 2
По умолчанию FASM Ошибка при запуске программы

Прога компилится, но не запускается. Не могу понять почему. Пишу на 10 windows.
Помогите, пожалуйста, разобраться.

Смысл проги в том, что она загадывает число из диапазона, а человек угадывает.

Код:
format PE console
include 'win32a.inc'

entry start

section '.code' code executable
start:

proc    strToInt lpStr:word
        push    bx dx si
 
        xor     ax,ax
        mov     si,[lpStr]
.strToInt_loop:
        movsx   bx,byte [si]
        sub     bl,'0'
        cmp     bl,10
        jnb     .strToInt_ret
        imul    ax,10
        add     ax,bx
        inc     si
        jmp     .strToInt_loop
 
.strToInt_ret:
        pop     si dx bx
        ret
endp

board1 dw ?
board2 dw ?
number dw ?
myNumber dw ?
interval dw ?
counter db 0
lenght db 0


;begin game
begin:
       cinvoke printf,enterInviting

       cinvoke gets, buff2
       stdcall strToInt, buff2
       mov [board1], ax

       cinvoke gets, buff3
       stdcall strToInt, buff3
       mov [board2], ax
;---------------

;random number
        mov ax, [board2]
        sub ax, [board1]
        mov [interval], ax

        cmp [counter], 0
        je D
        jne E
E:
        mov bx, [board2]

        mov ax, [board1]
        mov cx, [myNumber]
        mul cx
        add ax, bx
        mov cx, [interval]
        div cx
        add dx, [board1]
        mov [myNumber], dx;
        jmp metka2

D:
        mov ax, [board2]
        mov [myNumber], ax
        mov al, [counter]
        inc al
        mov [counter], al
        jmp metka2
;----------------
;makes step
metka2:
        cinvoke printf, enterNumber

        cinvoke gets, buff1
        stdcall strToInt, buff1
        mov [number], ax
;-------------

;compare
metka1:
        mov ax, [myNumber]
        cmp   ax, [number]
        jl L
        jg K
        je M
M:
        cinvoke printf, guess
        mov al, [lenght]
        mov [buff1], al
        cinvoke printf, buff1
        cinvoke printf, newTry
        cinvoke gets, buff
        mov al, [buff]
        cmp   al, 0
        je exit
        jne begin
L:
        mov al, [lenght]
        inc al
        mov [lenght], al
        cinvoke printf, more
        jmp metka2
K:
        mov al, [lenght]
        inc al
        mov [lenght], al
        cinvoke printf, less
        jmp metka2
;-----------------
exit:
        invoke ExitProcess,0
        int 21h
;------------------
section '.data' data readable writeable
enterInviting:
        db  'Enter a range of numbers: ', 0
enterNumber:
        db  'Enter a number: ', 0
buff:
        dw ?
buff1:
        dw ?
buff2:
        dw ?
buff3:
        dw ?
guess:
        db 'You are right, steps: ', 0
newTry:
        db ', do you want to try again(0/1): ', 0
more:
        db 'My number is bigger, try again. ', 0
less:
        db 'My number is smaller, try again', 0
section '.idata' import data readable writeable
  library kernel32,'kernel32.dll',\
          crtdll,'crtdll.dll'
  import kernel32,\
         ExitProcess,'ExitProcess'
  import crtdll,\
         printf,'printf',\
         gets,'gets'
fluttyoyo вне форума Ответить с цитированием
Старый 12.05.2016, 00:21   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

fluttyoyo, винда не 64-бит случаем? у тебя 16-битное приложение..
Попробуй заменить все AX-сы на EAX
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 12.05.2016, 00:46   #3
fluttyoyo
Новичок
Джуниор
 
Регистрация: 11.05.2016
Сообщений: 2
По умолчанию

R71MT, Огромное спасибо, очень помогло.
fluttyoyo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при запуске программы lisica198808 Помощь студентам 5 08.12.2013 23:45
ошибка при запуске программы с++ IVT27 Помощь студентам 4 11.11.2012 18:09
Ошибка при запуске программы mimit Общие вопросы Delphi 5 01.11.2012 23:25
Ошибка при запуске программы stakam Visual C++ 1 18.12.2010 18:19
Ошибка при запуске программы MAcK Общие вопросы .NET 5 14.08.2008 15:12