匯編語言基礎(chǔ)課件_第1頁
匯編語言基礎(chǔ)課件_第2頁
匯編語言基礎(chǔ)課件_第3頁
匯編語言基礎(chǔ)課件_第4頁
匯編語言基礎(chǔ)課件_第5頁
已閱讀5頁,還剩251頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1

基礎(chǔ)知識

數(shù)制

數(shù)制之間的轉(zhuǎn)換

運(yùn)算

原碼反碼補(bǔ)數(shù)

ASCII碼

BCD碼

數(shù)碼之間的處理關(guān)係

從不同的角度看待一個二進(jìn)位數(shù)2預(yù)備知識22=424=1628=256210=1024220=10485761K=210=1024(Kilo)1M=1024K=220

(Mega)1G=1024M=230(Giga)1個二進(jìn)位位:bit(比特)8個二進(jìn)位位:Byte(位元組)1Byte=8bit2個位元組:Word(字)1Word=2Byte=16bit31.數(shù)制

十進(jìn)位:基數(shù)為10,逢十進(jìn)一543.12=5×102+4×101+3×100+1×10-1+2×10-2

二進(jìn)位:基數(shù)為2,逢二進(jìn)一1101112=

1×25

+1×24

+1×22+1×21+1×20

=5510

十六進(jìn)制:基數(shù)為16,逢十六進(jìn)一1001,0001,1000,01119187=9×163+1×162+8×161+7×160

八進(jìn)制:基數(shù)為8,逢八進(jìn)一4數(shù)制基數(shù)數(shù)碼二進(jìn)位Binary20,1八進(jìn)制Octal80,1,2,3,4,5,6,7十進(jìn)位Decimal100,1,2,3,4,5,6,7,8,9十六進(jìn)制Hexadecimal160,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F5

二進(jìn)位十進(jìn)位

110111.11B=1×25+1×24+1×22+1×21+1×20+1×2-1+1×2-2=55.75D

整數(shù)部分:除基取餘法

例:N=55D

55/2=27餘數(shù)=1(a0)27/2=13餘數(shù)=1(a1)13/2=6餘數(shù)=1(a2)6/2=3餘數(shù)=0(a3)3/2=1餘數(shù)=1(a4) 1/2=0餘數(shù)=1(a5)

N=55D=110111B

2.數(shù)制之間的轉(zhuǎn)換6小數(shù)部分:乘基取整法

例:N=55D

0.425×2=0.85整數(shù)=0 0.85×2=1.70整數(shù)=1 0.70×2=1.40 整數(shù)=1 0.40×2=0.80 整數(shù)=0 0.80×2=1.60整數(shù)=1

N=0.425D=0.01101B7

二進(jìn)位十六進(jìn)制

0011010110111111

35BF∴

0011,0101,1011,1111B=35BFH

A19C

1010000110011100∴A19CH=1010,0001,1001,1100B8

十六進(jìn)制十進(jìn)位

BF3CH=11163+15162+3161+12160

降冪法除法

例:399D=?H39914315---256161

18F

∴399D=18FH9

算術(shù)運(yùn)算二進(jìn)位

加法規(guī)則乘法規(guī)則

0+0=000=00+1=101=01+0=110=01+1=0(進(jìn)位1)11=1十六進(jìn)制05C3H3D25H+3D25H-05C3H42E8H3762H3.運(yùn)算(算術(shù)運(yùn)算和邏輯運(yùn)算)10

邏輯運(yùn)算(按位bit操作)“非”運(yùn)算(NOT)A

A0110“與”運(yùn)算(AND)ABA

B000010100111“異或”運(yùn)算(XOR)ABA

B000011101110“或”運(yùn)算(OR)ABA

B00001110111111例:X=00FFHY=5555H,求Z=X

Y=?X=0000000011111111B

Y=0101010101010101B

Z=0101010110101010B

Z=55AAH124.原碼反碼補(bǔ)數(shù)

數(shù)(機(jī)器數(shù))的表示:電腦中的數(shù)用二進(jìn)位表示,數(shù)的符號也用二進(jìn)位表示。機(jī)器字長:指參與運(yùn)算的數(shù)的基本位數(shù),標(biāo)誌著計算精度,一般是位元組的整數(shù)倍(8位、16位、32位等)。假設(shè)機(jī)器字長n為8位76543210符號位數(shù)值位假設(shè)機(jī)器字長n為16位符號位數(shù)值位1514131211109876543210符號位=0表示正數(shù)符號位=1表示負(fù)數(shù)13常用表示法

——原碼反碼補(bǔ)數(shù)原碼表示法:符號+絕對值例:n=8bit[+3]原碼=0000,0011=03H[-3]原碼=1000,0011=83H[+0]原碼=0000,0000=00H[-0]原碼=1000,0000=80H

0的表示不唯一14反碼表示法:正數(shù)的反碼同原碼,負(fù)數(shù)的反碼數(shù)值位與原碼相反例:n=8bit[+5]反碼=0000,0101=05H[-5]反碼=1111,1010=FAH[+0]反碼=0000,0000=00H[-0]反碼=1111,1111=FFH

0的表示不唯一15補(bǔ)數(shù)表示法:IBM-PC採用補(bǔ)數(shù)表示法正數(shù)的補(bǔ)數(shù):同原碼

[+1]補(bǔ)數(shù)=00000001=01H[+127]補(bǔ)數(shù)=01111111=7FH[+0]補(bǔ)數(shù)=00000000=00H負(fù)數(shù)的補(bǔ)數(shù):(1)寫出與該負(fù)數(shù)相對應(yīng)的正數(shù)的補(bǔ)數(shù)(2)按位求反(3)末位加一例:機(jī)器字長8位,[-46]補(bǔ)數(shù)=?[46]補(bǔ)數(shù)=001011101101000111010010=D2H

機(jī)器字長16位,[-46]補(bǔ)數(shù)=FFD2H

按位求反末位加一16[-1]補(bǔ)數(shù)=11111111=FFH[-127]補(bǔ)數(shù)=10000001=81H[-0]補(bǔ)數(shù)=00000000=00Hn位補(bǔ)數(shù)的表數(shù)範(fàn)圍:-2n-1

N

2n-1-1n=8-128

N

127n=16-32768

N

3276717n位二進(jìn)位補(bǔ)數(shù)的表數(shù)範(fàn)圍十進(jìn)位二進(jìn)位十六進(jìn)制十進(jìn)位十六進(jìn)制

n=8n=16+127011111117F+327677FFF+126011111107E+327667FFE......……...+20000001002+20002+10000000101+100010000000000000000-111111111FF-1FFFF-211111110FE-2FFFE......……...-1261000001082-327668002-1271000000181-327678001-1281000000080-32768800018補(bǔ)數(shù)的加法和減法求補(bǔ)運(yùn)算

:對一個二進(jìn)位數(shù)按位求反、末位加一[X]補(bǔ)數(shù)

[-X]補(bǔ)數(shù)

[X]補(bǔ)數(shù)加法規(guī)則:[X+Y]補(bǔ)數(shù)=[X]補(bǔ)數(shù)+[Y]補(bǔ)數(shù)減法規(guī)則:[X-Y]補(bǔ)數(shù)=[X]補(bǔ)數(shù)+[-Y]補(bǔ)數(shù)補(bǔ)數(shù)減法可轉(zhuǎn)換為補(bǔ)數(shù)加法符號位參加運(yùn)算,能自動得到正確結(jié)果。無符號整數(shù):表數(shù)範(fàn)圍0

N

2n-1n=80

N

255n=160

N

6553519ASCII碼:用一個位元組來表示一個字元,低7位為字元的ASCII值,最高位一般用作校驗位。例:‘A’41H‘a(chǎn)’61H‘1’31H

換行0AH

回車0DH

空格20H5.字元的ASCII碼20

BCD碼的表示:一位十進(jìn)位的數(shù)用四位二進(jìn)位數(shù)碼來表示6.BCD碼例如:DBCD000001000120010:8100091001特點:每4位表示是二進(jìn)位的數(shù),4位與4位之間是十進(jìn)位的數(shù)即用二進(jìn)位的數(shù)碼表示十進(jìn)位的數(shù)。例如:16=00010110BCD=00010000B98=10011000BCD21BCD碼在機(jī)記憶體放形式:非壓縮形式

壓縮形式0000100000001001低高10011000BCD碼的運(yùn)算:壓縮的BCD碼的加法校正22例:37+47=8437的BCD碼為00110111B、47的BCD為01000111B第一步,先進(jìn)行二進(jìn)位加法 00110111 + 0100011101111110第二步,對二進(jìn)位數(shù)的相加結(jié)果進(jìn)行校正由於運(yùn)算結(jié)果01111110中的低4位大於9,故應(yīng)在低四位加6 01111110+0000011010000100最終結(jié)果為84H,既是84D的BCD碼,結(jié)果正確。23壓縮的BCD碼的減法校正例:84-47=3784的BCD碼(壓縮)為10000100B、47的BCD(壓縮)為01000111B第一步,先進(jìn)行二進(jìn)位減法 10000100 - 0100011100111101第二步,對二進(jìn)位數(shù)的相減結(jié)果進(jìn)行校正由於在運(yùn)算中低4位向高4位借了1,故應(yīng)在低四位減6 00111101-0000011000110111最終結(jié)果為37H,既是37D的BCD碼,結(jié)果正確。24非壓縮的BCD碼的加法校正例1.3.337+47=84第一步,先進(jìn)行二進(jìn)位加法 0000001100000111 + 00000100000001110000011100001110第二步,對二進(jìn)位數(shù)的相加結(jié)果進(jìn)行校正由於運(yùn)算結(jié)果中的低位元組的低4位大於9,故應(yīng)加6,而有輔助進(jìn)位位,直接將這一進(jìn)位位加到高位元組。 0000011100001110+1110000010000000010025最終結(jié)果為84H,既是84D的BCD碼,結(jié)果正確。非壓縮的BCD碼的減法校正例1.3.484-47=37第一步,先進(jìn)行二進(jìn)位減法 0000100000000100 - 00000100000001110000001111111101第二步,對二進(jìn)位數(shù)的相減結(jié)果進(jìn)行校正由於在運(yùn)算後,低位元組的低4位大於9,所以應(yīng)減6。 0000001111111101-110000000111111011126然後將結(jié)果的低位元組的高四位清0,結(jié)果為0307H,是37D的非壓縮的BCD碼,結(jié)果正確。BCD碼的乘法校正例:6×7=42第一步,先進(jìn)行二進(jìn)位乘法 00000110 ×0000011111011001100000101010第二步,對二進(jìn)位數(shù)的相成結(jié)果進(jìn)行校正00101010÷1010=00000100餘0000001027校正的實質(zhì)是對二進(jìn)位數(shù)的乘積除以10D,商為乘積的高位,餘數(shù)為乘積的低位,故最終結(jié)果為42D。BCD碼的除法校正例:45÷7=6餘3

BCD碼的除法與加、減、乘不同,是先校正,再做二進(jìn)位除。校正的實質(zhì)是將被除數(shù)(十進(jìn)位數(shù))轉(zhuǎn)換為二進(jìn)位數(shù)。如上例,將45的高位乘以10D再加上低位轉(zhuǎn)換為二進(jìn)位數(shù)。第一步,先校正00000100×1010+00000101=0000000000101101第二步,作除法0000000000101101÷00000111=00000110餘0000001128結(jié)果為6餘3。在Intel8088/8086中,有專門的BCD碼校正指令來完成校正操作。

29數(shù)的輸入:每位二進(jìn)位數(shù)用ASCII碼輸入BCD碼存放二進(jìn)位數(shù)值存放減30H十轉(zhuǎn)二處理用十進(jìn)位調(diào)整指令數(shù)的輸出:二進(jìn)位數(shù)BCDASCII碼按位輸出二轉(zhuǎn)十(除10取餘直至商為0)各位加30H非壓縮7.數(shù)碼之間的處理關(guān)係軟體:系統(tǒng)軟體(核心是操作系統(tǒng)OS)

MASM.EXE

TASM.EXE

LINK.EXE

TLINK.EXE

DEBUG.EXE

用戶軟體

1981年推出CPU採用晶片8088,機(jī)器字長16位,

數(shù)據(jù)線8根,地址線20根,1MRAM,40KROMIBMPC

2.2微處理器的結(jié)構(gòu)IBMPC機(jī)的CPU組成:

8086/8088的寄存器組(14個寄存器):

數(shù)據(jù)寄存器(4個通用寄存器)

指針及變址寄存器

段寄存器

控制寄存器算術(shù)邏輯部件ALU控制邏輯工作寄存器圖2.2:8086處理器功能框圖功能:存放運(yùn)算元或運(yùn)算結(jié)果等資訊組成:AX:AH+AL--累加器

BX:BH+BL--基址寄存器

CX:CH+CL--計數(shù)器

DX:DH+DL--數(shù)據(jù)寄存器ABCDABCDX:字操作寄存器(16位)H或ABCDL為位元組操作寄存器(8位)該寄存器組既可作16位寄存器(AX,BX,CX,DX),又可作按高8位和低8位作8位寄存器使用。即如:AH

ALAX1570字寄存器低位元組(8位)高位元組(8位)位元組寄存器數(shù)據(jù)寄存器功能:存放運(yùn)算元的偏移地址組成:5個16位寄存器組成:

SI:源變址寄存器

DI:目的變址寄存器

SP:棧頂?shù)刂芳拇嫫鳎ㄏ鄬禨S是偏移地址):SP是棧頂指針

BP:對堆疊操作的基址寄存器

BX:變址器由於運(yùn)算元的偏移地址只能用16位二進(jìn)位數(shù)表示,因此:SI,DI,SP,BP都是16位寄存器,而不能作8位寄存器使用。說明:(1)僅SI,DI,BX,BP能作基址或變址寄存器,SI,DI作變址器,BX,BP

