彙編 div指令講解

2021-06-02 09:47:53 字數 1765 閱讀 5237

div是除法指令,使用div做除法的時候應注意以下問題:

1、除數:有8位和16位兩種,在乙個暫存器或者記憶體中。

2、被除數:預設放在ax或(dx和ax)中,如果除數為8位,被除數為16位,被除數預設在ax中存放,如果除數為16位,被除數為32位,被  除數則在(dx和ax)中存放,dx存放高16位,ax存放低16位。

3、結果:如果除數是8位,則al儲存除法操作的商,ah儲存除法操作的餘數;如果除數是16位,則ax儲存除法操作的商,dx儲存除法操作的餘數。

格式如下:

div reg

div 記憶體單元

以100001/100為例,100001大於65535,所以只能用dx和ax兩個暫存器聯合存放100001,也就是說要進行16位的除法。除數100小於255,可以在乙個8位的暫存器中存放,但是被除數是32位的,除數應為16位,所以要使用乙個16位的暫存器來存放除數100.

dx和ax分別存放100001的高16位和低16位值,所以將100001表示為16進製制的形式:186a1h.

程式如下:

view plain

datas segment  

;此處輸入資料段**    

datas ends  

stacks segment  

;此處輸入堆疊段**  

stacks ends  

codes segment  

assume cs:codes,ds:datas,ss:stacks  

start:  

mov dx,1  

mov ax,86a1h  

mov bx,100  

div bx  

mov ax,4c00h  

int21h  

codes ends  

end start  

程式執行後,ax=03e8h,dx=1(餘數是1),在debug中檢視如下所示:

-pax=86a1  bx=0000  cx=0010  dx=0001  sp=0000  bp=0000  si=0000  di=0000

ds=0ba5  es=0ba5  ss=0bb5  cs=0bb5  ip=0006   nv up ei pl nz na po nc

0bb5:0006 bb6400        mov     bx,0064

-pax=86a1  bx=0064  cx=0010  dx=0001  sp=0000  bp=0000  si=0000  di=0000

ds=0ba5  es=0ba5  ss=0bb5  cs=0bb5  ip=0009   nv up ei pl nz na po nc

0bb5:0009 f7f3          div     bx

-pax=03e8  bx=0064  cx=0010  dx=0001  sp=0000  bp=0000  si=0000  di=0000

ds=0ba5  es=0ba5  ss=0bb5  cs=0bb5  ip=000b   nv up ei pl nz ac po nc

0bb5:000b b8004c        mov     ax,4c00

-pax=4c00  bx=0064  cx=0010  dx=0001  sp=0000  bp=0000  si=0000  di=0000

ds=0ba5  es=0ba5  ss=0bb5  cs=0bb5  ip=000e   nv up ei pl nz ac po nc

0bb5:000e cd21          int     21-p

彙編 div指令

除數 有8位和16位,在reg或者記憶體單元中 被除數 預設放在ax或者 dx和ax 中,如果除數是8位,被除數則為16位,預設放在ax中 如果除數為16位,則被除數為32位,高16位儲存在dx中,低16位儲存在ax中 結果 除數為8位,結果儲存在ax中,al儲存商,ah儲存餘數 如果除數16位,a...

彙編 div 除法指令

mov ax,10h 被除數為16位,儲存在ax mov dl,3 除數儲存在暫存器中,除數為8位 mov dl,ds 3 除數儲存在記憶體中,除數為8位 div dl 商儲存在al,餘數儲存在ah mov ax,4c00h int 21h code ends end start assume cs...

彙編中div指令使用

當除數是位元組 也就是8位的時候 被除數必須是16位 被除數存放在ax暫存器中 除數放在bl中 除到得 結果是 商是8位放在al中 餘數放在ah中 例子mov ax,0006h mov bl,02h div bl 使用debug除錯時 檢視結果 執行div bl 檢視ax的結果是 0003 可看出 ...