ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #451  
Старый 04.12.2008, 02:01
Аватар для StealthMaster
StealthMaster
Познающий
Регистрация: 03.12.2008
Сообщений: 56
Провел на форуме:
140714

Репутация: 29
Отправить сообщение для StealthMaster с помощью ICQ
По умолчанию

Ребят, помогите пожалуйста... Через консоль должно вводиться шестнадцатиричное число. Для ввода использую ReadConcole. Как работать с переменной, куда ввел все это, как с числом в шестнадцатиричной системе, а не как со строкой...

Использую MASM 10.
 
Ответить с цитированием

  #452  
Старый 04.12.2008, 04:46
Аватар для bons
bons
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме:
1777055

Репутация: 347
По умолчанию

Цитата:
Ребят, помогите пожалуйста... Через консоль должно вводиться шестнадцатиричное число. Для ввода использую ReadConcole. Как работать с переменной, куда ввел все это, как с числом в шестнадцатиричной системе, а не как со строкой...
вот пример ввода строки, содержащей 16-ое число. процедура Ascii2Hex переводит ее именно в числовой вид

Код:
.386
.model flat, stdcall
option casemap :none

include c:\masm32\include\windows.inc
include c:\masm32\include\kernel32.inc
includelib c:\masm32\lib\kernel32.lib

include c:\masm32\include\user32.inc
includelib c:\masm32\lib\user32.lib

Ascii2Hex	PROTO :DWORD
cprintf 	PROTO C :DWORD, :DWORD, :VARARG

.data
	msgStart	db "# Enter num: "
	outformat	db "%u", 0
	buf		db 128 dup (0)	
.data?
	hOut	dd ?
	hIn	dd ?
	bw	dd ?

.code
start:
	invoke GetStdHandle, STD_INPUT_HANDLE
	mov hIn, eax
	invoke GetStdHandle, STD_OUTPUT_HANDLE
	mov hOut, eax
	
	invoke WriteFile, eax, offset msgStart, sizeof msgStart, offset bw, 0
	
	invoke ReadFile, hIn, offset buf, sizeof buf - 1, offset bw, 0
	mov esi, bw
	mov BYTE PTR [buf + esi - 2], 0
	invoke Ascii2Hex, offset buf
	invoke cprintf, hOut, offset outformat, eax
	invoke ExitProcess, 0
	
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Перевети hex-строку в число
Ascii2Hex proc uses ebx esi lpHexString:DWORD
     mov esi, lpHexString
     xor eax, eax
     xor ebx, ebx
@@:
     mov al, BYTE PTR [esi]
     test al, al
     jz @exit
     shl ebx, 4
     .IF al > 040h
         sub al, 007h
     .ENDIF
     xor al, 030h
     or ebx, eax
     inc esi
     jmp @B
@exit:
     mov eax, ebx
     ret
Ascii2Hex endp

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Печатать форматированный текст в консоли
cprintf proc C hOutHandle:DWORD, lpFormat:DWORD, arglist:VARARG
LOCAL locbuf[2048]	:BYTE
LOCAL dwWritten		:DWORD
	invoke wvsprintf, addr locbuf, lpFormat, addr arglist
	mov ecx, eax
	invoke WriteFile, hOutHandle, addr locbuf, ecx, addr dwWritten, 0
	ret
cprintf endp
end start
 
Ответить с цитированием

  #453  
Старый 05.12.2008, 00:47
Аватар для 0verbreaK
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

Kaas бинарь свой скинь
 
Ответить с цитированием

  #454  
Старый 07.12.2008, 02:10
Аватар для lll6
lll6
Познающий
Регистрация: 01.03.2008
Сообщений: 99
Провел на форуме:
613745

Репутация: 51
По умолчанию

Ребята, кто может помочь изучающему асм немного? Литература конечно есть, но это немного не то, практики нет, в которой и познаётся теория. Если вдруг в ком проснулось альтруистичное начало - чиркните мне в icq 192693716
 
Ответить с цитированием

  #455  
