IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Общие вопросы, Вопросы по компиляции и работе с ассемблером идр.
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Программа просто выводит строку. но выводит кракозябры вместо строки. Строка на русском. (Я так понял проблема с кодировкой) Как это исправить.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Какой ассемблер, в какой кодировке исходник? Под какой ОСью запускаешь? Информации нужно больше...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Masm611,WinXp.
Но проблему решил, подправил кодировку исходника и все встало на свои пути.
Спасибо за наводку)

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Привожу код проги, где при выводе используеться задержка за счет цикла в котором применяеться расширенный регистр ECX, пример взят с книги, компилю Masm611 на что ругаеться отметил в коде

.386
text segment use16
assume cs:text
begin: mov ax,data
mov ds,ax
mov cx,10
cycle: push cx
mov ah,09h
mov dx,offset string
int 21h
mov ECX,60000
delay: db 67h ;<---Ругаеться на db
; Дословный текст из книги "Для того чтобы заставить процессор в команде перехода (каковой является команда цикла
; loop) использовать регистр ЕСХ целиком, следует перед этой командой включить так
; называемый префикс размера адреса 67h. "
loop delay
pop cx
loop cycle
mov ax,4c00h
int 21h
text ends
data segment use16
string db 'Hello$'
data ends
stk segment stack
db 256 dup (0)
stk ends
end begin


Такой пример дан в книге, поэтому не могу понять в чем дело, может подскажет кто?

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата
<---Ругаеться на db
Компилирую так:

Цитата(Console)
F:\masm32\bin>ml -c t2.asm
Microsoft ® Macro Assembler Version 6.14.8444
Copyright © Microsoft Corp 1981-1997. All rights reserved.

Assembling: t2.asm

F:\masm32\bin>

ничего не ругается, как видишь...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Вот как я компилю и что пишет у меня
Цитата

c:\masm611\bin\ml p.asm
Microsoft ® Macro Assembler Version 6.11
Copyringht © Microsoft Corp 1981-1993. All rights reserved
Assembling: p.asm
p.asm(12): error A2008: syntax error : db
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Ну, попробуй вот так:
ml -c /Zm p.asm
(/Zm - для того, чтобы включить совместимость с MASM 5.1, а -c чтобы не линковать сразу, а только компилировать, линковать придется не link-ом, а link16)

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


volvo , твое предложение помогло, только у меня нет link16? Он поставляеться только с masm32?

И можно поподробнее поповоду
Цитата
/Zm - для того, чтобы включить совместимость с MASM 5.1

ведь у меня более новая версия, что это за совместимость с 5.11, непойму? blink.gif


И вот установил masm32
компилю как ты там выше выдает следующее
Цитата

C:\masm32\bin>ml -c tp.asm
Microsoft ® Macro Assembler Version 6.14.8444
Copyright © Microsoft Corp 1981-1997. All rights reserved.
Assembling: p.asm
MASM : fatal error A1000: cannot open file : p.asm



Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
ведь у меня более новая версия, что это за совместимость с 5.11, непойму?
Правда? А чего ж ты в своей более новой версии работаешь с USE16, можно полюбопытствовать? Почему вместо вызова макроса печати строки (это все-таки макро-ассемблер, все ж реализовано, надо только подключить файл и вызвать) ты делаешь по старинке:
	mov ah,09h
mov dx,offset string
int 21h

? Более новая-то она более новая, но ты ХОЧЕШЬ использовать те вещи, которые были в ходу в версии более старой, вот и обеспечивай совместимость с ней.

Цитата
выдает следующее
Не совсем понятно, как связан файл TP.ASM и файл P.ASM? Компилируешь одно, жалуется на отсутствие другого?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


volvo
Цитата
Не совсем понятно, как связан файл TP.ASM и файл P.ASM? Компилируешь одно, жалуется на отсутствие другого?


Это я ошибся в написании, но ошибка при ассемблировании присуствует все равно. И Скажи пожайлуста по поводу link16, где его тогда надыбать?

И почему у тебя ассемблирует, а у меня нет?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Цитата
по поводу link16, где его тогда надыбать?
Этот линкер входит в установку MASM 6.14.8444, я не понимаю, почему он не присутствует у тебя. Качал файл m32v10r.zip с сайта masm32.com? Тогда разархивируй этот файл, получишь Install.exe, который ты запускал, а вот если и его разархивировать (я попробовал сделать это 7Zip-ом, получилось), то в папке bin должен лежать link16.bin (возможно, ты просто не ту инсталляцию выбрал, поэтому 16-битный линкер не распаковался при установке)...

Цитата
И почему у тебя ассемблирует, а у меня нет?
Потому, что у меня файл открывается (не занят, сторонними приложениями, например), а у тебя - нет... Может, что-то этот файл держит, и ML просто не может его открыть?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


У меня кстати не m32v10r.zip, а m32v9r.zip, ща закачаю 10 и посмотрю)

............

Все скачал 10 версию, распаковал и как ты говорил там есть link16. Попробую слинковать сейчас)

............

Слинковал, все работает, огромное спасибо за помощь)

............

Ну и я попробовал в masm611 слинковать всеже простым link и знаешь он слинковал, за счет использования директивы use16 в коде)

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


volvo, вот такой вопрос к тебе есть. В примере присутсвует вот такая прога, считывания нулевого сектора (загрузочного) и сохранения в файл считанной от туда инфы. Ассемблируеться и линкуеться нормально.
При работе ругаеться что приложени попыталось произвети прямой доступ к диску что невозможно. Может быть это из-за того что запускаеться из под винды?

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Цитата
Может быть это из-за того что запускаеться из под винды?
Точнее - из-за того, что запускалось из-под Windows NT... В 9х это очень даже работало, NT-ветка запрещает такие "фокусы"
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Ок. Спасибо, буду знать)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


volvo , опять к тебе вопрос есть)
Тут вот по книге автор говорит что в чистом асме как бы вывести десятичное число не возможно, например
имется в регистре ax число 16355 и простого способа как например вывод строки, вывода чисел в асме нет, выводяться ведь символы соответствующие кодам ASCII, приводиться подпрограмма вывода в шестнадцатиричном виде, у тебя случайно не имееться кода по выводу в десятичном виде? И еще, какие есть более современные способы вывода чисел?

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гость






Цитата
какие есть более современные способы вывода чисел?


include F:\masm32\macros\macros.asm
; ...
mov eax, 16355
print str$(eax)


достаточно просто, чтобы не извращаться вот так, правда? smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


volvo , а ты не могбы привести полный текст программы, где просто вывод числа идет, ну а если вообще не трудно, то ввод какого ни то числа и его же вывод. А то я с программирование макросов не знаком пока, и можешь дать какую ссылку на документацию по программированию макросов и masm32? (Я конечно и сам могу поискать, но ты как профессионал может подскажешь где найти более хорошую документацию)

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гость






.486
.model flat, stdcall
option casemap :none

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

include F:\masm32\include\masm32.inc
include F:\masm32\include\gdi32.inc
include F:\masm32\include\user32.inc
include F:\masm32\include\kernel32.inc

includelib F:\masm32\lib\masm32.lib
includelib F:\masm32\lib\gdi32.lib
includelib F:\masm32\lib\user32.lib
includelib F:\masm32\lib\kernel32.lib
includelib F:\masm32\lib\msvcrt.lib ; это для wait_key

.data
number dd ?
.code

start:
; получаем от пользователя строку, преобразуем ее в число,
; и заносим в number
mov number, sval(input("Enter number here: "))

; печатаем содержимое number
print str$(number)

; пауза до нажатия кнопки пользователем
call wait_key

exit

end start


Цитата
можешь дать какую ссылку на документацию по программированию макросов и masm32?
Мне достаточно документации, идущей с MASM-ом, и самих исходников макросов. Все-таки, спроси у Гугла...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Пытаюсь скомпилить твою прогу выдает
Цитата
Assembling: p.asm
Microsoft ® Incremental Linker Version 5.12.8078
Copyright © Microsoft Corp 1992-1998. All rights reserved.

/z2
"p.obj"
"p.exe"
NUL
LINK : warning LNK4044: unrecognized option "z2"; ignored
p.obj : warning LNK4033: converting object format from OMF to COFF
LINK : fatal error LNK1181: cannot open input file "p.exe"

Это в чем проблема?

................

Открыл асмовский файл через MASM32 Editor, в нем произвел ассемблирование и линковку, и он уже ничего не выдал, что это за такое, в чем разница? там автоматом какие то дополнительные параметры что ли етот эдитор подставляет.

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 14.12.2019 14:42
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name