HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 11.12.2008, 04:41
StealthMaster
Познающий
Регистрация: 03.12.2008
Сообщений: 56
С нами: 9176827

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

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

  #2  
Старый 11.12.2008, 09:59
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

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

  #3  
Старый 16.12.2008, 03:36
reversys
Участник форума
Регистрация: 22.11.2007
Сообщений: 159
С нами: 9721086

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

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

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

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

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

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

  #4  
Старый 19.12.2008, 15:18
xxxxxxxxxxxxxxx
Познающий
Регистрация: 20.01.2008
Сообщений: 65
С нами: 9634990

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

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

Код:
# Переменные
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
 
Ответить с цитированием

  #5  
Старый 22.12.2008, 02:15
Kaas
Познающий
Регистрация: 13.02.2007
Сообщений: 41
С нами: 10125997

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

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


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

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

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

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

  #6  
Старый 22.12.2008, 02:31
izlesa
Участник форума
Регистрация: 03.01.2008
Сообщений: 156
С нами: 9660439

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

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

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

  #7  
Старый 07.01.2009, 22:09
ronald
Участник форума
Регистрация: 27.03.2008
Сообщений: 288
С нами: 9538880

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

народ, у меня проблема, причём очень странная:
запуская ml.exe имя файла /AT
я получаю через 3-5 секунд ответ: "Программа не умещается в памяти"
вот код программы
Код:
CSEG segment
org 100h
Begin:
mov ah,9
mov dx,offset Message
int 21h
int 20h
Message db 'Hello, world!$'
CSEG ends
end Begin
Помогите пожалуйста разбраться с этой х***й
ноут Asus EEE PC 9
 
Ответить с цитированием

  #8  
Старый 08.01.2009, 18:21
dinar_007
Флудер
Регистрация: 18.01.2005
Сообщений: 2,298
С нами: 11215046

Репутация: 1844


По умолчанию

Цитата:
Сообщение от ronald  
народ, у меня проблема, причём очень странная:
запуская ml.exe имя файла /AT
я получаю через 3-5 секунд ответ: "Программа не умещается в памяти"
вот код программы
Код:
CSEG segment
org 100h
Begin:
mov ah,9
mov dx,offset Message
int 21h
int 20h
Message db 'Hello, world!$'
CSEG ends
end Begin
Помогите пожалуйста разбраться с этой х***й
ноут Asus EEE PC 9
Ссори за нескромный вопрос.. Ты ком файл пытаешься в Висте запустить?
 
Ответить с цитированием

  #9  
Старый 09.01.2009, 17:05
SHP!ON
Познающий
Регистрация: 07.09.2005
Сообщений: 30
С нами: 10880557

Репутация: 2
Question

Я неособо разбираюсь в masm и не могу скомпилировать данный код, чтоб был exe. Кто может помочь ? Может что дописать нужно. Алгоритм: md5 hashing algo.

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

.data?
MD5HashBuf db 64 dup(?)
MD5Digest dd 4 dup(?)
MD5Len dd ?
MD5Index dd ? 
  
.code
MD5FF macro dwA, dwB, dwC, dwD, locX, rolS, constAC
	mov	edi,dwC
	xor	edi,dwD
	and	edi,dwB
	xor	edi,dwD
	add	dwA,[locX]
	lea	dwA,[edi+dwA+constAC]
	rol	dwA,rolS
	add	dwA,dwB
endm

MD5GG macro dwA, dwB, dwC, dwD, locX, rolS, constAC
	mov	edi,dwC
	xor	edi,dwB
	and	edi,dwD
	xor	edi,dwC
	add dwA,[locX]
	lea	dwA,[edi+dwA+constAC]
	rol	dwA,rolS
	add	dwA,dwB
endm

MD5HH macro dwA, dwB, dwC, dwD, locX, rolS, constAC
	mov	edi,dwC
	xor	edi,dwD
	xor	edi,dwB
	add dwA,[locX]
	lea	dwA,[dwA+edi+constAC]
	rol	dwA,rolS
	add	dwA,dwB
endm

MD5II macro dwA, dwB, dwC, dwD, locX, rolS, constAC
	mov edi,dwD
	xor edi,-1
	or edi,dwB
	xor edi,dwC
	add dwA,[locX]
	lea dwA,[edi+dwA+constAC]
	rol dwA,rolS
	add dwA,dwB
endm

