第8章 資料處理的兩個基本問題 其二

2022-06-23 12:33:09 字數 2079 閱讀 9065

8.7  div指令

div是除法指令,使用div做除法的時候:

除數:8位或16位,在暫存器或記憶體單元中

被除數:(預設)放在ax或dx和ax中

結果:運算   8位  16位

商    al    ax

餘數    ah    dx

div指令格式:

div   reg

div   記憶體單元

div  byte   ptr   ds:[0]

含義為:al=ax/(ds*16+0)的商

ah=ax/(ds*16+0)的餘數

div  word  ptr  es:[0]

含義為:

ax=(dx*10000h+ax)/(ds*16+0)的商

dx=(dx*10000h+ax)/(ds*16+0)的餘數

利用除法指令計算100001/100.

我們首先分析一下,被除數100001大於65535,不能用ax暫存器存放,所以我們要用dx和ax兩個暫存器聯合存放100001,也就是說要進行16位的除法。

除數100小於255,可以在乙個8位暫存器中存放,但是,因為被除數是32位的,除數應

為16位,所以要用乙個16位暫存器來存放除數100.

因為要分別為dx和ax賦100001的高16位值和低16位值,所以應先將100001表示為十六進製制形式:186a1h

程式如下:

mov  dx,1

mov ax,86a1h;

mov bx,100

div bx

利用除法指令計算1001/100.

我們首先分析一下被除數1001可用ax暫存器存放,除數100可用8位暫存器存放,也就是說,要進行8位的除法。程式如下:

mov ax,1001

mov bl,100

div bl

程式執行後,al=0ah(商為10),ah=1(餘數為1)

8.8偽指令dd

前面我們用db和dw定義位元組型資料和字型資料。

dd是用來定義dword(double  word  雙字)型資料的。

data  segment

db 1

dw 1

dd 1

data  ends

在data段中定義了三個資料:

第乙個資料為01h,在data:0處,佔1個位元組;

第二個資料為0001h,在data:1處,佔1個字

第三個資料為00000001h,在data:3處,佔1個雙字,兩個字,4個位元組。

dup是乙個操作符,在組合語言中同db、dw、dd等一樣,也是由編譯器識別處理的符號。

它是和db、dw、dd等資料定義偽指令配合使用的,用來進行資料的重複。

dup示例:

db  3  dup(0)

定義了3個位元組,他們的值都是0,相當於  db   0,0,0

db  3  dup(0,1,2)

定義了9個位元組,他們是0、1、2、0、1、2、0、1、2

相當於  db  0,1,2,0,1,2,0,1,2

db  3  dup('abc','abc')

定義了18個位元組,他們是:

『abcabcabcabcabcabc'

可見,dup的使用格式如下:

db   重複的次數  dup (重複的位元組型資料)

dw   重複的次數  dup   (重複的字型資料)

dd    重複的次數  dup   (重複的雙字資料)

第8章 資料處理的兩個基本問題 筆記

p161 在8086cpu中,只有4個暫存器bx,si,di和bp可以用在 中進行記憶體單元的定址。在 中,這4個暫存器或者單個出現,或只能以4種組合出現 bx和si,bx和di,bp和si,bp和di。p162 只要在 中使用暫存器bp,而指令中沒有顯式地給出段位址,段位址就預設放在ss中。p16...

8 資料處理的兩個基本問題

1.兩個基本問題 1 處理的資料在什麼地方?2 處理的資料有多長?2.暫存器集合 reg ax,bx,cx,dx,al,ah,bl,bh,cl,ch,dl,dh,sp,bp,di,si 段暫存器集合 sreg cs,ds,ss,es 3.幾種錯誤的指令 1 mov ax,cx 2 mov ax,dx...

8 資料處理的兩個基本問題

1.兩個基本問題 1 處理的資料在什麼地方?2 處理的資料有多長?2.暫存器集合 reg ax,bx,cx,dx,al,ah,bl,bh,cl,ch,dl,dh,sp,bp,di,si 段暫存器集合 sreg cs,ds,ss,es 3.幾種錯誤的指令 1 mov ax,cx 2 mov ax,dx...