Ошибка компиляции в 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