組合語言除法,彙編除法的問題

時間 2023-03-23 09:20:09

1樓:

組合語言中求餘數可以使用div和idiv指令,兩者分別用於無符號整數除法和有符號整數除法,計算商和餘數並存入指定位置。

div (unsigned divide) 無符號數除法。

格式:div src

執行的操作:

位元組操作:16位被除數在ax,8位除數為源運算元,結果的8位商在al中,8位餘數在ah中。表示為。

(al)<-ax)/(src) 的商。

(ah) 字操作:32位被除數放在dx,ax中。其中dx為高位字,16位除數為源運算元,結果的16位端在ax中,16位餘數在dx中。表示為。

(ax)<-dx,ax)/(src) 的商。

(dx)<-dx,ax)/(src) 的餘數。

雙字操作:64位被除數在edx,eax中,其中edx為高位雙字,32位除數為源運算元,結果的32位商在eax中,32位餘數在edx中,表示為。

(eax)<-edx,eax)/(src) 的商。

(edx)<-edx,eax)/(src) 的餘數。

商和餘數均為無符號數。

idiv 帶符號除法指令。

格式:idiv src

執行的操作:

與div相同,但運算元必須是帶符號的數,商和餘數也都是帶符號的數,且餘數的符號和被除數的符號相同。

彙編除法的問題

2樓:網友

x86的16bit模式的無符號除法div有1、16bit被除數 除以 8bit除數。

2、16bit dx加16bit ax 除以 16bit除數兩種格式。

「大於65535的資料」即大於16bit的資料,就要先化成第2種方式處理。

但現代的cpu另有32bit和64bit模式。

在非真實模式的彙編下,可以用。

3、32bit edx加32bit eax 除以 32bit除數4、64bit rdx加64bit rax 除以 64bit除數即可以直接處理32bit 、64bit、128bit的資料的除法。

回到8086 16bit下,通常還是把32bit的資料看成2個16bit,mov分別移到ax,dx

而不是直接32bit,因為16bit晶片設計就是為了最佳處理16bi的資料t,沒有32bit資料的處理,必須先拆吧。

彙編中除法運算的使用方法有點疑問

3樓:網友

電子書上的**和解說,都是正確的。

你可能沒有注意到,三個數的資料定義,第一個是用dd定義的「雙字」,它是四個位元組的32位數,佔用「位元組」地址是0,1,2,3。

它的低位「字」(16位,兩個位元組),存放在0,1這兩個「位元組」單元地址中。這個「字」的「字」地址,是0

它的高位「字」(16位,兩個位元組),存放在2,3這兩個「位元組」單元地址中。這個「字」的「字」地址,是2

要將這個4個位元組的32位數,傳送到cpu內,16位的8086cpu需要進行兩次傳送。

先將這個32位數的低位「字」(低16位)放在16位的暫存器ax中,指令就是mov ax, ds:[0]

再將這個32位數的高位「字」(高16位)放在16位的暫存器dx中,指令就是mov dx, ds:[2]

你的疑問表述不是很清楚,有點亂,其中你說的「前四位」「高八位」的含義可能存在誤解。

我猜測你可能是誤以為一條mov ax, ds:[0]能一次就傳送4個位元組32位位數了。

4樓:網友

一般資料存放的方式比如:ds[0]: h l; 直接取ds[0],其預設地址就是ds[0] l,暫存器地址是從低到高排序的, 如果你取 ds[0]+1 就是高16位了;

5樓:id雞蛋炒韭菜

你是問div還是問資料放置的位置?

組合語言 除法出錯,彙編除法的問題

cpu 執行除法指令 如 div cx div bl 時,是有可能溢位的。如果被除數較大,或除數較小,都可能使 商 超出預定位數,此時,就會溢位。特別是當除數為零時,必然會出現 divide overflow。直接使用 div 指令,有一定的風險,一不小心就溢位了。特別是數字不明確的時候。因此,在執...

組合語言問題,組合語言問題

蜜蜂小玉米 assume cs code assume ds data data segment db i love you.data ends code segment start mov ax,data mov ds,ax mov bx,0 s0 check mov al,ds bx cmp a...

組合語言程式設計,組合語言程式設計

org 0000h ljmp main org 000bh ljmp t0int org 0030h main mov tmod,01h mov th0,high 65536 5000 mov tl0,low 65536 5000 setb tr0 setb et0 setb ea clr a sj...