Ошибка компиляции в VS 2010 - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Только начал учиться ассемблеру, до этого программировали на первом курсе на С, так вот на втором курсе нам дали ассмблер еще в довесок. Программируем на массом32, сел я значит разбираться с лабораторной,есть пример программы, я настроил проект(по инструкции,вроде все правильно). Сел я писать свою программу,хотя и не очень получается, а потом решил скомпилировать уже готовый пример и посмотреть на это чудо. Начал компиляцию,а он мне выдал ошибку и что с ней делать не понятно. Текст ошибки: 1
>------ Построение начато: проект: Лаба, Конфигурация: Debug Win32 ------
1>Построение начато 11.10.2016 14:46:15.
1>InitializeBuildStatus:
1>  Создание "Debug\Лаба.unsuccessfulbuild", так как было задано "AlwaysCreate".
1>_MASM:
1>  Assembling [Inputs]...
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\masm.targets(49,5): error MSB3721: выход из команды "ml.exe /c /nologo /Sg /Zi /Fo"Debug\Лаба.obj" /Fl"«Лаба.lst" /W3 /errorReport:prompt  /Ta"Лаба.asm"" с кодом "1".
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.25
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Гугл по этому поводу молчит, либо я плохо гуглил,так вот,что это за ошибка и как избавиться от нее? На отрез не хочет компилировать программу. Текст самой программы:
;.686
;Система команд процессора 686       
;.MODEL FLAT,stdcall;Модель памяти плоская, стандартный вызов процедуры
;option casemap:none;Режим при котором заглавные и строчные буквы не различаются
;comment * -----------------------------------------------------
;Условие задачи:Вычислить арифметические выражения для x и y. Вычисления в словах.
.XLIST
      include \masm32\include\masm32rt.inc;Обеспечивает подключение всех необходимых функций и 
                                          ;макросов.    
.LIST ;Директивы .XLIST и .LIST обеспечивают правильное формирование листинга программы
.DATA
a        dw      -3
b        dw      5
c1        dw      2
.DATA?
x        dw      ?
y        dw      ?
; Выражения для Х и У
;          a^2-b^3+3*c1       b^3-x/4
;    x:=   ------------; y:= --------;
;          2*a^2-8             a
;
.CODE
lab1:
         
         mov     ax,a;ax=-3
         imul    a ;ax=a^2=9
         mov     bx,ax ;Сохраняем a^2 в bx=a^2=9
         mov     ax,b;ax=5
         imul    b;ax=b^2=25
         imul    b;ax=b^3=125
         mov     cx,ax;Сохраняем b^3 в cx=b^3=125
         mov     ax,3;ax=3
         imul    c1;ax=c1*3=6
         add     ax,bx;ax=a^2+c*3=15
         sub     ax,cx ;ax=a^2-b^3+3*c=-110, числитель а ax.
         sal     bx,1 ;bx=2*a^2=18
         sub     bx,8 ;bh=2*a^2-8=10, Знаменатель в bx.
         cwd     ;ax->(dx:ax), расширяем ax до (dx:ax)
         idiv    bx; ax=-11
         mov     x,ax; x=-11.
;Вычисляем y
         mov     bx,4
         cwd
         idiv    bx;ax=x/4=-2
         ;mov      ax,x
         ;sar      ax,2;al=x/4=-2
     
         neg     ax;ax=-ax=2;
         add     ax,cx;ax=b^3-c/4=127, числитель у
;расширяем ax до (dx:ax)
         cwd
         idiv    a;ax=ax/a=-42
         mov     y,ax;y=-42.
         ;ret
         exit
         end     lab1
Подскажите люди добрые

Решение задачи: «Ошибка компиляции в VS 2010»

textual
Листинг программы
    .model flat
    .data
a   db 0ffh
b   db 000h
x   dw ? ; число со знаком
    .code
public main
main proc
    ; короткий путь
    mov ax, word ptr a
    xor al, ah
    mov a, al
    jmp short quit
 
    ; длинный путь
    mov ax, word ptr a
    test al, al  ; проверяем a
    jz chek_b
    not ah
chek_b:     
    test ah, ah  ; проверяем b 
    jz false
 
true:
    mov a, 0ffh
    jmp short quit
false:
    mov a, 0
 
quit:
    xor ax, ax
    ret
main endp
end

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.357 из 5