作變址器又作基址器(2)SI,DI,BP作數(shù)據(jù)寄存器使用時,用來保存運(yùn)算元和運(yùn)算結(jié)果,只能作16位字寄存器而不是8位寄存器。指針及變址寄存器

IBMPC中有4個專門存放段地址的段寄存器(16位)代碼段寄存器CS數(shù)據(jù)段寄存器DS堆疊段寄存器SS附加段寄存器ES例:(DS)=3000H,EA=1234H,

物理地址=16d

(DS)+EA=31234H記憶體8K代碼2K數(shù)據(jù)256堆疊02000H04800H04000H0200H0400H0480H段寄存器

IP指令指針寄存器(存放代碼段中的偏移地址,始終指向下一條指令的首地址)標(biāo)誌寄存器FLAGS:包含了9個標(biāo)誌位,由6個狀態(tài)標(biāo)誌位和3個控制標(biāo)誌位構(gòu)成,主要用於反映處理器的狀態(tài)和運(yùn)算結(jié)果的某些特徵。各標(biāo)誌位在標(biāo)誌寄存器中的位置如下所示:

控制寄存器1.進(jìn)位位CF(CF)=1:當(dāng)結(jié)果最高位(位元組第七位,字第15位)產(chǎn)生一個進(jìn)位和錯位0:不產(chǎn)生進(jìn)位或借位2.溢出位OF(OF)=1:有溢出,運(yùn)算結(jié)果超過了範(fàn)圍如:帶符號數(shù):位元組:-128-127D

字:-32768-327670:無溢出注意:溢出與進(jìn)位兩個概念是不同的。例如:01100100+0110010011001000=[+100]補(bǔ)=64H=[+100]補(bǔ)=64H+為+200D超出+127兩個正數(shù)相加變成了負(fù)數(shù)故溢出則(OF)=1,(CF)=0,稱為無進(jìn)位的溢出又例如:10101011+1111111110101010CF10ABH=[-55H]補(bǔ)=-850FFH=[-1]補(bǔ)=-10AAH=[-56H]補(bǔ)=-86+後為-86則:無溢出但有進(jìn)位位:(OF)=0,(CF)=13.符號標(biāo)誌位SF(SF)=1:最高位為1:負(fù)數(shù)0:最高位為0:正數(shù)4.零標(biāo)誌位ZF(ZF)=1:運(yùn)算結(jié)果為00:運(yùn)算結(jié)果不為05.輔助進(jìn)位標(biāo)誌位AF(AF)=1:位元組

字0……7430有進(jìn)位或借位158706.奇偶標(biāo)誌位PF(PF)=1:當(dāng)運(yùn)算結(jié)果(指低8位)中的‘1’的個數(shù)為偶數(shù)0:運(yùn)算結(jié)果(指低8位)中的‘1’的個數(shù)為奇數(shù)控制位:由指令設(shè)置,使系統(tǒng)設(shè)置情況操作7.方向控制位DF(DF)置1:從高地址單元到低地址單元處理串置0:從低地址單元到高地址單元處理串8.中斷允許控制位IF(IF)置1開中斷:允許CPU接受外部中斷請求置0關(guān)中斷:禁止CPU接受外部中斷請求9.追蹤控制位TF(TF)置1:CPU處於單步執(zhí)行程式狀態(tài),即CPU每執(zhí)行一條指令產(chǎn)生1號中斷。用於調(diào)試程式置0:CPU連續(xù)執(zhí)行程式32位寄存器2.3記憶體記憶體是用來存放程式、數(shù)據(jù)、中間結(jié)果和最終結(jié)果的記憶裝置。

存儲單元的地址和內(nèi)容

記憶體以位元組(8bit)為單位存儲資訊

每個位元組單元有一個地址,從0編號,順序加1

地址也用二進(jìn)位數(shù)表示(無符號整數(shù),寫成十六進(jìn)制)

16位二進(jìn)位數(shù)可表示216=65536=64K個地址0000H~FFFFH

字長16位,一個字要佔用相繼的兩個位元組

低位位元組存入低地址,高位位元組存入高地址

機(jī)器以偶地址訪問(讀/寫)記憶體

字單元地址用它的低地址來表示76543210100111110000H(0000H)=9FH001001100001H(0001H)=26H000111100002H110101110003H記憶體1514131211109876543210字高位位元組低位位元組1001111100100110(0000H)=269FH

記憶體地址的分段

20根地址線220=1024K=1M=1048576地址范圍00000H~FFFFFH

小段:每16個位元組為一小段,共有64K個小段

