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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
люди помогите файл пропатчить. задача такая, есть интеловская утилита для перепрошивки флеш памяти сетевой карты. она не позволяет прошивать флеш память, чем попало, видимо какая то проверка по определенным байтам. что я начал делать - сначала разжал файл упсом. после этого при открытии файла в блокноте в нем читается дата - ну то есть можно прочитать хелп, сообщения об ошибках, в принципе раз он расжался то это и означает что он был зажат. при попытке прошить неродной прошивкой выводиться надпись -
Invalid image file [имя файла]
нашел в файле это место - Invalid image file, в 16 ричном редакторе HIEW. заодно дезасемблировал SOURCER - но в принципе он написал, что программа написана не на ассемблере могла фигня получится, и видимо получилась.
 
и че дальше делать как найти какое место в программе ссылается на эту дату?    
 
http://bomz-co.narod.ru/BootUtil.exe
 
   
 
Добавлено:
может программу резидента написать. прошивальщик, прежде чем начать прошивку спрашивает, создать бекап, вот в этот момент нажать горячую клавишу и подменить файл прошивки. или если он открыт перезаписать его

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 07:10 06-02-2011 | Исправлено: bomzzz, 07:56 06-02-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
факир был пьян и фокус не удался. утилита вместе с тем как проверяет прошивку копирует ее в память, и потом пишет оттуда, перезаписывание файла эффекта нужного не дает.

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 19:08 06-02-2011
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 08:57 08-02-2011
jaKrevedko



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем добрый вечер,есть парочка вопросов,начал изучать ассемблер.. и вот собственно первая лабораторная на нём , простенькая формула ,подобные которой я за 10 минут осваивал на Делфях и плюсах когда начинал их изучать. формула M = 16(n(n + 1)(2n + 1))
На ассемблере она же испортила мне добрую половину мозга.Какой компилятор и линкер использовать лучше всего под Windows 7 x64 , старенький тасм который раздали в институте на ней даже не запустился , масм не хочет ничего компилировать ругается на какие то ошибки описания которых я не смог нагуглить.И если можно , проверьте сам текст программы на ошибки.
 

Код:
Data1     Segment
M     Dw ?
N     Dw 5 ;любое число
X     DW 16
One     Dw 1
Two     Dw 2
Data     Ends
Code1     Segment
     Assume CS: Code, DS:Data1
