![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() |
Account |
![]()
Сообщение
#1
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Программа просто выводит строку. но выводит кракозябры вместо строки. Строка на русском. (Я так понял проблема с кодировкой) Как это исправить.
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Какой ассемблер, в какой кодировке исходник? Под какой ОСью запускаешь? Информации нужно больше...
|
Account |
![]()
Сообщение
#3
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Masm611,WinXp.
Но проблему решил, подправил кодировку исходника и все встало на свои пути. Спасибо за наводку) Сообщение отредактировано: Account - 14.11.2008 9:49 |
Account |
![]()
Сообщение
#4
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Привожу код проги, где при выводе используеться задержка за счет цикла в котором применяеться расширенный регистр 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 - 16.11.2008 1:12 |
volvo |
![]()
Сообщение
#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> ничего не ругается, как видишь... |
Account |
![]()
Сообщение
#6
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот как я компилю и что пишет у меня
Цитата 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 |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Ну, попробуй вот так:
ml -c /Zm p.asm Сообщение отредактировано: volvo - 16.11.2008 22:34 |
Account |
![]()
Сообщение
#8
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo , твое предложение помогло, только у меня нет link16? Он поставляеться только с masm32?
И можно поподробнее поповоду Цитата /Zm - для того, чтобы включить совместимость с MASM 5.1 ведь у меня более новая версия, что это за совместимость с 5.11, непойму? ![]() И вот установил 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 - 16.11.2008 23:06 |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Цитата ведь у меня более новая версия, что это за совместимость с 5.11, непойму? Правда? А чего ж ты в своей более новой версии работаешь с USE16, можно полюбопытствовать? Почему вместо вызова макроса печати строки (это все-таки макро-ассемблер, все ж реализовано, надо только подключить файл и вызвать) ты делаешь по старинке: mov ah,09h
mov dx,offset string
int 21h
? Более новая-то она более новая, но ты ХОЧЕШЬ использовать те вещи, которые были в ходу в версии более старой, вот и обеспечивай совместимость с ней.Цитата выдает следующее Не совсем понятно, как связан файл TP.ASM и файл P.ASM? Компилируешь одно, жалуется на отсутствие другого? |
Account |
![]()
Сообщение
#10
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo
Цитата Не совсем понятно, как связан файл TP.ASM и файл P.ASM? Компилируешь одно, жалуется на отсутствие другого? Это я ошибся в написании, но ошибка при ассемблировании присуствует все равно. И Скажи пожайлуста по поводу link16, где его тогда надыбать? И почему у тебя ассемблирует, а у меня нет? |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Цитата по поводу link16, где его тогда надыбать? Этот линкер входит в установку MASM 6.14.8444, я не понимаю, почему он не присутствует у тебя. Качал файл m32v10r.zip с сайта masm32.com? Тогда разархивируй этот файл, получишь Install.exe, который ты запускал, а вот если и его разархивировать (я попробовал сделать это 7Zip-ом, получилось), то в папке bin должен лежать link16.bin (возможно, ты просто не ту инсталляцию выбрал, поэтому 16-битный линкер не распаковался при установке)...Цитата И почему у тебя ассемблирует, а у меня нет? Потому, что у меня файл открывается (не занят, сторонними приложениями, например), а у тебя - нет... Может, что-то этот файл держит, и ML просто не может его открыть? |
Account |
![]()
Сообщение
#12
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
У меня кстати не m32v10r.zip, а m32v9r.zip, ща закачаю 10 и посмотрю)
............ Все скачал 10 версию, распаковал и как ты говорил там есть link16. Попробую слинковать сейчас) ............ Слинковал, все работает, огромное спасибо за помощь) ............ Ну и я попробовал в masm611 слинковать всеже простым link и знаешь он слинковал, за счет использования директивы use16 в коде) Сообщение отредактировано: Account - 17.11.2008 2:49 |
Account |
![]()
Сообщение
#13
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, вот такой вопрос к тебе есть. В примере присутсвует вот такая прога, считывания нулевого сектора (загрузочного) и сохранения в файл считанной от туда инфы. Ассемблируеться и линкуеться нормально.
При работе ругаеться что приложени попыталось произвети прямой доступ к диску что невозможно. Может быть это из-за того что запускаеться из под винды? Сообщение отредактировано: Account - 17.11.2008 22:36 |
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата Может быть это из-за того что запускаеться из под винды? Точнее - из-за того, что запускалось из-под Windows NT... В 9х это очень даже работало, NT-ветка запрещает такие "фокусы" |
Account |
![]()
Сообщение
#15
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ок. Спасибо, буду знать)
|
Account |
![]()
Сообщение
#16
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo , опять к тебе вопрос есть)
Тут вот по книге автор говорит что в чистом асме как бы вывести десятичное число не возможно, например имется в регистре ax число 16355 и простого способа как например вывод строки, вывода чисел в асме нет, выводяться ведь символы соответствующие кодам ASCII, приводиться подпрограмма вывода в шестнадцатиричном виде, у тебя случайно не имееться кода по выводу в десятичном виде? И еще, какие есть более современные способы вывода чисел? Сообщение отредактировано: Account - 18.11.2008 22:54 |
volvo |
![]()
Сообщение
#17
|
Гость ![]() |
Цитата какие есть более современные способы вывода чисел? include F:\masm32\macros\macros.asm
; ...
mov eax, 16355
print str$(eax)
достаточно просто, чтобы не извращаться вот так, правда? ![]() |
Account |
![]()
Сообщение
#18
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo , а ты не могбы привести полный текст программы, где просто вывод числа идет, ну а если вообще не трудно, то ввод какого ни то числа и его же вывод. А то я с программирование макросов не знаком пока, и можешь дать какую ссылку на документацию по программированию макросов и masm32? (Я конечно и сам могу поискать, но ты как профессионал может подскажешь где найти более хорошую документацию)
Сообщение отредактировано: Account - 18.11.2008 23:50 |
volvo |
![]()
Сообщение
#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-ом, и самих исходников макросов. Все-таки, спроси у Гугла... |
Account |
![]()
Сообщение
#20
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Пытаюсь скомпилить твою прогу выдает
Цитата 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 - 19.11.2008 1:05 |
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 17:00 |