Ассемблер. Срочно нужна помощь
Нужно сделать вывод результата на экран (в окне отдельном) в ассемблере (сам код написан и работает). У самого идеи кончились. Постоянно ошибки какие-то лезут...
Помощь нужна срочно.
Код:
.386
.model flat,stdcall
option casemap:none
_DATA SEGMENT
consA equ 1574 ;626h
consB equ 432 ;1B0h
consC equ 1632 ;660dh
consD equ 1835 ;72Bh
consx1 equ 586; 24Ah
consx2 equ 649; 289h
consx3 equ 934; 3A6h
mul_rez_l dw 0
mul_rez_h dw 0
mul_rez_c dw 0
carry dw 0
_DATA ENDS
CSEG SEGMENT
_Begin:
xor eax,eax
xor ebx,ebx
xor edx,edx
firstx:
mov ax,consx1 ;
add ax,consA
sub ax,consB
mov bx,consC
mul bx ;результат dx:ax
mov bx,consD
div bx ; делим результат предыдущих операций dx:ax на bx частное ax, остаток dx
xor eax,eax
xor ebx,ebx
xor edx,edx
secondx:
mov ax,consx2 ;
add ax,consA
sub ax,consB
mov bx,consC
mul bx ;результат dx:ax
mov bx,consD
div bx ; делим результат предыдущих операций dx:ax на bx частное ax, остаток dx
xor eax,eax
xor ebx,ebx
xor edx,edx
thirdx:
mov ax,consx3 ;
add ax,consA
sub ax,consB
mov bx,consC
mul bx ;результат dx:ax
mov bx,consD
div bx ; делим результат предыдущих операций dx:ax на bx частное ax, остаток dx
xor eax,eax
xor ebx,ebx
xor edx,edx
y1:
;вычислим 12*x1^2 + 7x1 - 16
;x^2
mov ax,consx1
mov bx,ax
mul bx
jnc no_carry_x1_2
mov mul_rez_h,dx
no_carry_x1_2:
mov mul_rez_l,ax
;12* x^2
xor dx,dx
mov bx,12 ; 0Ch
mul bx
mov carry, dx
mov mul_rez_l,ax
xor dx,dx
mov ax,mul_rez_h
mul bx
add ax,carry
adc dx,0
mov mul_rez_h,ax
mov mul_rez_c,dx
;7x1
xor dx,dx
mov ax,consx1
mov bx,7
mul bx ; - результат dx:ax
;12*x1^2 + 7x1
add ax,mul_rez_l
adc dx,mul_rez_h
adc mul_rez_c,0
;...-16
mov bx,16 ; 10h
sub ax, bx
jnc no_carry_sub
neg ax
no_carry_sub:
sbb dx,0
jnc no_carry_sub2
neg dx
no_carry_sub2:
sbb mul_rez_c,0
ret
CSEG ends
end _Begin
Благодарю заранее всех отозвавшихся.
|