Форум программистов, компьютерный форум, киберфорум
Assembler: MASM64, х64/long mode
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 09.12.2016
Сообщений: 29
1

Ошибка - исключение по адресу

29.05.2017, 18:45. Показов 3225. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Не уверен, пишу ли я в том месте (первое сообщение в разделе программирования, извините, если что), но мне нужно написать программу на ассемблере (х64) в VS 2017. (Windows 10)
Нужно ввести в окошко строку, а программа должна заменить * на пробелы и вывести в строку результат.
Пример нашей преподавательницы запускается, но при нажатии на кнопку RUN происходит исключение по адресу.
Не знаете, в чем проблема?(сама она тоже не знает) Код вот.
Заранее спасибо.

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
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
ExitProcess PROTO 
DlgProc PROTO :QWORD,:QWORD, :QWORD, :QWORD
PostQuitMessage PROTO
GetModuleHandleA PROTO
DialogBoxParamA PROTO
GetDlgItemTextA PROTO
SendDlgItemMessageA PROTO
 
include /windows.inc
 
.data
DName db "dial",0
hinst dq ?
result_buffer db 20 dup ("0")
 
hwnd dq 0
uMsg dq 0
wParam dq 0
lParam dq 0
oldRsi dq 0
 
.code
main proc
 sub rsp, 56
  
 mov rcx,0
 call GetModuleHandleA 
 mov hinst,rax
 
 mov rcx,hinst
 lea rdx, DName
 mov r8,0
 lea r9,DlgProc
 mov     dword ptr [rsp+32], 0
 call DialogBoxParamA
 mov rcx,0
 call ExitProcess 
 main endp
 
DlgProc proc q:QWORD,w:QWORD, e:QWORD, r:QWORD
  cmp edx, WM_CLOSE ;10h   
  je Exit_Button
 
  cmp edx, WM_COMMAND   ;111h   
  je go_button
  jne End_it 
 
 go_button:
 cmp r8,4
 je Exit_Button
 cmp r8,3
 je next
 jne End_it
 
 next:
    mov hwnd,rcx
    mov uMsg,rdx
    mov wParam,r8
    mov lParam,r9
 
    mov rdx,1
    lea r8,result_buffer
    mov r9,20
    ;call GetDlgItemTextA
    mov rax, 1
    
    mov rcx,  hwnd
    mov rdx,  uMsg
    mov r8,   wParam
    mov r9,   lParam
 
        mov hwnd,rcx
 
    mov rcx,rax
    mov oldRsi, rsi
    lea rsi,result_buffer
    m1:
     cmp byte ptr [rsi],'*'
     je m2
     jne m3
     m2:
      mov byte ptr [rsi],' '
     m3:
      inc rsi
     loop m1    
     
        mov rcx,hwnd
            
    mov rdx,2
    mov r8,LB_DELETESTRING  ;  182h - LB_DELETESTRING
    mov r9,0
    lea rsi,result_buffer
    mov qword ptr [rsp+32],rsi 
    call SendDlgItemMessageA
    
        mov rcx,  hwnd
        mov rdx,  uMsg
        mov r8,   wParam
        mov r9,   lParam
 
    mov rdx,2
    mov r8,LB_ADDSTRING  ;  182h - LB_DELETESTRING
    mov r9,0
    lea rsi,result_buffer
    mov qword ptr [rsp+32],rsi 
    call SendDlgItemMessageA
 
    mov rsi, oldRsi
 
    jmp End_it
    
Exit_Button:
    mov rcx,0
    call PostQuitMessage
 
End_it:    
    mov rax,0
    ret
DlgProc endp 
end
Файл RSRC.RC

Assembler
1
2
3
4
5
6
7
8
9
dial DIALOG 0, 0, 309, 95
CAPTION "mY dialog"
BEGIN
    EDITTEXT 1, 48,7,222,14
    ListBox 2,48,24,222,14
    PUSHBUTTON "Run", 3, 167,41,50,14  
    PUSHBUTTON "Exit",4, 220,41,50,12
    LTEXT "Input string:", -1, 7,10,40,8    
END
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2017, 18:45
Ответы с готовыми решениями:

Исключение по адресу 0x01423B40 в ASM1.exe: 0xC0000005: нарушение прав доступа при исполнении по адресу 0x01423B40
Здравствуйте! Очень нужна помощь, не могу понять в чем проблема, вроде правильно все делаю, но...

Ошибка: необработанное исключение по адресу
Из за чего может вылезти такая ошибка? #include "stdafx.h" #include <iostream> #include...

Ошибка: Вызвано исключение по адресу
Всем привет вот исходный код: #include "stdafx.h" #include <stdio.h> #include <time.h>...

Необработанное исключение по адресу, нарушение прав доступа при записи по адресу
вот само задание: Авиарейсы (номер рейса, пункт назначения, время вылета, дата вылета, стоимость...

1
Asm/C++/Delphi/Py/PHP/VBA
6528 / 1973 / 228
Регистрация: 14.12.2014
Сообщений: 4,125
Записей в блоге: 12
31.05.2017, 18:26 2
Лучший ответ Сообщение было отмечено vanyamlb как решение

Решение

Цитата Сообщение от vanyamlb Посмотреть сообщение
сама она тоже не знает
Хорошая преподавательница

Assembler
67
68
69
70
71
72
73
74
    mov rcx, hwnd
    mov rdx, uMsg
    mov r8, wParam
    mov r9, lParam
 
    mov hwnd,rcx
 
    mov rcx,rax
Строки 67,72,74 – просто Гениально!
Assembler
75
    mov oldRsi, rsi
Боитесь использовать push, чтобы не испортить выравнивание стека?

Так, вы же его и так не выравниваете при вызовах WinAPI-функций из DlgProc.
Добавьте sub rsp,28h в начало DlgProc и add rsp,28h в конец (только перед ret, а не после). And try again

Добавлено через 54 минуты
Не факт, конечно, что это единственная проблема. Но начнём с этого
2
31.05.2017, 18:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2017, 18:26
Помогаю со студенческими работами здесь

Нахождение определителя матрицы по Гауссу, ошибка - необработанное исключение по адресу
Помогите, пожалуйста, написал алгоритм нахождения определителя ступенчатой матрицы, мб неправильно...

Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу
Помогите, пожалуйста, исправит ошибку. Необработанное исключение по адресу 0x77D88E19 (ntdll.dll)...

Вызвано исключение по адресу 0x003F2357 в Лабораторна 15.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x
Что это такое и как это исправить? Вот фрагмент кода где и есть проблема: ... int size = 9;...

Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу
#include <math.h> const double eps = 0.001; ///< желаемая точность /// N - размерность...

Необработанное исключение по адресу 0x00ED4891 в strings.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCCC
Программа толком не написан, проверял ранд и возникли проблемы. Ф-ция ранд генерирует одно и тоже...

Необработанное исключение по адресу 0x00F71B85 в lab 12_1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0
Всем привет, ошибка возникает при добавлении переменной minqq1, помогите понять в чем проблема, вот...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru