Где я допустил ошибку при написании кода? (ошибка деления на 0) - Assembler
Формулировка задачи:
Дано задание запрограммировать формулу.
Я написал следующий код:
Но почему-то он валится в дебаггере TASM на операции деления. Где у меня ошибка?
.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 edx,ebx mov al,a imul a; AX=A^2 movsx bx,e add bx,ax mov ax,4 imul bx mov cx,dx shl ecx,16 mov cx,ax idiv ecx mov a3,edx mov a4,eax mov ah,4ch int 21h end
Решение задачи: «Где я допустил ошибку при написании кода? (ошибка деления на 0)»
textual
Листинг программы
.model small .data a db 2 b db 2 c db 2 d db 15 e db 2 .code .486 mov ax,@data mov ds,ax mov al,a add al,b movsx dx,al imul al imul dx mov BX,dx shl ebx,16 mov bx,ax shl ebx,1 mov dl,c shl dl,1 mov al,d imul al sub DX,AX mov AX,DX movsx CX,a imul CX mov CX,DX shl ECX,16 mov CX,AX add ebx,ecx mov eax,ecx xor ECX,ECX mov cl,a mov ch,e add cl,ch xor ch,ch shl cl,2 mov eax,ebx CDQ idiv ECX mov ah,4ch int 21h end
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д