代码不起作用,我认为 .code 中有一个错误

问题描述 投票:0回答:0

这是我的代码。

.486 ; директива визначення типу мікропроцесора

.model flat, stdcall ;визначення лінійної моделі пам’яті

选项案例图:无;розділенняверхньоготанижньогорегістрів

包含 d:\masm32\include\windows.inc

包含 d:\masm32\macros\macros.asm

包含 d:\masm32\include\masm32.inc

包含 d:\masm32\include\gdi32.inc

包含 d:\masm32\include pu.inc

包含 d:\masm32\include\user32.inc

include d:\masm32\include\kernel32.inc ;підключення бібліотек та

include d:\masm32\include\msvcrt.inc ;системних файлів

includelib d:\masm32\lib\msvcrt.lib

includelib d:\masm32\lib pu.lib

includelib d:\masm32\lib\masm32.lib

includelib d:\masm32\lib\gdi32.lib

includelib d:\masm32\lib\user32.lib

includelib d:\masm32\lib\kernel32.lib

uselib masm32、comctl32、ws2_32

.数据; директива визначення данних

msg_title db "标题", 0 ; встановлення заголовку повідомлення

_const2 DWORD 3.0 ;оголошення константи 2

_const3 DWORD 8.0 ;оголошення константи 3

_count dd 4 ; оголошення змінної з першим числом

_right dd 7 ; оголошення змінної з другим числом

_count1 DWORD 4.0 ;оголошення змінної з першим числом для роботи зі стеками

_一个 DWORD 1.0; оголошення змінної зі значенням 1

_result DWORD 1.0 ; оголошення змінної для результату

_title db "Лабораторна робота №5",0 ; встановлення заголовку

strbuf dw ?,0

_text db "masm32.Заєць Віталій ІН-202 ІІТЕ КНЕУ, каф. ІСЕ 2017 р. ",10 ,"Вивід результата через MessageBox: ", 10,

"Результат: "

_res1 db 14 DUP(0),10,13; формування повідомлення у вікні

.代码; директива початку сегменту команд

开始:; мітка початку програми

mov edx, 1 ;занесення 1 у регістр edx

mov ebx, _right; занесення значення другого числа у регістр ebx

mov ecx, _count; занесення значення першого числа у регіср ecx

finit ;ініціалізація спіпроцесора

.WHILE edx == 1 ; задання умови для запуску циклу

.IF ecx == 3 || ecx == 8 ; умова при якій будуть обходитись числа, при яких виникне ділення на ноль

loop m1 ;мітка m1

.ENDIF ; кінець умови IF

fld_count1; завантаження змінної count1 у верхівку стеку

fsub _const2 ;відмімання константи2 ;(n-3)

fld_count1; завантаження змінної count1 у верхівку стеку

fsub _const3 ;віднімання константи 3 ;(n-8)

fmul st(0), st(1) ;множеня вмісту регістрів (n-3)*(n-8)

fld_count1; завантаження змінної count1 у верхівку стеку

fdiv st(0), st(1) ;ділення n/((n-3)*(n-8))

fld _result ;завантаження _ 结果 у верхівку стеку

fmul st(0),st(1) ; множення значення з верхівки стеку на значення з першого

fstp _result ; збереження значення у змінну _result

m1: ; мітка m1

添加 ecx,1

fld_one

fld _count1 ;операцііїзізначеннямидлявиконання

fadd st(0), st(1) ;наступної ітерації

fstp_count1

添加 _count ,1

.IF ecx > ebx

fld _result ;умова для виходу з циклу

.中断

.ENDIF

.ENDW

调用 FpuFLtoA、0、10、ADDR _res1、SRC1_FPU 或 SRC2_DIMM

调用 MessageBox, 0, offset _text, offset _title, MB_ICONINFORMATION

调用 ExitProcess, 0

结束开始; завершення програми

R可能我在算术运算上做错了什么。 这是一项任务my task

assembly x86 masm masm32
© www.soinside.com 2019 - 2024. All rights reserved.