Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 汇编语言中的32位除法_Assembly - Fatal编程技术网

Assembly 汇编语言中的32位除法

Assembly 汇编语言中的32位除法,assembly,Assembly,我正在大学学习汇编语言编程(80386编程)。目前,我正在学习使用EDX和EAX寄存器分别存储余数和商的32位除法的输入和输出。我想知道,为什么当我没有包含 mov edx, 00000000h 在我的节目里。程序要么不运行,要么输出错误 相关源代码: mov edx, 00000000h mov eax, 1234567Ah div 11111111h ; now EDX=remainder, EAX=quotient 如果需要,我将发布完整的代码。32位div实际上将edx:eax除以指

我正在大学学习汇编语言编程(80386编程)。目前,我正在学习使用EDX和EAX寄存器分别存储余数和商的32位除法的输入和输出。我想知道,为什么当我没有包含

mov edx, 00000000h
在我的节目里。程序要么不运行,要么输出错误

相关源代码:

mov edx, 00000000h
mov eax, 1234567Ah
div 11111111h ; now EDX=remainder, EAX=quotient

如果需要,我将发布完整的代码。

32位div实际上将edx:eax除以指定的值。如果edx中有随机垃圾,您将得到垃圾结果。在使用32位操作数的
DIV
时,它将把
EDX:eax
中的64位值(EDX中的高位DWORD,eax中的低位DWORD)除以操作数,并将商放入
eax
中,剩余部分放入
EDX


因此,如果要除法的值为32位(仅适用于
EAX
),则应在除法之前清除
EDX
。如果不这样做,将导致不正确的结果,或者如果商不适合
EAX

的话,将导致除法溢出。哦,当然,除法将除法EDX:EAX,我忘了!谢谢你的回答,我的问题已经回答了。