这是我的代码:
function divIDe(Num1,Num2: Integer): Integer;asm MOV EAX,Num1 CDQ MOV ECX,Num2 Idiv ECX MOV @RESulT,ECXend;
它在Delphi中给了我一个divisionByZeroException异常.
有人能告诉我我做错了什么吗?
Converts signed DWORD in EAX to a signed quad word in EDX:EAX by extending the high order bit of EAX throughout EDX
问题是,Num2是第二个参数,存储在EDX中,并且由于您在将EDX加载到ECX之前运行CDQ,因此在ECX中结束的是0.重写它,并且您的例程按预期工作:
function divIDe(Num1,Num2: integer): integer;asm MOV EAX,Num1 MOV ECX,Num2 CDQ Idiv ECX MOV @Result,EAXend;总结
以上是内存溢出为你收集整理的ASM /德尔福 – 分裂全部内容,希望文章能够帮你解决ASM /德尔福 – 分裂所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)