Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2010, 21:19   #1
Нара
 
Аватар для Нара
 
Регистрация: 21.12.2010
Сообщений: 3
Восклицание определить разрядность процессора (32 или 64)

только начала разбираться в "машинном языке", никак не могу написать программу.. Вот 2 моих злосчастных пробника:

Код:
Title pod
stk	segment para public 'stack'
		db	256 dup(0)
stk	ends
code	segment para public 'code'
assume  cs:code, ds: data,ss:stk
main	proc
	mov	ax,data
	mov	ds,ax
	mov 	ax,z
	mov	dx,es
	sub	ax,dx
	mov	bx,ax
	mov	ah,4ah
	int	21h
inp:
	mov	ah,09h
	lea	dx,great
	int	21h
more:
	mov	ah,08h
	mov	al,01h
	int	21h

	cmp	al,'1'
	je	Is64bitAvail
	cmp	al,'2'
	je	Is32bitAvail
	cmp	al,'3'
	je	exit
	jmp	more	
Is64bitAvail: 
	  mov eax, $80000001
  cpuid
  mov eax, 1
  shl eax, 29
  and edx, eax
  mov eax, edx
xor     al,30h
	jmp	inp
Is32bitAvail:	
 mov eax, $8001
  cpuid
  mov eax, 1
  shl eax, 29
  and edx, eax
  mov eax, edx
or ax,3030h
	int	21h

	jmp	inp

exit:	
	mov	ax,4c00h
	int	21h
code	ends
main	endp
data		segment para public 'data'

input		db	80 dup(0)
strlen		dw	?
handle		dw	?
great		db	'1 - 64; 2 - 32; 3 - vuxod',0dh,0ah,'$'
z		segment
z		ends
end	main
и второй вариант (с файлом .lib):

Код:
Title	1pod (EXE)						
StackSg 	Segment PARA STACK 'Stack'
DW 		64 DUP(?)
StackSg 	ENDS
				
DataSg 	Segment PARA 'Data'

c      db '1-32,2-64, 3-vuxod',0dh,0ah,'$'

 t     db ' podd32 $'
 s     db ' podd64 $'

DataSg 	ENDS
CodeSg 	Segment PARA PUBLIC 'Code'
Begin		Proc	FAR
Assume CS:CodeSg, DS:DataSg, SS:StackSg
         push      ds
         mov       ax,0
         push      ax
         mov       ax,dataSg
         mov       ds,ax   

	 if1
	 include 1bp.lib
	 endif      
	
inp: WRITE c
get_key:
 mov ah,08h
         READ
     cmp al,'1'
         je s1
	 cmp al,'2'
         je s2        
     cmp al,'3'
         je s3
         jne       get_key
         
		 s1: 
	 Is32bitAvail
	 WRITE t
jmp inp
          s2: 
	 Is64bitAvail
	 WRITE s
jmp inp
         s3: 
mov	ax,4c00h
int	21h 

Ret
Begin		ENDP
CodeSg 	ENDS
END Begin


Текст макроопределений:

READ MACRO
mov ah,01h
int 21h
ENDM

WRITE MACRO c
mov ah,09h
lea dx,c
int 21h
ENDM

Is64bitAvail MACRO
asm
  mov eax, $80000001
  cpuid
  mov eax, 1
  shl eax, 29
  and edx, eax
  mov eax, edx
xor     al,30h
ENDM

Is32bitAvail MACRO
asm
  mov eax, $8001
  cpuid
  mov eax, 1
  shl eax, 29
  and edx, eax
  mov eax, edx
or ax,3030h
ENDM
Ребят, помогите...

Последний раз редактировалось rpy3uH; 24.12.2010 в 16:47.
Нара вне форума Ответить с цитированием
Старый 24.12.2010, 16:50   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

проблема в чём состоит?
rpy3uH вне форума Ответить с цитированием
Старый 24.12.2010, 19:31   #3
Нара
 
Аватар для Нара
 
Регистрация: 21.12.2010
Сообщений: 3
По умолчанию

в том, что все это не пашет у меня =)
Нара вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
8-битные приставки и пистолет Hollander Свободное общение 37 17.08.2011 17:50
8-ми битные знаковые регистры. Их сравнение. Tronix Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 01.09.2010 22:03
Определить тождественность функции(информатика) WInnER2192 Помощь студентам 3 11.06.2010 22:17
Определить время работы функции Crookers Общие вопросы Delphi 4 28.04.2010 11:13
Помогите определить тип функции RNT Помощь студентам 10 14.06.2009 23:22