Старый 11.12.2008, 04:41
Аватар для StealthMaster
StealthMaster
Познающий
Регистрация: 03.12.2008
Сообщений: 56
Провел на форуме:
140714

Репутация: 29
Отправить сообщение для StealthMaster с помощью ICQ
По умолчанию

Подскажите, пожалуйста, как работать с введенной строкой как с десятичным числом?
 
Ответить с цитированием

  #456  
Старый 11.12.2008, 09:59
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

также как и с обычными числами, но предварительно переведя его из строки в число.
Алгоритм перевода примерно такой:
1) получаешь длинну строки
2) перебираешь поочереди каждый символ.
3) отнимаешь от символа 48 и получаешь какбыла непосредственно значение.
4) умножаешь число полученное на предудущем этапе на 10 и к нему прибавляешь то, что получилось от символа.
5) повторяешь заного всё пока недостигнут конец строки
 
Ответить с цитированием

  #457  
Старый 16.12.2008, 03:36
Аватар для reversys
reversys
Участник форума
Регистрация: 22.11.2007
Сообщений: 159
Провел на форуме:
732568

Репутация: 156
По умолчанию

Можно я тоже попользуюсь коллективным разумом античата?
Цель - написать на ассемблере программу получающую состояние ком порта и работающую в досе.
Как по вашему это наиболее грамотно сделать? Вопрос и о самой программе и об инфраструктуре.

Сейчас сделал виртуалбокс с досом, попытался настроить так чтобы com порт виртуалки смотрел в COM1 основной машины, но vmbox ругнулся и сказал что прав нет. Это из-за того что XP на основной машине не позволяет работать с портами напрямую?

И ещё: если в старый комп с досом воткнуть в com порт мышь, не ставя при этом драйверов - можно ли будет в своей программе (использующей прерывание 14h например) видеть изменение состояния ком порта? А если поставить дрова останется ли возможность работать с портом напрямую? Есть ли разница в данном случае где это всё будет работать в win98 или чистом dos?

Вобщем любые идеи, ссылки, исходники приветствуются, а хорошие - плюсуются.
Заранее спасибо.

Последний раз редактировалось reversys; 16.12.2008 в 05:05..
 
Ответить с цитированием

  #458  
Старый 19.12.2008, 15:18
Аватар для xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
Познающий
Регистрация: 20.01.2008
Сообщений: 65
Провел на форуме:
664107

Репутация: 25
Отправить сообщение для xxxxxxxxxxxxxxx с помощью ICQ
По умолчанию

мне нужно обьяснить как работают кусочки кода (коментами если можна) место откуда нужно писать коментарии в исходнике там немножко - помогите кто может((

Код:
# Переменные
a:
 	.long 1
b:
	.long 2
c:
	.long 3
d:
	.long 4
cc:
	.byte 10


.text
LC0:
	.ascii "a=%d b=%d c=%d d=%d\12\0"
LC1:
	.ascii "a=%d b=%d c=%d d=%d\12\0"

.globl _xxx
	.def	_xxx;	.scl	2;	.type	32;	.endef
_xxx:
	pushl	%ebp
movl	%esp, %ebp
	subl	$8, %esp
	subl	$12, %esp
	pushl	d
	pushl	c
	pushl	b
	pushl	a
	pushl	$LC0
	call	_printf
	addl	$32, %esp
	leave
	ret

.globl _func
	.def	_func;	.scl	2;	.type	32;	.endef
_func:
	pushl	%ebp
	movl	%esp, %ebp

	movl %eax, %ecx

	imul %eax
	imul %ecx
	movl %eax,%edx
	movl $2,%eax
	mull %ecx
	#xor %edx, %edx
	subl %eax, %edx
	incl %edx
	movl %edx,%eax
	pop %ebp
	leave
	ret
.globl _func1
	.def	_func1;	.scl	2;	.type	32;	.endef

_func1:
	pushl	%ebp
	movl	%esp, %ebp

	movl 16(%ebp), %eax
	imul %eax
	movl 12(%ebp), %ebx
	imul %ebx
	movl %eax, %ecx
	movl 16(%ebp), %eax
	movl 8(%ebp), %ebx
	imul %ebx
	addl %ecx, %eax
	movl 4(%ebp), %edx
	subl %edx, %eax
	pop %ebp
	leave
	ret


.globl _main
	.def	_main;	.scl	2;	.type	32;	.endef

_main:
	pushl	%ebp
	movl	%esp, %ebp
#Начиная отсюда нужно написать обьяснения как #работают задачки

#Выполнить сравнение двух чисел a и b: если a>b, то #a=a-b; если a=b, то a=2*a; если a<b, то b=b-a.

movl $20, %ecx   
xorl %ebx, %ebx  
h:               
movl %ecx, %eax  
imul %eax        
addl %eax, %ebx  
movl %ebx, a    
loop h
call _xxx

#Выполнить сравнение двух чисел a и b: если a>b, то #a=a-b; если a=b, то a=2*a; если a<b, то b=b-a.

movl a, %eax
movl b, %ebx
cmpl %ebx, %eax   

jg v
je x
jl z
v:subl %ebx, %eax
movl %eax, a
jmp s1
x:movl a, %eax
imul $2, %eax
movl %eax, a
jmp s1
z:mo
vl b,%ebx
movl a, %eax
subl %eax, %ebx
movl %ebx, b
jmp s1
s1:
call _xxx

#Создать функцию y(x)=x3-2*x+1, которая через #регистр eax получает аргумент и возвращает #результат.

movl a, %eax
call _func
movl %eax, a
call _xxx

#Создать функцию y(x,a,b,c)=a*x2+b*x-c, которая #через стек получает аргументы x, a, b, c и возвращает #результат

pushl x
pushl a
pushl b
pushl c
call _func1
movl %eax, c
addl $16,%esp
call _xxx

#Вычислить N! (N=30) двумя способами: используя цикл, #рекурсию.
movl $1, %eax
movl $1, %ebx
x3:
cmpl 30, %eax
jle x1
jg x2
x1:imul %eax, %ebx
incl %ebx
jmp x3
x2:m
ovl %eax, d 
call  _xxx
 
Ответить с цитированием

  #459  
Старый 22.12.2008, 02:15
Аватар для Kaas
Kaas
Познающий
Регистрация: 13.02.2007
Сообщений: 41
Провел на форуме:
137010

Репутация: 26
По умолчанию

парни, есть проблема с открытием файла (tasm)


1. делаю файл hook, кладу в папку где лежит мой скомпилированный .com
2. в самой проге основной код такой:

Код:
mov ax, 3D02h ;открыть файл на чтение и запись
mov dx, offset fn
int 21h

...
fn db "hook",'0'  ;имя файла
после этого в ax оказывается цифра 05h что, судя по зубкову, означает - доступ запрещен.

Почему??
 
Ответить с цитированием

  #460  
Старый 22.12.2008, 02:31
Аватар для izlesa
izlesa
Участник форума
Регистрация: 03.01.2008
Сообщений: 156
Провел на форуме:
414311

Репутация: 110
Отправить сообщение для izlesa с помощью ICQ
По умолчанию

2Kaas
бугога ))) имя файла у тебя hook0[много всякого мусора]x00
Делай так :

Код:
fn db 'hook',0
Хотя странно, должен был вернуть 02h :/
Открой отладчик (codeview хотя бы) и посмотри, что у тебя в регистрах на каждом шаге.
Да ещё, когда ты запускал прогу свою, был ли открыт гденибудь ещё этот файл ... пока всё, что пришло в мою больную голову :\
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы для новичков! (faq) PEPSICOLA С/С++, C#, Delphi, .NET, Asm 92 14.05.2010 17:59
Обзор программ для очистки жёсткого диска v1ru$ Soft - Windows 21 17.01.2010 21:07
ОС с нуля z01b С/С++, C#, Delphi, .NET, Asm 36 03.07.2008 15:30
Лучший софт для Linux _-Ramos-_ Soft - *nix 11 15.01.2008 12:08
Взлом Unix а silveran *nix 4 21.12.2005 22:46



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