Может кто нибудь дать пример программы на ассме, переводящей введенное числовое выражение в обратную польскую запись ?
Найти среднее арифметическое квадратов ненулевых элементов последовательности. Массив слов. // как это сделать на asm ? cpu 80486 16 ти разрядный.... при помощи цикла
Code: .model tiny .code .386 org 100h start: xor si, si mov cx, 7 lp: cmp word ptr mas[si], 0 je nxt mov dx, word ptr mas[si] imul dx, word ptr mas[si] add bx, dx nxt: inc si inc si loop lp mov ax, bx mov cx, 7 cwd idiv cx mov res, ax ret mas dw -1,2,4,0,-2,3,1 res dw 0 end start как-то так
В коде морфнаха заметил очень интересные строки Code: mov eax,[edi+IMAGE_OPTIONAL_HEADER32.ImageBase] ; закидываем в eax адрес имейдж базы .... add eax,[FileSize] ; прибавляем к адресу имейджбазы размер файла ..... cmp eax,1314BBB9h; производим сравнение пинч ли это jnz fornexta mov [RB_is],2 fornexta: cmp eax,1314C600h ; производим сравнение пинч ли это jnz fornexta2 mov [RB_is],2 fornexta2: .... mov edx,[edi+IMAGE_SECTION_HEADER.PointerToRawData]; закидываем в edx смещение в файле add edx,[hMap] ; плюсуем с началом файла в памяти .... mov eax,[RB_is] .if eax = 2; если у нас пинч... add edx,512; добавляем 512 к смещению+началу файла в памяти .endif mov ecx,[edi+IMAGE_SECTION_HEADER.SizeOfRawData]; закидываем в eсx физический размер секции на диске .if eax = 2 ; если у нас пинч... sub ecx,512; уменьшаем на 512 .endif ... mov edx,[edi+IMAGE_SECTION_HEADER.VirtualAddress];закидываем в edx виртуальный адрес add edx,[dwImageBase]; складываем с имейдж базой mov eax,[RB_is] .if eax = 2 ; если у нас пинч... add edx,512; добавляем к виртуальному адресу 512 .endif .... После этих преобразований у нас получиться что первые 512байт секции уйдут и в память грузиться не будут... Загрузил пинча в иде и заметил что в этих сегментах расположены данные которые выкидывать нельзя... вот отрывок из секции данных в первых 512 байтах Code: .data:1314B0D2; char aSoftwareMicr_1[] .data:1314B0D2 aSoftwareMicr_1 db 'SOFTWARE\Microsoft\Windows\CurrentVersion',0 .data:1314B0D2 ; DATA XREF: sub_13141780+Ao .data:1314B0D2 ; sub_13141780+30o .data:1314B0FC; char aProgramfilesdi[] .data:1314B0FC aProgramfilesdi db 'ProgramFilesDir',0 ; DATA XREF: sub_13141780+2Bo .data:1314B10C dd 6 dup(0) Сей код размещен специально чтобы морфнахом не криптовали пинчи? или есть какой то сокральный смысл?))
Я в asm пока новичек поєтому не судите строго. У меня такой вопрос как различают -128 и 128 в однобайтовом двоичном коде если они имеют одинаковій вид 1000 0000
Потому что есть "подтипы" переменных Signed и Unsigned. По вопросам дальнейшей поддержки обращайся к справочникам по переменным
Стоит начать с изучение книг по асму. Обычно в самом начале(например Крупник "Изучаем ассемблер") расписывают как работает механизм хранения и работы с отрицательными числами. А так в кратце если операция дает отрицательное число то там предусмотрен флаг. А как чего откуда можно еще вот тут например почитать.
Разработка и реализация на ассемблере программы обмена данными между ЭВМ через последовательный интерфейс. кто может сделать?
Задача. На вход подается текстовой документ на языке BASIC, на выходе должен получить код программы на языке ассемблер, т.е. написать некий однопроходный транслятор. Проблема при обработке переменных...Допустим на примере Code: LET A = B+1 На ассемблере переменные A,B я считаю как "перемещаемые операнды", которые я должен изначально объявить в блоке "data?" Code: A dd ? но я не знаю какие переменные мне встретятся и заранее их объявить не могу, сначала думал закодировать латинский 26 букв в виде массива на ассемблере, но соль в том, что переменные могут состоять из набора букв и цифр размера не больше 8, локально объявить эти переменные тоже не получается. Какие могут быть идеи по объявлению этих переменных в ассемблере. В ассемблере я дилетант, пришлось столкнуться с ним только при написании этой задачи, поэтому прошу совета . . .
вот у меня есть прога одна... на комп... в проге есть форма для данных (текст)... вот надо чтоб из этой формы то, что написал юзер, отсылалось мне на аську или мыло... чё надо шоб эт сделать или кто сделает?)...
устанавливает биты в регистре ebx в 0, на основе маски, содержащейся в esi, т.е. в ebx сбросятся те биты, которые установлены в 0 в esi