Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ 2 переменные

Автор: Client 21.02.2009 15:23

Привет!
У нас начался ассемблер, но чет пока в теории ничего не понятно(
Может кто написать код для сложения 2-х вводимых чисел?
И где этот код можно написать? Какой асм нужен?

Автор: volvo 22.02.2009 0:12

Цитата
И где этот код можно написать? Какой асм нужен?
Ну, вот с этого и надо начинать... Скажи, какой тебе asm нужен, а потом посмотрим, как сделать то, что ты хочешь smile.gif

На MASM-е, например, задача решается так:
.486
.model flat, stdcall
option casemap:none


include D:\masm32\include\windows.inc
include D:\masm32\macros\macros.asm

include D:\masm32\include\masm32.inc
include D:\masm32\include\kernel32.inc

includelib D:\masm32\lib\masm32.lib
includelib D:\masm32\lib\kernel32.lib

.data
first dd ?
second dd ?
.code
start:
mov first, sval(input("Первое число: "))
mov second, sval(input("Второе число: "))
print chr$("Результат = ")

mov eax, first
add eax, second
print str$ (eax)
exit
end start

Набираешь в любом текстовом редакторе, потом компилируешь:
ml.exe /c /coff sum.asm

потом линкуешь:
link.exe /SUBSYSTEM:CONSOLE /LIBPATH:D:\masm32\lib sum.obj

и запускаешь файл sum.exe на выполнение... Естественно, masm32 должен быть установлен.

Автор: Client 22.02.2009 13:19

Я скачал какой-то эмулятор, скрин в файле.
А где написать ml.exe /c /coff sum.asm ?
Щас качаю масм32 7.0 версию

Код
include D:\masm32\include\windows.inc
Это загрузка файлов и модулей, необходимых для работы?

Добавлено через 12 мин.
Скачал масм, вот что получилось. Сохранил в ехе виде, запустил, но ничего не видно( Что не так?


Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение

Автор: volvo 22.02.2009 16:02

Цитата
Скачал масм, вот что получилось.
Это не MASM, это у тебя какая-то IDE... masm - это только компилятор. Вот так вот это выглядит у меня:



Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Client 22.02.2009 20:47

А где скачать нужный масм? В гугле "скачать masm32" вроде одни эмуляторы wacko.gif

Автор: volvo 22.02.2009 21:41

Вот тут я про это написал: http://forum.pascal.net.ru/index.php?s=&showtopic=23702&view=findpost&p=130811 (включая и то, что надо сделать перед установкой)

Автор: Client 22.02.2009 22:20

Скачал, установил в С: (C:masm32\). Создал папку mydocs, в которую сохранил файл my1.asm с кодом
Написал по примеру в cmd, но чет не так(


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: volvo 22.02.2009 22:25

Цитата
но чет не так(
Ну вот то и не так, что ты установил в C:\MASM, а у меня установлено в D:\MASM

Поменяй везде название диска, в исходнике. И не надо набирать masam при линковке, точнее будь...

Автор: Client 22.02.2009 23:10

УРА!!! ПОЛУЧИЛОСЬ)
И теперь ряд нубских вопросов:
1) Запускать можно только таким способом программы?
2) Что такое /c, /coff, /SUBSYSTEM:CONSOLE, /LIBPATH?
3) У меня почему-то каракульки((


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: volvo 23.02.2009 0:40

Значит убедись, что ASM-файл в кодировке 1251 (Cyrillic Windows), и измени программу вот так:

.data
first dd ?
second dd ?
codePage DWORD 1251 ; добавь это в раздел data
.code
start:
invoke SetConsoleOutputCP, codePage ; и вот это - в самое начало code

mov first, sval (input("Первое число: "))
mov second, sval (input("Второе число: "))
print chr$("Результат:")
; ...

и перекомпилируй программу. Да, и еще... перед тем, как ее запускать, смени шрифт в консоли на Lucida Console (через Alt+Пробел -> Properties -> Font), иначе так и будут кракозябры...

Цитата
Запускать можно только таким способом программы?
Нет, можно скачать IDE типа RadASM, или чего-нибудь другого, и работать оттуда. Я предпочитаю делать это из ком. строки.
Цитата
Что такое /c, /coff, /SUBSYSTEM:CONSOLE, /LIBPATH?
Ключи компиляции. Назначение см. в хелпе...

Автор: Client 23.02.2009 1:03

Все исправил, он у меня открывался через Visual ASM и там уже он сам менял текст
СПАСИБО VOLVO!