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

  #441  
Старый 25.11.2008, 21:44
Аватар для Jes
Jes
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме:
3371897

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

Банальный вопрос ,
FASM

Есть адрес Буфера MyBuffer (выделенного через HeapAlloc )

как обратиться по адресу внутри переменной содержащий адрес буфера? тоесть например как 10й байт самого буфера поменять на свой байт ?
FASM

Последний раз редактировалось Jes; 25.11.2008 в 21:48..
 
Ответить с цитированием

  #442  
Старый 25.11.2008, 21:53
Аватар для iv.
iv.
Moderator - Level 7
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме:
7134052

Репутация: 1204


По умолчанию

Jes, как-то так
mov byte ptr [MyBuffer+10], ah
 
Ответить с цитированием

  #443  
Старый 25.11.2008, 22:19
Аватар для Jes
Jes
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме:
3371897

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

fasm ptr принципиально понимать не хочет :/
 
Ответить с цитированием

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

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

fasm понимает название переменной как адрес.
То есть чтобы обратиться к переменной всегда нужны скобки
mov [x], 1
mov [x+5], 1
mov [x], al
mov eax, [x]

допустим в pBuf адрес буфера
mov esi, [pBuf]
mov al, [esi+10]

так в al будет десятый байт буфера

mov [esi+10], ah

так десятым байтом буфера станет содержимое ah

Последний раз редактировалось bons; 25.11.2008 в 23:20..
 
Ответить с цитированием

  #445  
Старый 28.11.2008, 20:44
Аватар для A2GIL
A2GIL
Познающий
Регистрация: 31.08.2007
Сообщений: 94
Провел на форуме:
422909

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

Ребят, кому не жалко и если есть свободное время. Думаю тем кто знает asm это будет достаточно тривиально..

на TASMе

на консоль вывести просто любые положительные и любые отрицательные числа...

Буду благодарен=)

[Актуально до 29.1108]
 
Ответить с цитированием

  #446  
Старый 29.11.2008, 02:50
Аватар для VERte][
VERte][
Moderator - Level 7
Регистрация: 17.05.2007
Сообщений: 220
Провел на форуме:
3013539

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

Цитата:
Сообщение от A2GIL  
Ребят, кому не жалко и если есть свободное время. Думаю тем кто знает asm это будет достаточно тривиально..

на TASMе

на консоль вывести просто любые положительные и любые отрицательные числа...

Буду благодарен=)

[Актуально до 29.1108]
уже писал в асю, напишу здесь вдруг кому понадобится.
что делает: выводит числа (процедура procoutnum делает форматный вывод), число находится в ax (передается в процедуру procoutnum) (в ax именно число, а не код символа)
фичи (для процедуры procoutnum):
dl - длина поля для вывода числа (если dl меньше количества цифр в числе, то число выводится примыкаясь к предыдущевыведенному, что-то на подобии форматного вывода ф-ции write в паскале)
dh = 1 формат вывода со знаком (-1 выведется как -1)
dh = 2 формат вывода без знака (-1 выведется как 65535)
в основной "процедуре" start два цикла для вывода чисел от 0 до 9 и от -1 до -10

Код:
stack segment stack
dw 128 dup(?)
stack ends

code segment
assume cs: code

procoutnum proc far
      push bp
      mov  bp,sp
      push ax
      push dx
      push si
      sub  sp,6         
      cmp  dh,1        
      jne  pon0
      cmp  ax,0
      jge  pon0
      mov  dh,2         
      neg  ax           
pon0: 
	  push dx          
      xor  si,si        
pon1: 
	  mov  dx,0         
      div  cs:ten     
      add  dl,'0'
      mov  byte ptr [bp-12+si],dl
      inc  si
      or   ax,ax
      jnz  pon1      
      pop  dx
      cmp  dh,2
      jne  pon2
      mov  byte ptr [bp-12+si],'-'
      inc  si
pon2: 
mov  dh,0       
      mov  ah,2        
pon21: 
	  cmp dx,si
      jle pon3
      push dx
      mov  dl,' '
      int  21h
      pop  dx
      dec  dx
      jmp  pon21
pon3: 
	  dec  si
      mov  dl,byte ptr [bp-12+si]
      int  21h
      or   si,si
      jnz  pon3
      add  sp,6
      pop  si
      pop  dx
      pop  ax
      pop  bp
      ret
ten   dw 10
procoutnum endp

start:
	mov cx, 10
	xor ax, ax
	mov dh,1
	mov dl, 2
	l:
	call procoutnum
	inc ax
	loop l
	mov cx, 10
	xor ax,ax
	k:
	dec ax
         call procoutnum
	loop k
	mov ah, 10h
	int 16h
	mov ah, 4ch
	int 21h
code ends
end start

Последний раз редактировалось VERte][; 29.11.2008 в 02:54..
 
Ответить с цитированием

  #447  
Старый 30.11.2008, 15:43
Аватар для Buffalon
Buffalon
Постоянный
Регистрация: 22.03.2008
Сообщений: 325
Провел на форуме:
1208132

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

Ребята я вообще по 0 в асемблере , нужно вот это написать

y=10 если x>5 или x=c

y= 12 в других случаях
 
Ответить с цитированием

  #448  
Старый 30.11.2008, 15:51
Аватар для iv.
iv.
Moderator - Level 7
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме:
7134052

Репутация: 1204


По умолчанию

Buffalon
Код:
cmp x, 5
jbe ELSE
cmp x, c
jne ELSE
mov y, 10
jmp CONT
ELSE: mov y, 12
CONT: ...
 
Ответить с цитированием

  #449  
Старый 01.12.2008, 20:09
Аватар для F&D
F&D
Участник форума
Регистрация: 06.11.2008
Сообщений: 208
Провел на форуме:
261838

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

Доброго времени суток. Надеюсь кто-то из здесь присутствубщих имел когда нибудь дело с отладочным стендом EV8031/AVR (V. 3.2), вот по нему у меня и лаба. Изначально задание было таким:
По нажатию кнопки SW15 включать «бегущий огонь» на линейке светодиодов HL1-HL8. Код этой проги вот:
Код:
CSEG
ORG 0
Continue:
          mov A, #10000000b
          mov DPTR, #0A006h
          movx @DPTR, A 		;отменить гашение знакомест С_инд
          mov A, #0h 		;записать в Акк. число 04
          mov DPTR, #0A006h 	;установить в DPTR адрес левой 
;пары знакомест С_инд
          movx @DPTR, A 		
          mov DPTR, #0B006h 	;установить в DPTR адрес правой 
;пары знакомест С_инд
          movx @DPTR, A 		
CALL ZAD 			;вызов подпрограммы задержки
          mov A, #10000000b
          mov DPTR, #0A006h
          movx @DPTR, A 	 ;погасить все знакоместа С_инд
         
CALL ZAD 		;вызов подпрограммы задержки
          mov A, #01000000b
          mov DPTR, #0A006h
          movx @DPTR, A 		
CALL ZAD	
          mov A, #00100000b
          mov DPTR, #0A006h
          movx @DPTR, A
CALL ZAD 			
          mov A, #00010000b
          mov DPTR, #0A006h
          movx @DPTR, A
CALL ZAD					
          mov A, #00001000b
          mov DPTR, #0A006h
          movx @DPTR, A  		
CALL ZAD		 			
          mov A, #00000100b
          mov DPTR, #0A006h
          movx @DPTR, A 		
          
CALL ZAD 			
          mov A, #00000010b
          mov DPTR, #0A006h
          movx @DPTR, A
 		
CALL ZAD 			
          mov A, #00000001b
          mov DPTR, #0A006h
          movx @DPTR, A
          CALL ZAD
          jmp Continue 	  ;переход на начало программы

ZAD: 				;подпрограмма задержки
          mov R1, #0FFh
C2:     mov R2, #0FFh
C4:     djnz R2, C4
          djnz R1, C2
          
ret 			;выход из подпрограммы
END
Но потом последовало дополнительное задание, звучит: При нажатии кнопки SW15 включать «бегущий огонь» на линейке светодиодов HL1-HL8, при еще одном нажатии "бегущий огонь" должен остановиться, при еще одно - дальше "побежать"....
думал две пары как сделать(даже на С++ пытался) - не могу...
Помогите плиз...
 
Ответить с цитированием

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

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

Ребят, есть вопрос по небольшой проге. вот код:

Код:
assume cs:code, ds:data
code segment
org	100h
start:

	lea bx, work
	mov cx, 10
	mov di, 0 ; index (row)

a0:
		push cx
		push di 
		
		mov cx, 10
		mov di, 0 ;index (column)
		
		a1:
			;mov [bx+di*2], di
			mov 2[bx][di], di

; start show number			
			mov	ax, 2[bx][di]
			
			push cx
			push di
			
			std                  	
			lea	di,StringEnd-1 		
				     		
			
			mov	cx,10          		
		iRepeat:
			xor	dx,dx          		
			div	cx             		
			xchg	ax,dx          	
			add	al,'0'         		
			stosb                  	
			xchg	ax,dx          	
			or	ax,ax          		
			jne	iRepeat         	

			mov	ah,9				
			lea	dx,[di+1]      		
			int	21h            		
			mov dx, offset Space
			int 21h
			
			pop di
			pop cx
			
			inc di
;end show number				
		
	loop a1
	
	pop di ;reincornate di, cx
	pop cx ;
	add bx, 10*2 ; go to next line
	
	push ax
	push dx
		
	mov ah, 9
	mov dx, offset nl
	int 21h
	
	pop dx
	pop ax
	
loop a0

	Space db " ", '$'
	String		db	5 dup (?),'$'  	; 5 byte for string
	StringEnd	=	$-1            	; Ukazatel' na simvol '$'

	work    dw     100 dup (0h)	;mass work <- 100 word's	
	nl      db 	    0Dh, 0Ah, '$'
code ends

data segment

ends data
	
end start
Здесь задается матрица 10*10, заполняется нулями, а затем в двойном цикле заполняется числами (0...9) и на каждой итерации элемент выводится в консоль.

Проблема в том, что выводится только 75 элементов, а не все 100 - в чем причина?)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы для новичков! (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