00000H~0000FH00010H~0001FH00020H~0002FH…FFFF0H~FFFFFH

記憶體分段:段起始地址必須是某一小段的首地址,段的大小可以是64K範(fàn)圍內(nèi)的任意位元組。物理地址:每個存儲單元的唯一的20位地址

段基值:段起始地址的高16位

偏移量:段內(nèi)相對於段起始地址的位移量(16位)(有效地址EA)

物理地址=16d

段基值+偏移量16位段基值16位偏移量0000+20位物理地址

IBMPC中有4個專門存放段地址的段寄存器(16位)代碼段寄存器CS數(shù)據(jù)段寄存器DS堆疊段寄存器SS附加段寄存器ES例:(DS)=3000H,EA=1234H,

物理地址=16d

(DS)+EA=31234H記憶體8K代碼2K數(shù)據(jù)256堆疊02000H04800H04000H0200H0400H0480H保護(hù)模式下的存儲管理堆疊在內(nèi)存中開闢的一片連續(xù)的存儲區(qū)作用:存放數(shù)據(jù)特點:(1)一端固定,另一端活動(2)存取數(shù)據(jù)的原則:“先進(jìn)後出”(3)進(jìn)或出棧只能是字?jǐn)?shù)據(jù),不能是位元組數(shù)據(jù)(4)棧的最大容量64KB(5)SP總是指向棧頂,它的內(nèi)容是相對SS的地址偏移量(6)數(shù)據(jù)入棧時,棧頂均由高地址向低地址變化數(shù)據(jù)出棧時,棧頂均由低地址向高地址變化2.4堆疊2.出棧指令

格式:POPDST;DST表示的目的運(yùn)算元地址功能:將當(dāng)前棧頂一個字?jǐn)?shù)據(jù)彈出到16位寄存器(除CS外)或記憶體單元中操作:([SP])DST低8位

(SP)+1SP([SP])DST高8位

(SP)+1SP例:POPBXPOPDL×棧頂操作指令1.進(jìn)棧指令

格式:PUSHSRC;SRC表示源運(yùn)算元地址功能:將SRC表示的寄存器或記憶體單元中的字?jǐn)?shù)據(jù)壓入棧頂操作:(SP)-1SP;修改棧頂指針的內(nèi)容(SRC)高8位↓(SP);送高8位位元組數(shù)據(jù)(SP)-1SP;又修改棧頂指針的內(nèi)容(SRC)低8位↓(SP);送低8位位元組數(shù)據(jù)例:PUSHAXPUSHAL×

50一.立即尋址方式格式:n

;n為一常數(shù)(立即數(shù))特點:n

本身是需要尋找的操作對象。它緊跟指令存於記憶體代碼段中。例:MOVBX,10

MOVAH,‘A’

MOVAX,3064H3.1尋址方式51記憶體::MOV64H30H:低高代碼段CPU:

AX

AHAL注:?

立即數(shù)只能作雙運(yùn)算元指令的源運(yùn)算元,不能作目的運(yùn)算元。

?

立即數(shù)不能作單運(yùn)算元指令的運(yùn)算元。如:MOV100H,AX×INC50

×

?

立即數(shù)送入目的運(yùn)算元中,注意溢出如:MOVAL,-90H×

52二.直接尋址方式?

格式:段寄存器:[EA](其中:段寄存器為DS,ES,SS之一)或含有變數(shù)的地址運(yùn)算式。?

特點:

?

運(yùn)算元的地址偏移量EA,或變數(shù)地址運(yùn)算式的EA直接包含在指令中,與操作碼一起放在代碼段中。

?

運(yùn)算元對象一般不作特別說明,存放在當(dāng)前數(shù)據(jù)段中,其物理地址求法為:(DS)0000+EA

4例:MOVAX,DS:[2000H];((DS)+2000H)AX

設(shè)執(zhí)行前(DS)=3000H4(32000H)=2415H

則執(zhí)行後(32000H)字

AX即(AX)=2415H

MOVAL,DS:[2000H]

則(32000H)位元組

AL即(AL)=15H53

:

MOV0000

00H

4

20H+::

15H

32000H

24H

32001H:代碼段數(shù)據(jù)段3000H記憶體這說明:?段寄存器:[EA]這種直接尋址方式?jīng)]有類型;?含有變數(shù)地址運(yùn)算式的形式有類型,其類型由變數(shù)類型決定。例:MOVAX,ES:[2000H];((ES)+2000H)AX

段跨越符4

MOVSS:[1000H],BX;(BX)

(SS)+1000H

4

MOVBUF,AXMOV[BUF],AXDS54寄存器尋址方式*—運(yùn)算元在指定的寄存器中