Start: Mov    Ax,Data1
     Mov    Ds,Ax
         Mov    Es,Ax
     Mov    Ax,Two            ;Ax =2
         Idiv   One
     Imul    N             ;AX=AX*N
     Mov    AX,BX             ;AX помещаем в BX (2*n)
     Add    AX,One            ;AX+1 (2n+1)
     Mov    AX,BX             ;AX помещаем в BX (2n+1)
     Mov    AX,N            ;N помещаем в AX
     Add    AX,1              ;AX+1
     Mov    AX,CX             ;AX помещаем в CX (N+1)
     Mov    AX,N              ;N помещаем в AX
     Imul    BX             ;AX умножаем на BX (n*(n+1))
     Imul    CX             ;AX умножаем на CX (n*(n+1))*(2n+1)
     Mov    AX,BX             ;BX= n*(n+1))*(2n+1)
     Mov    AX,16             ;AX=16
     Imul    BX  
     Mov    AX,M             ;M=16*((n*(n+1)*(2n+1))
     Mov    AL,0
     Mov    AH,4CH
     Int    21H
Code1       Ends
     end    Start

Всего записей: 84 | Зарегистр. 23-10-2007 | Отправлено: 22:26 08-02-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не надо было 64 битную систему ставить. ищи специальный 64 битный компилятор. микрософт ассемблер официально больше не поддерживает. соответсвенно у тебя будет соверешенновсе по другому и форум ищи 64 битный
 
Добавлено:
http://www.fileguru.com/apps/tasm_for_windows7_64_bit
 
Добавлено:
можешь виртуалку поставить на ней дос запустить и откмпилировать. только как ты отлаживать будешь

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:15 08-02-2011 | Исправлено: bomzzz, 23:16 08-02-2011
ValidolX

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

Цитата:
микрософт ассемблер официально больше не поддерживает

 
не надо пугать народ
 
http://msdn.microsoft.com/en-us/library/afzk3475.aspx

Всего записей: 1719 | Зарегистр. 22-07-2001 | Отправлено: 23:29 08-02-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ставь студию.
 
Добавлено:
http://www.masm32.com/index.htm а 32 битный есть нормальный, любительский
 
Добавлено:

Цитата:
 
Версии MASM
 
Хотя MASM больше не является коммерческим продуктом, Microsoft продолжает поддерживать исходный код, используемый и в других продуктах Microsoft. С тех пор как Microsoft прекратила продавать MASM отдельно, было выпущено несколько обновлений к производственной линии MASM 6.x (последнее обновление — версия 6.15, которая была включена в Visual C++ 6.0), а после этого — MASM 7.0 в составе Visual C++ .NET 2002, MASM 7.1 в составе Visual C++ .NET 2003, MASM 8.0 в составе Visual C++ 2005 и MASM 9.0 в составе Visual C++ 2008, поддерживающие платформу x64.
 

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:30 08-02-2011
jaKrevedko



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz
Оужас , 8 гигов ,32 битная система и Adobe Premiere несовместимы ,не мне такое не подходит , попробую чо нибудь другое . кстати 64 битный тасм создаёт obj файл но не линкует , ещё один геморрой чем линковать?уже нашел .Всем спасибо за внимание и объяснение

Всего записей: 84 | Зарегистр. 23-10-2007 | Отправлено: 19:02 09-02-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
тасм всяко лучше что микрофостовский, тасм развивается. а отладчик на 64 бита есть?

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 21:47 09-02-2011
ValidolX

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

Цитата:
тасм всяко лучше что микрофостовский

обоснуйте пож-та
 

Цитата:
а отладчик на 64 бита есть?

WinDbg

Всего записей: 1719 | Зарегистр. 22-07-2001 | Отправлено: 11:09 10-02-2011
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 20:01 10-02-2011
Benchmark



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

Цитата:
Какой компилятор и линкер использовать лучше всего под Windows 7 x64

Под 64-бит Windows не работают старые DOS и Win16 приложения. Поэтому сгодится любой компилятор, позволяющий создавать exe'шники под Win32 или Win64. Какой именно - дело вкуса и привычки. От себя могу порекомендовать FASM (http://flatassembler.net)
 
Вот максимально упрощенный пример вычисления формулы M = 16(n(n + 1)(2n + 1)). Запустить FASMW.exe, скопировать туда код, нажать F9 для компиляции
 
;========================= Win32 console приложение ===========================;
format PE CONSOLE 4.0
entry start
include 'win32a.inc'
 
;================================ Code section ================================;
section '.code' code readable executable
 
  start:
         movzx    eax, [N]      ; eax = N
         mov      ebx, eax      ; ebx = N
         shl      eax, 1        ; eax = 2N
         inc      eax           ; eax = 2N + 1
         imul     ebx           ; eax = N(2N + 1)
         inc      ebx           ; ebx = N + 1
         imul     ebx           ; eax = N(2N + 1)(N + 1)
         shl      eax, 4        ; eax = 16*N(2N + 1)(N + 1) - результат
                                 
         invoke   ExitProcess, 0
 
;================================ Data section ================================;
section '.data' data readable writable
 
  N      db       255           ; любое число от 0 до 255
 
;=============================== Import section ===============================;
section '.idata' import data readable writable
 
      library kernel32, 'kernel32.dll'
 
      import  kernel32,\
              ExitProcess, 'ExitProcess'

Всего записей: 6833 | Зарегистр. 01-10-2002 | Отправлено: 01:51 11-02-2011 | Исправлено: Benchmark, 01:56 11-02-2011
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 02:30 11-02-2011
Benchmark



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz
Вот тот же самый пример, который скомпилируется в 64-битный exe'шник
 
;========================= Win32 console приложение ===========================;
format PE64 CONSOLE 5.0
entry start
include 'win64a.inc'
 
;================================ Code section ================================;
section '.code' code readable executable
 
  start:
         sub      rsp, 8        ; выровнять стек по 8-байт границе
 
         movzx    rax, [N]      ; rax = N
         mov      rbx, rax      ; rbx = N
         shl      rax, 1        ; rax = 2N
         inc      rax           ; rax = 2N + 1
         imul     rbx           ; rax = N(2N + 1)
         inc      rbx           ; rbx = N + 1
         imul     rbx           ; rax = N(2N + 1)(N + 1)
         shl      rax, 4        ; rax = 16*N(2N + 1)(N + 1) - результат
                                 
         invoke   ExitProcess, 0
 
;================================ Data section ================================;
section '.data' data readable writable
 
  N      dw       65535           ; любое число от 0 до 65535
 
;=============================== Import section ===============================;
section '.idata' import data readable writable
 
      library kernel32, 'kernel32.dll'
 
      import  kernel32,\
              ExitProcess, 'ExitProcess'

Всего записей: 6833 | Зарегистр. 01-10-2002 | Отправлено: 03:14 11-02-2011
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 07:00 11-02-2011
Benchmark



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz
 
Да я про то, что  

Цитата:
вопросы где взять компилятор для 64

... неактуальны. И компиляция, и отладка под 64-бит не является проблемой. На выбор - MASM из состава последних Visual Studio (2005, 2008, 2010), FASM, NASM, YASM - все поддерживают создание 64-битных приложений. Про самоделки вроде MASM32 - не скажу, не пользуюсь. TASM давно умер.

Всего записей: 6833 | Зарегистр. 01-10-2002 | Отправлено: 17:04 11-02-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
люди че делать с резидентами. ну почему конфликт с волков командиром может быть?




последнее предупреждение - потом будет запрос на запрет поста в этом разделе. Или пишем по сути, или не пишем вообще.

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:16 17-02-2011 | Исправлено: ShIvADeSt, 05:41 18-02-2011
xzGORzx

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
Подскажите пожалуйста как на FASM можно сложить 2 hex значения?
Точнее даже так, есть переменная со значением 02A853B0h к ней нужно будет прибавлять  
00000001h (0x1). Результат тоже нужен в hex. Подскажите пожалуйста, как это возможно реализовать?

Всего записей: 11 | Зарегистр. 09-12-2010 | Отправлено: 17:01 02-03-2011
akaGM

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

Цитата:
Подскажите пожалуйста как на FASM можно сложить 2 hex значения?

да так же как и на других асмах или я что-то не понял...
 

Цитата:
Точнее даже так, есть переменная со значением 02A853B0h к ней нужно будет прибавлять  00000001h (0x1). Результат тоже нужен в hex.

 
  var1 dd 02A853B0h
  var2 dd 01h
 
  mov eax, var1
  add  eax, var2

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 17:26 02-03-2011 | Исправлено: akaGM, 17:27 02-03-2011
xzGORzx

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пробовал подобный код, вылезает ошибка с рассказом что память не может быть writhen и с предложением отладки.

Всего записей: 11 | Зарегистр. 09-12-2010 | Отправлено: 18:12 02-03-2011
Открыть новую тему     Написать ответ в эту тему

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