Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: MASM64, х64/long mode
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
vanyamlb
0 / 0 / 0
Регистрация: 09.12.2016
Сообщений: 26
1

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

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

Здравствуйте! Не уверен, пишу ли я в том месте (первое сообщение в разделе программирования, извините, если что), но мне нужно написать программу на ассемблере (х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)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2017, 18:45
Ответы с готовыми решениями:

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

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

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

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

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

1
Jin X
6711 / 1499 / 174
Регистрация: 14.12.2014
Сообщений: 2,903
Записей в блоге: 11
Завершенные тесты: 3
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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2017, 18:26

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

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

Необработанное исключение по адресу 0x00105FD7 в Динамические структуры: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCE09
Необработанное исключение по адресу 0x00105FD7 в Динамические структуры.exe: 0xC0000005: нарушение...


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

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

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