purebasic.info

PureBasic forum
Текущее время: Пт июл 10, 2020 3:59 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: Чт май 14, 2020 12:21 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1025
Благодарил (а): 2 раз.
Поблагодарили: 59 раз.
Пункты репутации: 9
Вывод значений из памяти ввиде строкового HEX ,либо сразу список столбцом по разным заданным параметрам либо последовательно вызывая процедуру с другими аргументами. :roll:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
 
;Автор под псевдонимом Сергейчик (c)
 
#RazmerMemory=$80000000
#RazmerByte=1
#RazmerWord=2
#RazmerDword=4
#RazmerQword=8
 
Global STROKAm.s=Space(500)
Procedure.i GetMemoryHex(*bait,type.i,type2.i);Вывод байтов  из памяти в строковый буфер как hex значения в символьном юникоде utf-16
;
!PUSH esi
!PUSH edi
!PUSH ecx
;
!MOV dword edi,[v_STROKAm];Загружаем адрес буфера глобальной строковой переменной для вывода
!mov dword esi,[p.p_bait+12]
!
!and dword [p.v_type2+12],$7FFFFFFF
!jz netr
!mov dword ecx,[p.v_type+12]
!imul dword ecx,[p.v_type2+12]
!mov dword [p.v_type+12],ecx
!netr:
!add dword [p.v_type+12],esi
;
!mov dword ecx,[p.v_type2+12]
!rkb6:
!
!movzx eax,byte ptr esi+ecx-1;al;расширяем до 32 бит с старшими быйтми с нулями=32 битное число
!mov dword eax,[Table_HEX+eax*4];*4 смещение в таблице по полю dword(2 символа )
;
!MOV dword[edi],eax
!add dword edi,4
;
!sub dword ecx,1
!cmp dword ecx,0
!jnz rkb6
!mov dword ecx,[p.v_type2+12]
!MOV dword[edi],0a000dh
!add dword edi,4
 
!add esi,[p.v_type2+12]
!cmp dword esi,[p.v_type+12]
!jl rkb6
;
!mov word [edi],0h
!mov dword eax,esi
!pop ecx
!Pop edi
!Pop esi
;
!retn 12
;{;
DataSection
!Table_HEX:
;     0 1 2 3 4 5 6 7 8 9 A B C D E F
!du '000102030405060708090A0B0C0D0E0F';0F
!du '101112131415161718191A1B1C1D1E1F';1F
!du '202122232425262728292A2B2C2D2E2F';2F
!du '303132333435363738393A3B3C3D3E3F';3F
!du '404142434445464748494A4B4C4D4E4F';4F
!du '505152535455565758595A5B5C5D5E5F';5F
!du '606162636465666768696A6B6C6D6E4F';6F
!du '707172737475767778797A7B7C7D7E7F';7F
!du '808182838485868788898A8B8C8D8E8F';8F
!du '909192939495969798999A9B9C9D9E9F';9F
!du 'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF';AF
!du 'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF';BF
!du 'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF';CF
!du 'D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF';DF
!du 'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF';EF
!du 'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF',0;FF
EndDataSection
;};
EndProcedure
 
Structure _STORAGE_ADAPTER_DESCRIPTOR
Version.l
Size.l;
MaximumTransferLength.l;
MaximumPhysicalPages.l;
AlignmentMask.l;
AdapterUsesPio.b;
AdapterScansDown.b;
CommandQueueing.b;
AcceleratedTransfer.b;
;;#if (NTDDI_VERSION < NTDDI_WINXP)
   ; BOOLEAN BusType;
;#else
  BusType.b;
;;#endif
BusMajorVersion.w;
BusMinorVersion.w;
EndStructure
 
 
 
Global r._STORAGE_ADAPTER_DESCRIPTOR
r\Version=$50922249
r\Size=-1
r\MaximumTransferLength=$80000000
r\BusMajorVersion=-1
r\BusMinorVersion=-1
ShowMemoryViewer(@r,SizeOf(_STORAGE_ADAPTER_DESCRIPTOR))
 
 
Debug @r
f=GetMemoryHex(@r,8,#RazmerByte);Вывод по байту 8 раз(количество раз),возврат адрес на следующий байт
Debug STROKAm
 
Debug f
f=GetMemoryHex(f,4,#RazmerMemory|#RazmerDword);вывод по 4 байта по размеру байт памяти
Debug STROKAm
 
Debug f
f=GetMemoryHex(f,4,#RazmerMemory|#RazmerDword)
Debug STROKAm
 
 
f=GetMemoryHex(@r,SizeOf(_STORAGE_ADAPTER_DESCRIPTOR ),#RazmerMemory|#RazmerDword)
Debug STROKAm
 
 



Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB