Страница: 1 |
Вопрос: Глюки в отладчике
Добавлено: 02.09.06 18:55
Автор вопроса: C y R a x | Web-сайт: basicproduction.nm.ru | ICQ: 204447456
PB/WIN 8.01
Sub Test1(Param As Long )
! xor eax,eax
! MOV EBX, offset Lbl
! MOV EDX,12
! MOV AL,[EBX+EDX]
! MOV ECX,[EBP+8]
! MOV [ECX],EAX
Exit Sub
Lbl:
! DB 0,01,02,03,04,05,06,07
! DB 8,09,10,11,12,13,14,15
End Sub
Function PBMain
Dim a As Long
Test1 a
MsgBox Str$(a)
End Function
В строке "! MOV EDX,12" в зависимости от источника (12) возвращаются следующие значения (слева источник, справа результат):
0 - &HCC
1 - 0
2 - 1
3 - 2
4 - 3
5 - 4
6 - 5
7 - 6
8 - 7
9 - &HCC
10 - 8
11 - 9
12 - 10
В компилированном экзешнике всё нормально. Кто-нибудь знает способы обхода этой ошибки?
Ответить
Номер ответа: 1Автор ответа: Dingo
Вопросов: 1Ответов: 9
Профиль | | #1
Добавлено: 03.09.06 15:12
Отладчик-цабака, &hCC-шек везде рассовывает (строчки чтоли так разделяет для IDE, или выравнивает чегой-то - незнаю уж), но вот сырое решение:
#Compile Exe
#
Dim All
#Register None
#Tools
Off
Sub Test1(Param
As Long )
! xor eax,eax
! MOV EBX,offset Lbl
! mov edx,offset DebugTestLbl
! cmp al,[edx]
! je MoveNextLbl
! inc ebx
! jmp MoveNextLbl
DebugTestLbl:
! db 0
MoveNextLbl:
! MOV EDX,12
! MOV AL,[EBX+EDX]
! MOV ECX,[EBP+8]
! MOV [ECX],EAX
Exit Sub
Lbl:
! DB 0,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15
End Sub
Function PBMain
Dim a
As Long
Test1 a
MsgBox Str$
End Function
Причём данные в !DB - всё в одну строку писать приходиться.
Ответить
Номер ответа: 3Автор ответа: Dingo
Вопросов: 1Ответов: 9
Профиль | | #3
Добавлено: 03.09.06 17:53
Например так:
#Compile Exe
#
Dim All
#Register None
#Tools
Off
#
Debug Error Off
Sub Test1(Param
As Long )
! xor eax,eax
! MOV EBX,offset Lbl
! MOV EDX,29
! mov ecx,offset DebugTestLbl
! cmp al,[ecx]
! je MoveNextLbl
! mov ecx,edx
! shr ecx,4
! inc ecx
! add ebx,ecx
! jmp MoveNextLbl
DebugTestLbl:
! db 0
MoveNextLbl:
! MOV AL,[EBX+EDX]
! MOV ECX,[EBP+8]
! MOV [ECX],EAX
Exit Sub
Lbl:
! DB 00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15
! DB 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
! DB 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47
! DB 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63
End Sub
Function PBMain
Dim a
As Long
Test1 a
MsgBox Str$
End Function
Таблица в !DB по 16 значений в строке должна быть. Можно и по 32 и по 64 и т.д., тока тогда shr-сдвиг менять надо соответственно. Вот.
Ответить
Страница: 1 |
Поиск по форуму