Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Лысков Игорь Витальевич
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »
Evgen aka Chuma
Статус: 6-й класс
Рейтинг: 0
∙ повысить рейтинг »
cain52
Статус: 3-й класс
Рейтинг: 0
∙ повысить рейтинг »

∙ Assembler

Номер выпуска:1786
Дата выхода:24.04.2021, 15:45
Администратор рассылки:Зенченко Константин Николаевич (Старший модератор)
Подписчиков / экспертов:2 / 25
Вопросов / ответов:1 / 1

Консультация # 200646: Здравствуйте есть код на nasm который выводит сигнатуру процессора десятичным числом через фунцию call printf %u как мне вывести в двоичном числе? x86 nasm windows консоль.
Код
global main

extern printf

extern ExitProcess@4

segment .data
	Not_Supp	db	'CPUID not supported', 10, 0
	Supp		db	'CPUID supported', 10, 0
	Strl		db	'Number function: %d', 10
			db	'ID: %s', 10, 0
	ModelStr	db	'signature %u %Xh', 10, 0
	;Number		dd	0
	Buf			times 32 db 0
	Buf_Length	equ	$ - Buf - 1
				db	0
	endline db 13,10,'$'    			

segment .code
main:
	pushfd
	pop eax
	mov ebx, eax
	xor eax, 200000h
	push eax
	popfd
	pushfd
	pop eax
	cmp eax, ebx
	jne CPUIDSupp
	push Not_Supp
	call printf
	jmp @exit
CPUIDSupp:
	push Supp
	call printf
	mov eax, 0
	cpuid
	mov dword [Buf], ebx
	mov dword [Buf+4], edx
	mov dword [Buf+8], ecx
	push Buf
	push eax
	push Strl
	call printf

	;push 32
	;push dword 0
	;push Buf
	;call memset

	mov eax, 1
	cpuid 
        push eax
	push eax
	push ModelStr
	call printf


@exit:
	push dword 0
	call ExitProcess@4

Дата отправки: 14.04.2021, 15:34
Вопрос задал: Степанов Иван /REDDS (4-й класс)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Старший модератор):

Здравствуйте, Степанов Иван /REDDS!

В строку преобразовывать не пробывали?

Зенченко Константин Николаевич


Смотрите код(FASM)
Код
format PE
entry begin
include 'WIN32AX.INC'
section '.code' code readable executable
begin:  mov     eax,1
        cpuid
        mov     ebx,eax
        mov     edi,dbBin
        mov     ecx,32
        push    edi
        push    eax
        cld
@@01:   xor     eax,eax
        shl     ebx,1
        adc     al,'0'
        stosb
        loop    @@01
        xor     eax,eax
        stosb
        pop     eax
        push    eax
        push    eax
        push    dbFormat
        call    [printf]
        xor     eax,eax
        call    ExitProcess
section '.data' data readable writable
dbFormat        db      'signature hex= %x oct= %o bin=  %s this all',0
dbBin           db      32 dup(?),0
section '.idata' import data readable
 
        library kernel, 'kernel32.dll',\
                msvcrt, 'msvcrt.dll'
 
        import kernel,\
               ExitProcess, 'ExitProcess'
 
        import msvcrt,\
               printf, 'printf'



Улачи!

Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 23.04.2021, 18:09

5
Огромное спасибо за ответ и уделенное время.
-----
Дата оценки: 23.04.2021, 23:11

Рейтинг ответа:

НЕ одобряю +1 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное