Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

01.04.2010, 13:33
|
|
Познающий
Регистрация: 22.02.2010
Сообщений: 30
Провел на форуме: 188597
Репутация:
15
|
|
Код:
data segment
mass db 1,14,4,9,5,21,3,17,12,100
data ends
code segment assume cs:code, ds:data
start:
mov ax, data
mov ds, ax ; Загрузить сегментный адрес данных
lea bx, mass ; Загрузить адрес смещения массива
mov cx, 10 ; Установить счетчик повторений цикла
mov al, 6 ; Первый элемент массива в Аккумулятор
xor dx, dx
beg:
cmp byte [bx], al ; Сравнить текущий элемент массива с максимальным
jg no ; он больше
add dl, byte [bx] ; сумма
jnc no ; если сумма укладывается в размерность байт, то переход на no
adc dh, 0 ; иначе корректируем сумму
no:
inc bx ; Следующий элемент массива
loop beg
quit:
mov ax, 4C00h ; Код завершения 0
int 21h ; Выход в DOS
code ends
end start
может где ошибся, не тестировал
Последний раз редактировалось fluffylion; 01.04.2010 в 13:36..
|
|
|

01.04.2010, 13:45
|
|
Новичок
Регистрация: 12.03.2008
Сообщений: 6
Провел на форуме: 12042
Репутация:
0
|
|
Cпасибо большое обоим  помогли разобраться  +1
|
|
|

05.04.2010, 19:20
|
|
Познающий
Регистрация: 28.02.2010
Сообщений: 35
Провел на форуме: 41688
Репутация:
0
|
|
Может кто нибудь дать пример программы на ассме, переводящей введенное числовое выражение в обратную польскую запись ?
|
|
|

08.04.2010, 21:04
|
|
Новичок
Регистрация: 12.03.2008
Сообщений: 6
Провел на форуме: 12042
Репутация:
0
|
|
Найти среднее арифметическое квадратов ненулевых элементов последовательности. Массив слов. // как это сделать на asm ? cpu 80486 16 ти разрядный.... при помощи цикла
|
|
|

11.04.2010, 01:33
|
|
Новичок
Регистрация: 02.12.2009
Сообщений: 16
Провел на форуме: 101734
Репутация:
21
|
|
Сообщение от wm2
Найти среднее арифметическое квадратов ненулевых элементов последовательности. Массив слов. // как это сделать на asm ? cpu 80486 16 ти разрядный.... при помощи цикла
Код:
.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
как-то так
Последний раз редактировалось becensed; 11.04.2010 в 01:43..
|
|
|

16.04.2010, 08:56
|
|
Новичок
Регистрация: 15.01.2009
Сообщений: 3
Провел на форуме: 4062
Репутация:
0
|
|
требуется поправить
Сообщение от becensed
Код:
....
mov ax, word ptr mas[si]
imul ax
add bx, dx
nxt:
...
как-то так
|
|
|

17.04.2010, 18:18
|
|
Постоянный
Регистрация: 06.06.2007
Сообщений: 575
Провел на форуме: 1180737
Репутация:
180
|
|
что делает эта опрация
add -0x3f85fbc0(,%ebx,4),%esi
AT&T (вроде этот в linux ядре используется)
|
|
|

18.04.2010, 14:11
|
|
Новичок
Регистрация: 03.12.2008
Сообщений: 3
Провел на форуме: 27446
Репутация:
0
|
|
В коде морфнаха заметил очень интересные строки
Код:
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 байтах
Код:
.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)
Сей код размещен специально чтобы морфнахом не криптовали пинчи? или есть какой то сокральный смысл?))
|
|
|

18.04.2010, 17:43
|
|
Познающий
Регистрация: 29.03.2009
Сообщений: 87
Провел на форуме: 2185909
Репутация:
308
|
|
Помогите пожалуйста - надо написать на асме:
Ввести строку символов. Вывести сумму цифр в строке, если они там есть.
|
|
|

18.04.2010, 22:34
|
|
Новичок
Регистрация: 18.04.2010
Сообщений: 3
Провел на форуме: 20888
Репутация:
10
|
|
Сообщение от [underwater]
Помогите пожалуйста - надо написать на асме:
Простейшее задание. Сорцы на MASM ТУТ . Пароль к архиву - Antichat.ru
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|