Примерчик (МАСМ32)
Добавлено: 23 мар 2013, 17:46
Использую МАСМ32 и OllyDebuger (второй для просмотра регистров). Есть пример (25/e - d + 2)/(b + a*a - 1) . Проверял работу кода в OllyDebuger-е: знаменатель сформировани нормально, числитель вычислен тоже, но результат деления не понятно куда пишет... Подскажите, в чем может быть проблема?
Код: Выделить всё
.486
.model flat, stdcall
option casemap:none
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\windows.inc
.data ;(25/e - d + 2)/(b + a*a - 1) (5 - 3 + 2)/(2 + 1 - 1) = 2
a dw 1
b dw 2
e dw 5
d dw 3
k dw 25
ts dw 0
.code
start:
xor ax,ax ;ax=0
xor esi,esi ;esi=0
xor ebx,ebx ;ebx=0
xor ecx,ecx ;ecx=0
xor edx,edx ;edx=0
mov ax, a ;ax=1
imul ax ;ax=1
mov bx,b ;bx=2
add bx,ax ;bx=3
sub bx,1 ;bx=2
mov si,bx ;si=bx=2
movsx esi,si ;esi=si=2
xor bx,bx ;bx=0
xor eax,eax ;eax=0
xor edx,edx ;edx=0
mov ax,k ;ax=25
mov bx,e ;bx=5
idiv bx ;ax=5
mov cx,d ;cx=3
sub ax,cx ;ax=2
add ax,2 ;ax=4 ;all is ok untill here
cwd
cdq
mov eax, dword ptr ts
mov edx, dword ptr ts+4
idiv si
exit:
int 21h
end start