Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
efghi
0 / 0 / 0
Регистрация: 21.02.2018
Сообщений: 20
Завершенные тесты: 1
1

Вывод информации о пользователе и компьютере

06.12.2018, 20:42. Просмотров 1042. Ответов 3
Метки нет (Все метки)

Пишу программу по алгоритму, который дал преподаватель. Возникает ошибка A2022 instruction operands must be the same size в строках 65, 71, 72. Почему это может происходить? Может быть какие то еще есть ошибки в коде? Неделю уже пытаюсь сделать прогу. Преподаватель ничем помочь не может.Вот код:
Assembler
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
extrn GetUsernameA :proc, 
GetComputerNameA :proc, 
GetTempPathA :proc, 
GetVersionExA :proc, 
wsprintfA :proc, 
MessageBoxA :proc, 
ExitProcess :proc 
 
.data 
cap db '<заголовок окна>', 0 
fmt db 'Username: %s',0Ah, 
'Computer name: %s', 0Ah, 
'TMP Path: %s', 0Ah, 
'OS version: %d.%d.%d', 0 
 
OSVERSIONINFO struct 
dwOSVersionInfoSize dword ? 
dwMajorVersion dword ? 
dwMinorVersion dword ? 
dwBuildNumber dword ? 
dwPlatformId dword ? 
szCSDVersion byte 128 dup(?) 
OSVERSIONINFO ends 
.code 
Start proc 
;Объявление локальных переменных 
szMAX_COMP_NAME = 16 
szUNLEN = 257 
szMAX_PATH = 261 
 
local _msg[1024] :byte, 
_username[szUNLEN] :byte, 
_compname[szMAX_COMP_NAME] :byte, 
_temppath[szMAX_PATH] :byte, 
_v :OSVERSIONINFO, 
_size :dword 
 
 
;Подготовка стека 
sub RSP, 8*5 
and SPL, 0F0h 
 
;Получение имени пользователя, названия компьютера и пути до директории временных файлов 
mov _size, szUNLEN         ; в _size размер строки имени пользователя 
lea RCX, _username            ; адрес в rcx
mov RDX, szUNLEN              ;размер в RDX
call GetUserNameA 
 
mov _size, szMAX_COMP_NAME; 
lea RCX, _compname 
mov RDX, szMAX_COMP_NAME 
call GetComputerNameA 
 
mov _size, szMAX_PATH;  
mov RCX, szMAX_PATH
lea RDX, _temppath 
call GetTempPathA 
 
;Получение сведений о системе 
;mov al,0 
xor al,al 
mov rcx, size _v ;занесем в регистр RCX размер экземпляра _v
lea rdi, _v ; адрес _v
rep stos byte ptr [RDI] 
mov _v.dwOSVersionInfoSize, rcx ; размер структуры поместим в _v.dwOSVersionInfoSize
call GetVersionExA 
 
;Формирование отформатированной строки 
lea rcx, _msg 
lea rdx, fmt 
mov r8, _username 
mov r9, _compname 
call wsprintfA 
 
;Отображение полученной информации в диалоговом окне 
mov rcx,0 
mov r9,0 
lea rdx, _msg 
lea r8, cap 
call MessageBoxA 
 
mov rcx,0 
call ExitProcess 
Start endp 
end
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2018, 20:42
Ответы с готовыми решениями:

Вывод информации о пользователе из БД
Подскажите как сделать подобное. $sql = mysql_query(&quot;SELECT `id`, `name`, `login`, `pass`,...

Вывод информации об определенном пользователе
Здравствуйте, перерыл много ресурсов, но так и не понял как вывести информацию об определенном...

Вывод аватара и информации о пользователе
Доброго времени суток требуется в который раз ваш совет &lt;?php include (&quot;bd.php&quot;); $res =...

Вывод информации о авторизированном пользователе
Создал программу с db и с некоторыми проверками. Вход через db сделал, теперь надо сделать чтобы...

Получение информации о пользователе
Привет всем! У меня такой вопрос?: 1) Я делаю запрос логин и пароль получаю ответ верно или нет....

3
ФедосеевПавел
Модератор
5860 / 2868 / 1164
Регистрация: 01.02.2015
Сообщений: 9,297
Записей в блоге: 1
06.12.2018, 22:17 2
Лучший ответ Сообщение было отмечено efghi как решение

Решение

Если всё остальное правильно - то получается, что размер поля структуры 32 бита, а регистры, из которых копируется информация 64 битные.
Assembler
65
mov _v.dwOSVersionInfoSize, ecx ; размер структуры поместим в _v.dwOSVersionInfoSize
А в 71, 72 вместо mov возьмите адреса строк при помощи lea.
1
efghi
0 / 0 / 0
Регистрация: 21.02.2018
Сообщений: 20
Завершенные тесты: 1
08.12.2018, 16:02  [ТС] 3
ФедосеевПавел, после исправления все вроде бы верно, но появилась ошибка Вызвано исключение по адресу 0x00007FFE034CA24A (sspicli.dll) в z1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x0000000000000101.
0
ФедосеевПавел
Модератор
5860 / 2868 / 1164
Регистрация: 01.02.2015
Сообщений: 9,297
Записей в блоге: 1
08.12.2018, 16:05 4
Сложный вопрос. Нужно запустить в 64 битном отладчике и выполнить по шагам, смотреть на регистры, на стек.
Возьмите бесплатный x64dbg.
0
08.12.2018, 16:05
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2018, 16:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Доступ к информации о пользователе из сессии
Добрый день! Пытаюсь добавить на сайт элемент, который не будет виден обычным пользователям. Для...

Нету информации о пользователе DLE 10.2
Привет всем. Есть такая проблема на сайте. Не отображается информация о пользователе в профиле,...

Запрос информации о пользователе к хостингу сайта
В общей сложности... меня интересует 2 момента: 1) Через ас3 я должен подключиться к базе данных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.