align dword
MD5Transform proc
	pushad
	mov esi,offset MD5Digest
	mov edi,offset MD5HashBuf	
	mov eax,[esi+0*4]
	mov ebx,[esi+1*4]
	mov ecx,[esi+2*4]
	mov ebp,edi
	mov edx,[esi+3*4]
	;=================================================  =============
	MD5FF eax, ebx, ecx, edx, dword ptr [ebp+ 0*4],  7, 0D76AA478H
	MD5FF edx, eax, ebx, ecx, dword ptr [ebp+ 1*4], 12, 0E8C7B756H
	MD5FF ecx, edx, eax, ebx, dword ptr [ebp+ 2*4], 17, 0242070DBH
	MD5FF ebx, ecx, edx, eax, dword ptr [ebp+ 3*4], 22, 0C1BDCEEEH
	MD5FF eax, ebx, ecx, edx, dword ptr [ebp+ 4*4],  7, 0F57C0FAFH
	MD5FF edx, eax, ebx, ecx, dword ptr [ebp+ 5*4], 12, 04787C62AH
	MD5FF ecx, edx, eax, ebx, dword ptr [ebp+ 6*4], 17, 0A8304613H
	MD5FF ebx, ecx, edx, eax, dword ptr [ebp+ 7*4], 22, 0FD469501H
	MD5FF eax, ebx, ecx, edx, dword ptr [ebp+ 8*4],  7, 0698098D8H
	MD5FF edx, eax, ebx, ecx, dword ptr [ebp+ 9*4], 12, 08B44F7AFH
	MD5FF ecx, edx, eax, ebx, dword ptr [ebp+10*4], 17, 0FFFF5BB1H
	MD5FF ebx, ecx, edx, eax, dword ptr [ebp+11*4], 22, 0895CD7BEH
	MD5FF eax, ebx, ecx, edx, dword ptr [ebp+12*4],  7, 06B901122H
	MD5FF edx, eax, ebx, ecx, dword ptr [ebp+13*4], 12, 0FD987193H
	MD5FF ecx, edx, eax, ebx, dword ptr [ebp+14*4], 17, 0A679438EH
	MD5FF ebx, ecx, edx, eax, dword ptr [ebp+15*4], 22, 049B40821H
	;=================================================  =============
	MD5GG eax, ebx, ecx, edx, dword ptr [ebp+ 1*4],  5, 0F61E2562H
	MD5GG edx, eax, ebx, ecx, dword ptr [ebp+ 6*4],  9, 0C040B340H
	MD5GG ecx, edx, eax, ebx, dword ptr [ebp+11*4], 14, 0265E5A51H
	MD5GG ebx, ecx, edx, eax, dword ptr [ebp+ 0*4], 20, 0E9B6C7AAH
	MD5GG eax, ebx, ecx, edx, dword ptr [ebp+ 5*4],  5, 0D62F105DH
	MD5GG edx, eax, ebx, ecx, dword ptr [ebp+10*4],  9, 002441453H
	MD5GG ecx, edx, eax, ebx, dword ptr [ebp+15*4], 14, 0D8A1E681H
	MD5GG ebx, ecx, edx, eax, dword ptr [ebp+ 4*4], 20, 0E7D3FBC8H
	MD5GG eax, ebx, ecx, edx, dword ptr [ebp+ 9*4],  5, 021E1CDE6H
	MD5GG edx, eax, ebx, ecx, dword ptr [ebp+14*4],  9, 0C33707D6H
	MD5GG ecx, edx, eax, ebx, dword ptr [ebp+ 3*4], 14, 0F4D50D87H
	MD5GG ebx, ecx, edx, eax, dword ptr [ebp+ 8*4], 20, 0455A14EDH
	MD5GG eax, ebx, ecx, edx, dword ptr [ebp+13*4],  5, 0A9E3E905H
	MD5GG edx, eax, ebx, ecx, dword ptr [ebp+ 2*4],  9, 0FCEFA3F8H
	MD5GG ecx, edx, eax, ebx, dword ptr [ebp+ 7*4], 14, 0676F02D9H
	MD5GG ebx, ecx, edx, eax, dword ptr [ebp+12*4], 20, 08D2A4C8AH
	;=================================================  =============
	MD5HH eax, ebx, ecx, edx, dword ptr [ebp+ 5*4],  4, 0FFFA3942H
	MD5HH edx, eax, ebx, ecx, dword ptr [ebp+ 8*4], 11, 08771F681H
	MD5HH ecx, edx, eax, ebx, dword ptr [ebp+11*4], 16, 06D9D6122H
	MD5HH ebx, ecx, edx, eax, dword ptr [ebp+14*4], 23, 0FDE5380CH
	MD5HH eax, ebx, ecx, edx, dword ptr [ebp+ 1*4],  4, 0A4BEEA44H
	MD5HH edx, eax, ebx, ecx, dword ptr [ebp+ 4*4], 11, 04BDECFA9H
	MD5HH ecx, edx, eax, ebx, dword ptr [ebp+ 7*4], 16, 0F6BB4B60H
	MD5HH ebx, ecx, edx, eax, dword ptr [ebp+10*4], 23, 0BEBFBC70H
	MD5HH eax, ebx, ecx, edx, dword ptr [ebp+13*4],  4, 0289B7EC6H
	MD5HH edx, eax, ebx, ecx, dword ptr [ebp+ 0*4], 11, 0EAA127FAH
	MD5HH ecx, edx, eax, ebx, dword ptr [ebp+ 3*4], 16, 0D4EF3085H
	MD5HH ebx, ecx, edx, eax, dword ptr [ebp+ 6*4], 23, 004881D05H
	MD5HH eax, ebx, ecx, edx, dword ptr [ebp+ 9*4],  4, 0D9D4D039H
	MD5HH edx, eax, ebx, ecx, dword ptr [ebp+12*4], 11, 0E6DB99E5H
	MD5HH ecx, edx, eax, ebx, dword ptr [ebp+15*4], 16, 01FA27CF8H
	MD5HH ebx, ecx, edx, eax, dword ptr [ebp+ 2*4], 23, 0C4AC5665H
	;=================================================  =============
	MD5II eax, ebx, ecx, edx, dword ptr [ebp+ 0*4],  6, 0F4292244H
	MD5II edx, eax, ebx, ecx, dword ptr [ebp+ 7*4], 10, 0432AFF97H
	MD5II ecx, edx, eax, ebx, dword ptr [ebp+14*4], 15, 0AB9423A7H
	MD5II ebx, ecx, edx, eax, dword ptr [ebp+ 5*4], 21, 0FC93A039H
	MD5II eax, ebx, ecx, edx, dword ptr [ebp+12*4],  6, 0655B59C3H
	MD5II edx, eax, ebx, ecx, dword ptr [ebp+ 3*4], 10, 08F0CCC92H
	MD5II ecx, edx, eax, ebx, dword ptr [ebp+10*4], 15, 0FFEFF47DH
	MD5II ebx, ecx, edx, eax, dword ptr [ebp+ 1*4], 21, 085845DD1H
	MD5II eax, ebx, ecx, edx, dword ptr [ebp+ 8*4],  6, 06FA87E4FH
	MD5II edx, eax, ebx, ecx, dword ptr [ebp+15*4], 10, 0FE2CE6E0H
	MD5II ecx, edx, eax, ebx, dword ptr [ebp+ 6*4], 15, 0A3014314H
	MD5II ebx, ecx, edx, eax, dword ptr [ebp+13*4], 21, 04E0811A1H
	MD5II eax, ebx, ecx, edx, dword ptr [ebp+ 4*4],  6, 0F7537E82H
	MD5II edx, eax, ebx, ecx, dword ptr [ebp+11*4], 10, 0BD3AF235H
	MD5II ecx, edx, eax, ebx, dword ptr [ebp+ 2*4], 15, 02AD7D2BBH
	MD5II ebx, ecx, edx, eax, dword ptr [ebp+ 9*4], 21, 0EB86D391H
	;=================================================  =============
	add [esi+0*4],eax	; update digest
	add [esi+1*4],ebx
	add [esi+2*4],ecx
	add [esi+3*4],edx
	popad
	retn
MD5Transform endp

MD5BURN macro
	xor eax,eax
	mov MD5Index,eax
	mov edi,Offset MD5HashBuf
	mov ecx,(sizeof MD5HashBuf)/4
	rep stosd
endm

align dword
MD5Init proc uses edi
	xor eax, eax
	mov MD5Len,eax
	MD5BURN
	mov eax,offset MD5Digest
	mov dword ptr [eax+0*4],067452301h
	mov dword ptr [eax+1*4],0EFCDAB89h
	mov dword ptr [eax+2*4],098BADCFEh
	mov dword ptr [eax+3*4],010325476h
	ret
MD5Init endp

align dword
MD5Update proc uses esi edi ebx lpBuffer:dword, dwBufLen:dword
	mov ebx,dwBufLen
	mov esi,lpBuffer
	add MD5Len,ebx
	.while ebx
		mov eax,MD5Index
		mov ecx,64
		sub ecx,eax
		lea edi,[MD5HashBuf+eax]	
		.if ecx <= ebx
			sub ebx,ecx
			rep movsb
			call MD5Transform
			MD5BURN
		.else
			mov ecx,ebx
			rep movsb
			add MD5Index,ebx
			.break
		.endif
	.endw
	ret
MD5Update endp

align dword
MD5Final proc uses esi edi
	mov ecx, MD5Index
	mov byte ptr [MD5HashBuf+ecx],80h
	.if ecx >= 56
		call MD5Transform
		MD5BURN
	.endif
	mov eax,MD5Len
	xor edx,edx
	shld edx,eax,3
	shl eax,3
	mov dword ptr [MD5HashBuf+56],eax
	mov dword ptr [MD5HashBuf+60],edx
	call MD5Transform
	mov eax,offset MD5Digest	
	ret
MD5Final endp

end
 
Ответить с цитированием

  #10  
Старый 15.01.2009, 18:39
ronald
Участник форума
Регистрация: 27.03.2008
Сообщений: 288
С нами: 9538880

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

Цитата:
Ссори за нескромный вопрос.. Ты ком файл пытаешься в Висте запустить?
Чур меня, чур! Нет конешно!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы для новичков! (faq) PEPSICOLA С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 92 14.05.2010 17:59
ОС с нуля z01b С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 36 03.07.2008 15:30



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


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




ANTICHAT ™ © 2001- Antichat Kft.