MOVAX,BXMOVAL,BH*位元組寄存器只有AHALBHBLCHCLDHDL*SRC和DST的字長一致

MOVAH,BX*CS不能用MOV指令改變

MOVCS,AX三、寄存器尋址方式55格式:[R];其中R為BX,BP,SI,DI之一,不允許是其他寄存器。特點:操作對象在內(nèi)存中,操作對象的EA在BX,BP,SI,DI之一中。(不在內(nèi)存)即:EA=(BX)(BP)(SI)(DI)

注:(1)若選擇[BX],[SI],[DI]之一,且缺省段跨越符,則對象在當(dāng)前的數(shù)據(jù)段中;四、寄存器間接尋址方式56例:MOVAX,[BX];((DS)+(BX))AX

4

若執(zhí)行前(DS)=2000H,(BX)=1000H:MOVAX,[BX]DSBX::40A0H21000H+50H21001H:

數(shù)據(jù)段2000H1000H50H0A0H記憶體AX(2)若缺省段跨越符,且BP作間址寄存器,則對象存放在當(dāng)前堆疊段中。如:MOVBX,[BP];((SS)+(BP))BX

457(3)若指定段跨越符,則不管BP,BX,SI,DI之一作變址器,都取相應(yīng)段中數(shù)據(jù)。如:MOVES:[BP],AX;(AX)(ES)+(BP)MOVAX,ES:[BX];((ES)+(BX))AX

4注:?

間址器一定要是BP,BX,SI,DI之一如:MOVCX,[AX]×

?

間接尋址方式表示對象的地址,並不能表示對象的類型。58格式:X[R];其中R為BX,BP,SI,DI之一。

X為一整常數(shù)或變數(shù)地址運(yùn)算式。特點:?

操作對象在內(nèi)存中

?

EA為R的內(nèi)容和X之和(即:X在代碼段中,EA另一部分在R中)。EA=X+(SI)X+(DI)X+(BX)X+(BP)缺省段跨越符的物理地址(DS)+(SI)+X

4(DI)+X(BX)+X(SS)+(BP)+X

4五.相對尋址方式59例:MOVCX,-6[BX];((DS)+(BX)-6)CX

設(shè)執(zhí)行前:(BX)=16H,(DS)=2000H,(20010H)=3789H

執(zhí)行:執(zhí)行後(CX)=3789H,其他寄存器內(nèi)容不變。:DSBX

MOVCX

OFFH

OFAH+:89H20010H37H20011H:代碼段數(shù)據(jù)段2000H16H-6例:MOV[BX+7],BXMOVDL,4[AX]×MOVBX,ES:ABC[SI];其中ABC為變數(shù)名,它表示變數(shù)到所在段段首址的EA60格式:[BR+IR]

其中:BR為基址寄存器,僅為BX和BP之一;

IR為變址寄存器,僅為SI和DI之一。特點:?

操作對象在內(nèi)存中。

?

運(yùn)算元的EA=(BX)+(SI)或(DI)(BP)+(SI)或(DI)

?缺省段跨越符,其物理地址:

(DS)+(BX)+(SI)或DI

4(SS)+(BP)+(SI)或DI

4例:MOVAX,[BX+BP]×MOV[SI+DI],CX×MOV[BX+CX],AX×六.基址變址尋址方式61例:MOVAX,[BX+DI]

MOVAX,[BX][DI]

設(shè)執(zhí)行前(DS)=2100H(BX)=158H(DI)=10A5H(221FDH)=1234HEA=158H+10A5H=11FDH∴物理地址:(DS)+EA=21000H+11FDH=221FDH

4:DSBXDI指令碼

:4

:+34H221FDH12H221FEH:2100H158H10A5H數(shù)據(jù)段執(zhí)行後:(AX)=1234H當(dāng)MOVAL,[BX+DI];(221FDH)位元組=34H

AL即(AL)=34H62格式:X[BR+IR]

其中:BR為基址器,僅為BX,BP之一;

IR為變址器,僅為SI,DI之;

X為一整常數(shù)或已定義的變數(shù)名。特點:

?對象在內(nèi)存中;

?運(yùn)算元的EA=(BX)+(SI)或(DI)+X(X為變數(shù)名,則該變數(shù)名到所在段的段首的位元組個數(shù))(BP)+(SI)或(DI)+X七.相對基址變址尋址方式63例:MOVAX,8[BX+SI]

執(zhí)行前:(AX)=45H,(BX)=30H,(SI)=20H,(DS)=1000H(10058H)=99H:

指令碼

8::99H0:代碼段數(shù)據(jù)段

DS

BX

SI

+10058H10059H

執(zhí)行後:(10058H)AX(AX)=99H1000H30H20H例:MOVDX,M[BX+DI];設(shè)M已定義在數(shù)據(jù)段中

MOVSS:[BX+SI+7],CX;物理地址=(SS)+(BX)+(SI)+7

464習(xí)題:1.分別指出下列指令中源運(yùn)算元和目的運(yùn)算元的尋址方式

①MOVSI,’C’④ADDCX,DS:[10H]②MOV[BX+3],AX⑤MOVDL,[BP+DI]③SUB[BX][SI],AL⑥MOV[BX],AX2.指出下列各尋址中的錯誤,並說明原因

①MOV100H,AX④MOV[BX+BP],[SI]②MOV[CX],AH⑤ADDAX,[DI+SI]③ADDAX,BL⑥MOVAH,1000⑦POPCL3.已(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=0ADH,(BX)=100H,(BP)=10H,試指出下列源運(yùn)算元的尋址方式是什麼?其物理地址值是什?(1)MOVAX,DS:[100H](2)MOVBX,[SI](3)MOVCX,[BX+10H](4)MOVAX,[BX][SI](5)MOVCL,[BP+4](6)MOVCH,ES:[BP+SI]65

數(shù)據(jù)傳送指令

算術(shù)運(yùn)算指令

邏輯運(yùn)算指令

串操作指令

程式轉(zhuǎn)移指令

處理機(jī)控制指令注意:1.指令的基本功能

2.指令的執(zhí)行對標(biāo)誌位的影響

3.對尋址方式或寄存器使用的限制和隱含使用的情況3.2指令系統(tǒng)66

功能:負(fù)責(zé)把數(shù)據(jù),地址或立即數(shù)送到寄存器或記憶體單元中。

1.傳送指令:MOV

格式:MOVDEST,SC功能:(SRC)DEST立即數(shù)傳送到通用寄存器或存儲單元MOVCL,25H;位元組傳送MOVAX,4321H;字傳送MOVDA_BYTE,34H;位元組傳送

MOVDA_WORD,4321H;字傳送

注意:立即數(shù)只能出現(xiàn)在源運(yùn)算元位置,不能作為目的運(yùn)算元

一.數(shù)據(jù)傳送指令67寄存器之間的傳送MOVBL,DL;位元組傳送MOVDX,CX;字傳送MOVES,AX;通用寄存器與段寄存器之間傳送注意:段寄存器CS僅只能作源運(yùn)算元,不能作目的運(yùn)算元。

68寄存器與存儲單元之間的傳送MOVDL,DA_BYTE;位元組傳送MOVAX,DA_WORD;字傳送MOVDA_BYTE,CL;位元組傳送MOVDA_WORD,DX;字傳送注意:兩個存儲單元之間不能用一條MOV指令直接完成數(shù)據(jù)傳送。立即數(shù)不能直接傳送給段寄存器,且段寄存器之間亦不能進(jìn)行直接傳送。69立即數(shù)記憶體通用寄存器AXBXCXDXBPSPSIDICS段寄存器DSESSS圖3.7MOV指令的數(shù)據(jù)傳送方向70格式:XCHGDEST,SRC功能:(SRC)?(DEST)例:XCHGAL,AH;(AL)?(AH)注:SRC或DEST均不能為立即數(shù)二.交換指令71

標(biāo)誌送AH指令:LAHF

執(zhí)行操作:(AH)

(PSW的低位元組)

AH送標(biāo)誌寄存器指令:SAHF

執(zhí)行操作:(PSW的低位元組)

(AH)

標(biāo)誌進(jìn)棧指令:PUSHF

執(zhí)行操作:(SP)

(SP)-2((SP)+1,(SP))

(PSW)

標(biāo)誌出棧指令:POPF

執(zhí)行操作:(PSW)

(SP)+1,(SP))(SP)

(SP)+2*影響標(biāo)誌位三.標(biāo)誌寄存器傳送指令72

有效地址送寄存器指令:LEAREG,SRC

執(zhí)行操作:(REG)

SRC

指針?biāo)图拇嫫骱虳S指令:LDSREG,SRC

執(zhí)行操作:(REG)

(SRC)(DS)

(SRC+2)4個相繼位元組

寄存器(通常是SI)、DS

指針?biāo)图拇嫫骱虴S指令:LESREG,SRC

執(zhí)行操作:(REG)

(SRC)(ES)

(SRC+2)4個相繼位元組

寄存器(通常是DI)、ES四.地址傳送指令73例:LEABX,[BX+SI+0F62H]

例:LDSSI,[10H]例:LESDI,[BX]例:(DS):1000H40H00H

00H

30H

