Ошибка компиляции в 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д