![匯編語言基礎(chǔ)課件_第1頁](http://file4.renrendoc.com/view10/M01/14/23/wKhkGWWtkYSATBR1AADQ7I_RtaU309.jpg)
![匯編語言基礎(chǔ)課件_第2頁](http://file4.renrendoc.com/view10/M01/14/23/wKhkGWWtkYSATBR1AADQ7I_RtaU3092.jpg)
![匯編語言基礎(chǔ)課件_第3頁](http://file4.renrendoc.com/view10/M01/14/23/wKhkGWWtkYSATBR1AADQ7I_RtaU3093.jpg)
![匯編語言基礎(chǔ)課件_第4頁](http://file4.renrendoc.com/view10/M01/14/23/wKhkGWWtkYSATBR1AADQ7I_RtaU3094.jpg)
![匯編語言基礎(chǔ)課件_第5頁](http://file4.renrendoc.com/view10/M01/14/23/wKhkGWWtkYSATBR1AADQ7I_RtaU3095.jpg)
版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球一次性使用體外血液循環(huán)管路行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球易碎紙不干膠標(biāo)簽行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國教育用交互式LED顯示屏行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 養(yǎng)殖場家禽合作合同書
- 醫(yī)療器械銷售勞動合同書
- 石膏買賣合同書樣本年
- 企業(yè)之間借款合同范本
- 維修承包合同
- 2025股份制辦廠合同范本
- 泵車租賃合同范本
- 混凝土試件臺賬
- 中英文財務(wù)報表空白模板(金融非金融完整版)
- 人機(jī)料法環(huán)測檢查表
- 中國數(shù)字貨運(yùn)發(fā)展報告
- 使用AVF血液透析患者的護(hù)理查房
- 《幼兒教師職業(yè)道德》教案
- 2021年高考山東卷化學(xué)試題(含答案解析)
- 客服百問百答
- GA/T 766-2020人精液PSA檢測金標(biāo)試劑條法
- 品管圈活動提高氧氣霧化吸入注意事項知曉率
評論
0/150
提交評論