TABLEMOVBX,TABLE;(BX)=0040HMOVBX,OFFSETTABLE;(BX)=1000HLEABX,TABLE;(BX)=1000HLDSBX,TABLE;(BX)=0040H;(DS)=3000HLESBX,TABLE;(BX)=0040H;(ES)=3000H注意:

*

不影響標(biāo)誌位

*REG不能是段寄存器

*SRC必須為記憶體尋址方式74換碼指令:XLAT或XLATOPR執(zhí)行操作:(AL)

((BX)+(AL))例:MOVBX,OFFSETTABLE;(BX)=0040HMOVAL,3XLATTABLE

指令執(zhí)行後(AL)=33H注意:*

不影響標(biāo)誌位*位元組表格(長度不超過256)

首地址(BX)*

需轉(zhuǎn)換代碼(AL)(BX)

30HF004031HF0041(AL)=332HF004233HF0043TABLE(DS)=F000H五.換碼指令75

加法指令

減法指令

乘法指令

除法指令

十進(jìn)位調(diào)整指令

3.2.2算術(shù)指令76

加法指令

加法指令:ADDDST,SRC

執(zhí)行操作:(DST)

(SRC)+(DST)

帶進(jìn)位加法指令:ADCDST,SRC

執(zhí)行操作:(DST)

(SRC)+(DST)+CF

加1指令:INCOPR

執(zhí)行操作:(OPR)

(OPR)+1注意:

*

除INC指令不影響CF標(biāo)誌外,均對條件標(biāo)誌位有影響。77加法指令對條件標(biāo)誌位(CF/OF/ZF/SF)的影響:CF位表示無符號數(shù)相加的溢出。OF位表示帶符號數(shù)相加的溢出。1結(jié)果為負(fù)0否則SF=1結(jié)果為00否則ZF=1和的最高有效位有向高位的進(jìn)位0否則CF=1兩個運(yùn)算元符號相同,而結(jié)果符號與之相反0否則OF=78無符號數(shù)溢出00000111+1111101100000010帶:(+7)+(-5)=+2OF=0無:7+251=2CF=1帶符號數(shù)和無符號數(shù)都不溢出00000100+0000101100001111帶:(+4)+(+11)=+15OF=0無:4+11=15CF=0帶符號數(shù)溢出00001001+0111110010000101帶:(+9)+(+124)=-123OF=1無:9+124=133CF=0帶符號數(shù)和無符號數(shù)都溢出10000111+1111010101111100帶:(-121)+(-11)=+124OF=1無:135+245=124CF=1n=8bit帶符號數(shù)(-128~127)無符號數(shù)(0~255)79例:雙精度數(shù)的加法

(DX)=0002H(AX)=0F365H

(BX)=0005H(CX)=0E024H

指令序列

(1)ADDAX,CX

(2)ADCDX,BX

(1)執(zhí)行後,(AX)=0D389HCF=1OF=0SF=1ZF=0

(2)執(zhí)行後,(DX)=0008HCF=0OF=0SF=0ZF=080

減法指令

減法指令:SUBDST,SRC

執(zhí)行操作:(DST)

(DST)-(SRC)

帶借位減法指令:SBBDST,SRC

執(zhí)行操作:(DST)

(DST)-(SRC)-CF

減1指令:DECOPR

執(zhí)行操作:(OPR)

(OPR)-1

求補(bǔ)指令:NEGOPR

執(zhí)行操作:(OPR)

-(OPR)

比較指令:CMPOPR1,OPR2

執(zhí)行操作:(OPR1)-(OPR2)注意:*

除DEC指令不影響

CF標(biāo)誌外,均對條件標(biāo)誌位有影響。81減法指令對條件標(biāo)誌位(CF/OF/ZF/SF)的影響:CF位表示無符號數(shù)減法的溢出。OF位表示帶符號數(shù)減法的溢出。NEG指令對CF/OF的影響:CF位:運(yùn)算元為0時,求補(bǔ)的結(jié)果使CF=0,否則CF=1。OF位:位元組運(yùn)算對-128求補(bǔ)或字運(yùn)算對-32768求補(bǔ)時OF=1,否則OF=0。1被減數(shù)的最高有效位有向高位的借位0否則CF=1兩個運(yùn)算元符號相反,而結(jié)果的符號與減數(shù)相同0否則OF=1減法轉(zhuǎn)換為加法運(yùn)算時無進(jìn)位0否則CF=或82例:x、y、z均為雙精度數(shù),分別存放在地址為X,X+2;

Y,Y+2;Z,Z+2的存儲單元中,用指令序列實現(xiàn)

w

x+y+24-z,並用W,W+2單元存放w。

MOVAX,XMOVDX,X+2ADDAX,YAD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論