|
|
|
Ассемблер. Ошибка: деления на 0
|
|||
|---|---|---|---|
|
#18+
Дано следующее задание: Я написал следующий код: автор.model small; .data a db 2 b db 2 c db 2 d db 15 e db 2 f dd ? a1 dd ? a2 dd ? a3 dd ? a4 dd ? .code .486 mov ax,@data mov ds,ax mov al,a mov ah,b add al,ah;(a+b)=al movsx bx,al;(a+b) Imul al;AX -(a+b)^2 imul bx;(A+B)^3 mov bx,dx shl ebx,16 mov bx,ax mov eax,2 imul ebx mov a1,edx mov a2,eax mov al,c mov ah,2 imul ah;AX=2*C mov bx,ax mov al,d imul al;AX=D^2 sub BX,AX;BX=(2C-D^2) movsx AX,a;WORD a imul BX;DX:AX mov bx,dx shl ebx,16 mov bx,ax mov edx,a1 mov eax,a2 add eax,ecx;<--- adc edx,ebx mov a2,eax mov al,a ;imul a; AX=A^2 ;movsx bx,e add al,e mov ah,4 imul ah mov cx,ax mov eax,a2 ;shl ecx,16 ;mov cx,ax idiv ecx mov a3,edx mov a4,eax mov ah,4ch int 21h end Программа валится на делении, хотя операнды у меня получаются, вроде, верные. В чем может быть проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2015, 19:56 |
|
||
|
Ассемблер. Ошибка: деления на 0
|
|||
|---|---|---|---|
|
#18+
авторadd eax,ecx;<--- это авторeax = eax + ecx; ecx как был 0, так и остался :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2015, 20:35 |
|
||
|
Ассемблер. Ошибка: деления на 0
|
|||
|---|---|---|---|
|
#18+
Вася Уткинавторadd eax,ecx;<--- это авторeax = eax + ecx; ecx как был 0, так и остался :) Мне TASM показывает, что там делитель 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2015, 20:43 |
|
||
|
Ассемблер. Ошибка: деления на 0
|
|||
|---|---|---|---|
|
#18+
idiv ecx в качестве делимого использует пару edx:eax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2015, 20:53 |
|
||
|
|

start [/forum/topic.php?fid=16&tid=1341065]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
155ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 446ms |

| 0 / 0 |
