Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на Ассемблере как общего так и конкретного характера.
 
важное примечание
для тех кто считает, что здесь место халявных исполнений курсовых и лабораторных работ.
тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но что-то не понимает, что-то не получается...
ведь ассемблер изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям
вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...
 
короче, тут не сборище придурков-альтруистов, которым нечего делать и они ждут-не дождутся когда вы их попросите
что-то сделать _за_ вас
если позарез надо и вы даже готовы заплатить, тогда вам сюда
удачи
 
некоторые ресурсы
http://www.wasm.ru/ Самый популярный русскоязычный ресурс. https://wasm.in/
Ассемблер - книги (ASM, Assembler)
 
Просьба все большие листинги оформлять тегом more.
 
если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:42 29-11-2006 | Исправлено: akaGM, 17:44 11-06-2020
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я вообще про 64 ни че не говорю. я говорю о 16 и 32.  
как внутри кода изменить разрядность, как использовать директиву use правильно

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 22:08 27-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скачал tasm32. Пытаюсь собрать код, написанный в 16, получаю:
 
E:\Downloads\tasm5plus\BIN>tlink32 cpuid
Turbo Link  Version 1.6.71.0 Copyright (c) 1993,1996 Borland International
Fatal: 16 bit segments not supported in module cpuid.ASM
 
Можно как-то исправить?

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 18:13 28-04-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
добавь директиву USE16 наверно, а может .386 попробуй по крайней мере

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 18:22 28-04-2012 | Исправлено: bomzzz, 18:23 28-04-2012
Yvaliko

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
tlink32

Еще бы он не ругнулся.

Всего записей: 770 | Зарегистр. 13-05-2008 | Отправлено: 20:00 28-04-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
гы точно. должен быть отдельный линкатор для 16 бит

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 20:04 28-04-2012
Yvaliko

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Просто надо вместо TASM32.EXE и TLINK32.EXE использлвать TASM.EXE и TLINK.EXE.
Все что оканчивается на 32 используется на программирование под винды и не умеет компилировать dos приложения.

Всего записей: 770 | Зарегистр. 13-05-2008 | Отправлено: 20:09 28-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Yvaliko

Цитата:
Просто надо вместо TASM32.EXE и TLINK32.EXE использлвать TASM.EXE и TLINK.EXE.

Угу. Их и использую в виртуальной машине.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 20:21 28-04-2012 | Исправлено: A1exSun, 20:21 28-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как сдвигом битов поделать BL на 2? shr bl, 2 не срабатывает почему-то...

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 19:12 29-04-2012 | Исправлено: A1exSun, 19:17 29-04-2012
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
Сдвигать надо не на само значение, а на степень двойки. То бишь shr bl,1.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 19:22 29-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Угу. В другом месте была проблема, BX портился
 
Рисую интерфейс дольше чем писал половину программы...
 
Добавлено:
Очищаю так экран и устанавливаю атрибуты для текста - белый фон и синие символы:

Код:
    mov     ah, 7                           ; свертка текстового окна вниз
    mov     al, 0
    mov     bh, 0F1h                        ; атрибут для выводимого текста
    xor     cx, cx
    mov     dh, [es:484h]
    mov     dl, [es:44Ah]
    dec     dl
    int     10h

Почему если программа запускается сразу после загрузки MS-DOS (в autoexec прописал), то фон серый? Из нортона запускать белый.
 
Добавлено:
Нужно было 7й бит переключить в интенсивность.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 19:37 29-04-2012 | Исправлено: A1exSun, 19:40 29-04-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
а ты лучше блинк включи, так круче...
:)

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 15:31 02-05-2012
xliker



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго всем дня. Мучает вот какой вопрос: при использовании любой директивы для работы со строками (catstr, instr и др. ) в разрабатываемой программе вылетает ошибка Missing text macro. Насколько я понял из гугла, ошибка появляется при недостатке аргументов, но у меня, на мой взгляд, их хватает. Вот пример строк, где вылетает:

Код:
 
...
buffer3 CATSTR buffer2,buffer1
...
lenbuf2 sizestr buffer2
...
;вот сегмент данных
masm
model small
 
.data
handle1 dw 0
handle2 dw 0
filename1 db 'f.txt',0
filename2 db 'g.txt',0
point_fname1 dd filename1
point_fname2 dd filename2
string db 50 dup(' ')
buffer1 db 10 dup(' ')
buffer2 db 10 dup(' ')
buffer3 db 10 dup(' ')
entr   db 13
s db 'test'
lenstr dw 0
lenbuf2 dw 0
 

Спасибо, если кто тыкнет пальцем, где ошибся я.

Всего записей: 17 | Зарегистр. 06-09-2011 | Отправлено: 17:36 12-05-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну сегмент данных, да...
а как catsrt зовёшь?

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 18:46 12-05-2012
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xliker

Цитата:
Насколько я понял из гугла, ошибка появляется при недостатке аргументов, но у меня, на мой взгляд, их хватает.

Хватает, да не тех.

Цитата:
Each text item can be a literal string, a constant preceded by a %, or the string returned by a macro function.

buffer2 и buffer1 - не строки, не константы и не макро. Вот и выдаются ошибки.


----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 18:47 12-05-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xliker
ну да...
могу предложить:

buffer1 equ '        '
buffer2 equ '        '
buffer3 CATSTR buffer2,buffer1

 
или не выделываться и "слушать свои валенки"
 
buffer3 db 20 dup(0)
 

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 19:06 12-05-2012 | Исправлено: akaGM, 19:17 12-05-2012
xliker



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
akaGM

Цитата:
buffer1 equ '        '  
 buffer2 equ '        '  
 buffer3 CATSTR buffer2,buffer1

Простите за тупые вопросы, просто в ассемблере далеко не силён.
Вот так работает, но как определять строки не как константы через equ? Ведь buffer1 и buffer2 у меня не константные, они заполняются в процессе выполнения программы, конкретно - чтения из файла...  

Всего записей: 17 | Зарегистр. 06-09-2011 | Отправлено: 22:40 13-05-2012
Yvaliko

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xliker
Как по мне, так макросы в асме это на любителя. Повторяющийся код проще запихнуть в процедуру и вызывать ее через call. Тут открывается простор для творчества. Как ты передашь в процедуру переменные решаешь ты сам и никто другой. При отладке опять же самописный код намного понятнее выглядит, чем какие то макросы.

Всего записей: 770 | Зарегистр. 13-05-2008 | Отправлено: 23:08 13-05-2012
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xliker
Директивы компилятора выполняются в процессе компиляции программы. Поэтому они могут работать только с теми константами, которые известны на этот момент. Пытаться с их помощью сделать что-то с данными, которые становятся известны только в процессе работы программы, бессмысленно.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 23:38 13-05-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xliker
 
чем тебя такой вариант не устраивает?
 
buffer3 db 20 dup(0)

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 00:40 14-05-2012
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А меня вот бесит, когда вместо макро делают процедуру в две строчки и вызывают ее! На эти две строчки приходится две-три строчки подготовки регистров, сам вызов, стек и возврат! Вот нафига? На проход процедуры в 5 байт затрачивается еще минимум столько же байт плюс штраф за стек! Плюс дикая неудобочитаемость кода! А ведь макросы в масме помощнее препроцессора Си! Куда смотрят преподы?!!

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 11:06 14-05-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru