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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
rimkarimka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо тебе огромное,добрый человек !!!

Всего записей: 2 | Зарегистр. 20-06-2008 | Отправлено: 14:33 21-06-2008
hobin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. Огоромная просьба, мучаюсь с прогой упровления ЖК-индикатора. PC1604
делаю вроде всё провильно. Может у кого есть уже написанная в ассемблере. Ну очень надо!

Всего записей: 4 | Зарегистр. 14-12-2006 | Отправлено: 11:01 27-07-2008
stupid_user

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
гуру asm подскажите что это за тип вызова функции? (хочу переделать в читабельный вид)
 
function Get(a, b, c: integer): Integer; virtual;
  begin
    asm
      push [ebp+16]
      push [ebp+12]
      push [ebp+8]
      call Func2
      add esp, 12
      pop ebp
      ret 12
    end;
  end;

Всего записей: 292 | Зарегистр. 12-11-2006 | Отправлено: 14:44 08-09-2008
akaGM

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

Цитата:
хочу переделать в читабельный вид

то есть?
 
      push [ebp+16]
      push [ebp+12]
      push [ebp+8]
      call Func2
      add esp, 12
      pop ebp
 
пихается в стек a b c и зовётся func2, потом после её вызова чистится стек 3 * 4 int'а
из чего можно заключить, что func2 -- C-функция, потом чистится стек самой Get
 
или что ты хотел?
 
-----
а, вот это что ли?
 
function Агтс2(a, b, c: integer): Integer; cdecl;

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 15:07 08-09-2008 | Исправлено: akaGM, 15:17 08-09-2008
stupid_user

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
я бы хотел чтобы вместо asm кода было нечто:
result := Func2(a, b, c);
 
Но такой способ не работает (Func2 вызывается, но параметры не передаются), работает только asm код. Я так понял, что нужно указать тип вызова (cdecl, stdcall, safecall и т.п.)
 
upd:
Func2 у меня уже стоит function Func2 (a,b,c : integer): integer; cdecl;
Но при вызове из Get ;virtual параметры не передаются.

Всего записей: 292 | Зарегистр. 12-11-2006 | Отправлено: 15:25 08-09-2008 | Исправлено: stupid_user, 15:38 08-09-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
stupid_user
что значит не передаются?
 
ну отcчёт стека в виртуале, афаир, начинается со сдвига на "лишние" 4 байта из-за передачи self
 
попробуй так:
Код:
 
function Get(a, b, c: integer): Integer; virtual;
var
  res: integer;
begin
  res := Func2(a,b,c);
  Result := res;
end;

 
код Func2 есть? она на асме что ли?
 
что тебя вообще не устраивает-то?

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 15:45 08-09-2008 | Исправлено: akaGM, 21:11 08-09-2008
Skipper



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как вывести результат, после использования fsin? т.е. из регистра st(0)

Всего записей: 961 | Зарегистр. 23-06-2002 | Отправлено: 14:02 21-09-2008
Lyrik

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

Код:
fstp dword ptr [a]

содержимое а уже можно вывести

Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 17:37 21-09-2008
Skipper



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Немного не так вопрос задал, как его на экран можно вывести?

Всего записей: 961 | Зарегистр. 23-06-2002 | Отправлено: 21:17 21-09-2008
AlexeyTr



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возможно ли выразить бинарное AND операциями в десятичной системе (деление, учножение, сложение...) ?

Всего записей: 952 | Зарегистр. 30-04-2002 | Отправлено: 17:15 16-10-2008
Ve4eslav



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, требуется до конца выходных заделать лабу по AVR  
 
Разработать программу, отображающую содержимое флеш-памяти на светодиодных индикаторах по 3 бита на один раз. Переход к отображению следующих 3 бит должен происходить при нажатии кнопки. Кнопка 1 показывает следующие 3 бита, кнопка 2 – предыдущие. Если ни одна из кнопок не нажата в течение 10с мигать всеми индикаторами с частотой 3 Гц до нажатия.
 
Цена договорная аська 1семь69четыре4ноль2один
 
Инструкции по запросу вышлю. Желательно чтоб беспокоил любитель сего вида микроконтроллеров, ибо в общем и целом asm-код я и сам напишу, но вот с этим конкретным процессором хочется чтоб он удовлетворял условиям корректности данных тестирования.  
 
Доп требования (для тех кто уже в теме): Таймер должен быть в синхронном режиме, при этом должны использоваться прерывания.

Всего записей: 14 | Зарегистр. 22-10-2006 | Отправлено: 21:05 22-10-2008
Kolbaser_Mx

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, наконец-то нашел толковый форум про ассемблер! вообщем нужна помощь- немного подправить исходник, сам я в этом слабовать Нужно написать прогу, определяющую размер доступной для DOS оперативной памяти в КБ (обычно она вроде что-то около 650КБ). Есть такой исходник, но он не компилится в emm8086.exe( удобная прога для начинающих)
 
Подробнее...
 
Нужно чуть-чуть исходник подправить...

Всего записей: 23 | Зарегистр. 19-09-2008 | Отправлено: 19:42 24-10-2008
akaGM

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

Цитата:
но он не компилится

чем не компилится? код вполне себе честный,
tasm и masm едят его на ура...
а в чистый дос загрузиться?
 
может быть ты просто .com формат не можешь сделать этой фигней emm8086?
кстати, что это, эмулятор, emm/xmm?

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 20:41 24-10-2008 | Исправлено: akaGM, 22:46 24-10-2008
Kolbaser_Mx

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Теперь попробовал TASM:
tasm 3.1  
tlink 5.1
 
Turbo Assembler выдает
Assembling file:   max.asm
Error messages:    None
Warning messages:  None
Passes:            1
Remaining memory:  417k
 
Turbo link пишет:
Warning: No stack
 
На экране - кракозябы, даже есть среди них заветная цифра 640 -как раз сколько надо, но что делать с этим "шумом" из букв? Как я понимаю программа определяет размер памяти, только нужно организвать правильный вывод...  
Сейчас выводит примерно так:
 
...................(НАБОР РАЗНЫХ НЕПЕЧАТУЕМЫХ СИМВОЛОВ) ..................................... 640 ..........................................
... . .. .. ..............(ЕЩЕ НАБОР) ....................................... . .. . .1024 .........................................
 
 
 
Также вылазит ошибка Процессор NTVDM обнаружил недопустимую инструкцию  
CS: 0000 IP:0077 OP:f0 37 05 12 02. Для завершения приложения нажмите кнопку Закрыть.
 
 
P/s/ emm8086 - www.emu8086.com.
emu8086 is the emulator of 8086 (Intel and AMD compatible) microprocessor with integrated 8086 assembler and tutorials for beginners. The emulator runs programs like the real microprocessor in step-by-step mode. It shows registers, memory, stack, variables and flags
P/p/s в чистом ДОСе - те же кракозябы...

Всего записей: 23 | Зарегистр. 19-09-2008 | Отправлено: 18:32 26-10-2008 | Исправлено: Kolbaser_Mx, 18:43 26-10-2008
Abs62



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

Цитата:
но что делать с этим "шумом" из букв?

Запускать tlink с ключом /t, дабы получился com, а не exe.

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

Всего записей: 6077 | Зарегистр. 22-10-2005 | Отправлено: 18:59 26-10-2008
Kolbaser_Mx

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

Цитата:
Запускать tlink с ключом /t, дабы получился com, а не exe.

ВСЕ ЗАРАБОТАЛО!!!!!! Я СЧАСТЛИВ!
большое спасибо за быстрый ответ!
Осталось совсем немного - не могли бы вы закоментить исходник немного чтобы было понятно что делается по ходу ее выполнения- а то честно говоря мне немного помогли ее сделать ) а прокоментировать забыли ...  
 

Всего записей: 23 | Зарегистр. 19-09-2008 | Отправлено: 19:24 26-10-2008
akaGM

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

Цитата:
может быть ты просто .com формат не можешь сделать...?

или это тебе ничего не сказало?
 
а с комментариями -- нет уж, парень, извини, -- один тебе код написал, другой откомментировал, а ты это сдавать/продавать будешь? асм не такая штука, чтоб его в ботаническом институте учили, так что давай, учи...
правда, один коммент посоветовать могу
в первых двух строчках напиши:

Код:
; Kolbaser_Mx
; (C) 2008, All rights reserved

 
---
ладно, это почти что шутка...
 
общая идея проги такая:
размер памяти получаем чтением из порта cmos 71 (70 -- его адресный порт), используя адресные регистры (коды функций) 15-16 и 17-18 (emm)
Код:
 
mov al,015h        ; #регистра 15 -- base mem
out 070h,al          ; засылаем код в адресный порт cmos
in al,071h            ; читаем из cmos-порта, al=младший байт обычной памяти
mov bl,al             ; сохраняем
mov al,016h        ; #регистра 16
out 070h,al
in al,071h            ; al=старший байт обычной памяти

тоже самое и для функций 17-18 (получение extended памяти, сам их в коде найди)
 
потом в блоках типа
Код:
 
mov ax,bx
mov bx,10
xor di,di
l1:
xor dx,dx
div bx
add dl,030h  ; <-- здесь лучше напиши add dl, '0' для понятности
dec di
mov buf_end[di],dl
cmp ax,00h
jnz l1
lea dx,buf_end[di]

переводим полученные байты (размера) в печатабельную символьную строку и готовим её выдачу на экран посредством вызова 9-ой функции 21-ого дос-прерывания:

Код:
mov ah,9
mov dx,offset pr
int 21h

сам где-нить посмотри аргументы 9ой 21-ого
 
хотя, можно было проще всё сделать, т.к. все эти данные из cmos'a копируются при посте в bios data area 0040:хххх

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 14:26 27-10-2008 | Исправлено: akaGM, 23:07 27-10-2008
Kolbaser_Mx

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

Цитата:
; Kolbaser_Mx
; (C) 2008, All rights reserved

) а еще лучше commented by akaGM (R) )  
 
Спасибо за проделанную работу! Продавать конечно я не собираюсь - не мой уровень таким заниматься...  Все для себя, для любимого.
 

Цитата:
может быть ты просто .com формат не можешь сделать...?
или это тебе ничего не сказало?  

 
задание было написать exe-шник, поэтому я упорно пытался откомпилить его в exe. Придется доказывать преподу, что .com-программа ничем не хуже .exe ))
 
 

Всего записей: 23 | Зарегистр. 19-09-2008 | Отправлено: 18:44 28-10-2008
akaGM

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

Цитата:
Придется доказывать преподу, что .com-программа ничем не хуже .exe

на тебе ехе-версию
изменения минимальны, сам разберешься, т.к. я просто закомментировал ненужное/вставленное тремя ;;;
 
компилировать:
tasm хрен.asm
линковать:
tlink хрен.obj
например...
 
заранее пожалуйста, хотя от коньяка не откажусь...
 
---

Цитата:
Razmer bazovoi pamati: 640 bait

гы-гы-гы
 
низачот!

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 19:51 28-10-2008 | Исправлено: akaGM, 20:01 28-10-2008
Abs62



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

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

Всего записей: 6077 | Зарегистр. 22-10-2005 | Отправлено: 20:27 28-10-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 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