[英]32 bit division in assembly language
我正在大學課程(80386編程)中學習匯編語言編程。 目前,我正在使用EDX和EAX寄存器分別存儲余數和商來學習32位除法的來龍去脈。 我想知道,為什么不包括在內時為什么我沒有得到正確的輸出
mov edx, 00000000h
在我的程序中。 程序不運行或輸出錯誤。
相關源代碼:
mov edx, 00000000h
mov eax, 1234567Ah
div 11111111h ; now EDX=remainder, EAX=quotient
如果需要,我將發布完整代碼。
當使用DIV
與一個32位操作數,它將分在64位值EDX:EAX
(高DWORD在EDX
,低DWORD在EAX
由操作數),並把在商數EAX
和在其余EDX
。
因此,如果要除法的值是32位(僅適用於EAX
),則應在除法之前清除EDX
。 否則將導致錯誤的結果,或者如果商不適合EAX
則除法溢出。
32位div實際上將edx:eax除以指定值。 如果edx中包含隨機垃圾,您將獲得垃圾結果。 沒有選擇用eax划分JUST ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.