ASM /德尔福 – 分裂
发布时间:2020-12-15 09:43:14 所属栏目:大数据 来源:网络整理
导读:我试图划分两个数字50和5. 这是我的代码: function Divide(Num1,Num2: Integer): Integer;asm MOV EAX,Num1 CDQ MOV ECX,Num2 IDIV ECX MOV @RESULT,ECXend; 它在Delphi中给了我一个DivisionByZeroException异常. 有人能告诉我我做错了什么吗? 解决方法 这
我试图划分两个数字50和5.
这是我的代码: function Divide(Num1,Num2: Integer): Integer; asm MOV EAX,Num1 CDQ MOV ECX,Num2 IDIV ECX MOV @RESULT,ECX end; 它在Delphi中给了我一个DivisionByZeroException异常. 解决方法
这是CDQ指令.从
an online reference开始:
问题是,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,EAX end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |