我在HLA nasm
中得到了Integer overflow
。我想写一个简单的程序,将提供的Distance
变量除以15000并显示它的求值,但我遇到了这个问题。我根本不明白HLA
中除法的概念。提前感谢您的帮助。
program zad2;
#include( "stdlib.hhf");
static
f : int32 := 15000;
s : int32 := 300000;
Distance: int32;
begin zad2;
stdout.put("Give car distance", nl);
stdin.get(Distance);
if (Distance<150000) then
MOV(15000, eax);
div(Distance, EDX:EAX );
stdout.put("div evaluation:",eax ,nl);
jmp menu0;
endif
end zad2;
3条答案
按热度按时间iyfjxgzm1#
你需要零扩展到edx,因为它是保存余数的寄存器。
rwqw0loc2#
我找到了我的解决方案。请看一下。所有
hla div
的东西在Windows
版本的hla编译器上都不能正常工作。它应该是这样的。我希望它能对某人有所帮助;)kwvwclae3#
我也一直在研究Divi与HLA的配合使用(高级汇编)。我想分享我的发现也是为了帮助别人。这个程序不是课堂作业,因为我们必须手工做每件事并展示我们的工作。我只是为了一些额外的练习而写了这个简短的程序,所以我想为什么不分享它呢,它对检查我的工作效果很好,加上它有除法使用在它。这个程序将采取一个字符转换成十六进制到十进制和转换后,它到二进制,为了进行二进制转换,IS在while循环内使用idiv,并且从64到32到16到8到4到2到1一半。