版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
小數(shù)十→二:乘2取整
方法:對十進(jìn)制數(shù)逐次乘2,
小數(shù)點(diǎn)前邊系數(shù)為系數(shù)ki。二
十六
二→十六:以小數(shù)點(diǎn)為界向左向右四位一段,不夠補(bǔ)0,
四位二進(jìn)制數(shù)用一位十六進(jìn)制數(shù)表示。例:(1101001.0100111)2→(69.4E)16
不夠補(bǔ)0
不夠補(bǔ)0(0110,1001.0100,1110)2=(69.4E)16
8421碼!!!常用的ASCⅡ字符:
0—9的ASCⅡ碼為:30H—39H
A—Z的ASCⅡ碼為:41H—5AH
a—z的ASCⅡ碼為:61H—7AH二
BCD BCD數(shù):通常稱為8421碼,每一位十進(jìn)制數(shù)用四位二進(jìn)制編碼表示。
1001B 9D 1001BCD
1010B
10D00010000BCD
BCD碼與二進(jìn)制數(shù)之間轉(zhuǎn)換沒有直接關(guān)系, 必須先轉(zhuǎn)換成十進(jìn)制,然后轉(zhuǎn)換成二進(jìn)制。例:1111111B=255D=0010,0101,0101BCD0010,0101,0101BCD=255D=11111111B
十進(jìn)制二進(jìn)制八進(jìn)制十六進(jìn)制BCD
00 0 0 0 1 01 1 1 1 2 10 2 2 10 3 11 3 3 11 4 100 4 4 100 5 101 5 5 101 6 110 6 6 110 7 111 7 7 111 8 1000 10
8 1000 9 1001 11 9 1001
10 1010 12 A
10000 11 1011 13 B 10001 12 1100 14 C 10010 13 1101 15 D 10011 14 1110 16 E 10100 15 1111 17 F 10101 16 10000 20 10 10110 。 。 。 11 。 。 。 。 12 。 。 。 。 。 。(255)D 11111111B 377Q FFH (10,0101,0101)BCD正數(shù):原,反,補(bǔ)相同。
負(fù)數(shù):原,反,補(bǔ)不同,但最高位為1。
負(fù)數(shù): 原→反,符號位不變,尾數(shù)按位求反。
原→補(bǔ),符號位不變,尾數(shù)按位求反+1。
補(bǔ)→原,符號位不變,尾數(shù)求反+1。
反→原,符號位不變,尾數(shù)求反。正數(shù)反碼表示與原碼相同,(最高位“0”表示正,其余位為數(shù)值位。)
負(fù)數(shù)的反碼表示為負(fù)數(shù)原碼的符號位不變尾數(shù)按位取反。補(bǔ)碼:
正數(shù)的補(bǔ)碼表示與原碼相同, (最高位用“0”表示正,其余位為數(shù)值位。)
負(fù)數(shù)的補(bǔ)碼表示為它的反碼+1。位(bit)
指計(jì)算機(jī)能表示的最基本最小的單位
在計(jì)算機(jī)中采用二進(jìn)制表示數(shù)據(jù)和指令,故:
位就是一個(gè)二進(jìn)制位,有兩種狀態(tài),“0”和“1”字節(jié)(Byte)相鄰的8位二進(jìn)制數(shù)稱為一個(gè)字節(jié)1Byte=8bit
如:1100001101010111字是CPU內(nèi)部進(jìn)行數(shù)據(jù)處理的基本單位。字長是每一個(gè)字所包含的二進(jìn)制位數(shù)。常與CPU內(nèi)部的寄存器、運(yùn)算裝置、總線寬度一致把一個(gè)字定為16位,1Word=2Byte
一個(gè)雙字定為32位
1DWord=2Word=4Byte存儲器I/O接口輸入設(shè)備I/O接口數(shù)據(jù)總線DB控制總線CB地址總線AB輸出設(shè)備CPUDSESSSCSIP數(shù)據(jù)暫存器執(zhí)行部件控制電路指令譯碼器總線接口控制電路AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組BIUABDBCB地址加法器指令隊(duì)列PSW標(biāo)志寄存器EU運(yùn)算器DSESSSCSIP數(shù)據(jù)暫存器執(zhí)行部件控制電路指令譯碼器總線接口控制電路AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組ABDBCB地址加法器指令隊(duì)列PSW標(biāo)志寄存器運(yùn)算器8086CPU結(jié)構(gòu)2微機(jī)的工作過程計(jì)算機(jī)的工作原理是:“存儲程序”+“程序控制”CPU總線內(nèi)存標(biāo)志寄存器地址總線AB程序數(shù)據(jù)數(shù)據(jù)總線DB控制總線CB地址譯碼器、、、指令1指令2指令3指令4、、、、、、數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3、、、指令寄存器數(shù)據(jù)暫存器控制電路指令譯碼器地址寄存器指令指針寄存器R1R2R3R4寄存器組運(yùn)算器IP8086、8088尋址方式(一)立即尋址 (Immediateaddressing)
操作數(shù)直接存放在指令中,緊跟在操作碼之后,作為指令的一部分,存放在代碼段里,這種操作數(shù)稱為立即數(shù)
MOVAL,05H
指令執(zhí)行后:(AL)=05H(二)寄存器尋址(Registeraddressing)指令執(zhí)行前:(AX)=3064H(SS)=1234H
MOVSS,AX指令執(zhí)行后:(SS)=3064H(AX)保持不變。(三)直接尋址(Directaddressing)MOVAX,[3100H]如果(DS)=6000H,則(63100H)=3050H所以:(AX)=3050H(四)寄存器間接尋址(Registerindirectaddressing)若選擇SI、DI、BX作為間接尋址 操作數(shù)一般在現(xiàn)行數(shù)據(jù)段區(qū)域中,隱含用DS作為段地址。操作數(shù)物理地址為:
物理地址PA=16d×(DS)+(BX) 物理地址PA=16d×(DS)+(SI) 物理地址PA=16d×(DS)+(DI)若選擇BP寄存器作為間接尋址操作數(shù)在堆棧段區(qū)域中,用SS寄存器的內(nèi)容作為段地址。操作數(shù)物理地址:PA=16d×(SS)+(BP)用SI、DI、BX、BP作為間接尋址允許段跨越
指令中可以指定段跨越前綴來取得其他段中的數(shù)據(jù)。例:MOVES:[DI],AX;DS:DIMOVDX,DS:[BP];SS:BP(五)寄存器相對尋址(Registerrelativeaddressing) 或寄存器變址尋址(IndexAddressing)(六)基址加變址尋址(Basedindexedaddressing)(七)相對基址加變址尋址(Relativebasedindexedaddressing
)當(dāng)用于條件轉(zhuǎn)移指令時(shí),位移量只允許8位;
用于無條件轉(zhuǎn)移指令時(shí),位移量8位時(shí)稱為短跳轉(zhuǎn)。
JMPNEARPTRPROGIA;(IP)←(IP)當(dāng)前+16位位移量JMPSHORTQUEST; (IP)←(IP)當(dāng)前+8位位移量調(diào)用指令(CALL)也適用。上例中PROGIA、QUEST均為符號地址,因此轉(zhuǎn)移將轉(zhuǎn)向符號地址。而轉(zhuǎn)移量在編譯后的機(jī)器碼中用相對偏移量表示。指令執(zhí)行前:設(shè):(DS)=2000H,(BX)=1256H,(SI)=528FH, TABLE=20A1H,(232F7H)=3280H,(264E5H)=2450H例1、JMPBX
指令執(zhí)行后:(IP)=1256H例2、JMPWORDPTRTABLE[BX]
指令執(zhí)行后:
PA=16d
(DS)+(BX)+TABLE=232F7H(IP)=3280H=(232F7H)例3、JMPWORDPTR[BX][SI]
指令執(zhí)行后:
PA=16d
(DS)+(BX)+(SI)=264E5H(IP)=2450H=(264E5H)注意:如果指令操作數(shù)已被定義為16位的存儲器,則:
WORDPTR可以省去。通用寄存器包括4個(gè)16位寄存器: AX、BX、CX、DX。用于存放字操作數(shù)。
4個(gè)16位通用寄存器可以當(dāng)作8位寄存器使用: AH、AL、BH、BL、CH、CL、DH、DL存放字節(jié)操作數(shù)。通用寄存器、基址(地址指針)寄存器可以作為源操作數(shù),也可以作為目標(biāo)操作數(shù)。
與通用寄存器或存儲器傳送數(shù)據(jù)時(shí),段寄存器可以作為源操作數(shù)或目標(biāo)操作數(shù).段寄存器DS、ES、SS、CS存放當(dāng)前的段地址。對段寄存器ES、DS、SS進(jìn)行賦值,不能將立即數(shù)直接送段寄存器,要將立即數(shù)送通用寄存器,再從通用寄存器送段寄存器。CS一般不用賦值。EA=基址+(變址
比例因子)+位移量
位移量:8位,16位,32位。
比例因子:取1,2,4,8。Intel8086的基本尋址方式:
1、立即數(shù)尋址2、寄存器尋址3、直接尋址4、寄存器間接尋址5、寄存器相對尋址/寄存器變址尋址6、基址加變址尋址7、相對基址加變址尋址直接——直接從地址中取操作數(shù)間接——操作數(shù)地址在寄存器中變址——由SI、DI指示操作數(shù)的地址基址——由BX(隱含DS)、BP(隱含SS)指示操作數(shù)地址相對——加一個(gè)8/16位地址偏移量
MOVMEM2,MEM1;錯(cuò)。
MOVDS,2000H;錯(cuò)。
MOVES,DS;錯(cuò)
MOVCS,AX;錯(cuò)
MOVAX,CS;對
MOVIP,AX;錯(cuò)MOV dest, src;(dest)
(src) 目的 源 目的
源功能:把一個(gè)字節(jié)(B)或一個(gè)字(W)操作數(shù)由源傳送至目的。實(shí)現(xiàn): 寄存器
寄存器/存儲器之間;立即數(shù)
寄存器/存儲器 寄存器/存儲器
段寄存器之間的數(shù)據(jù)傳送。CPU內(nèi)部寄存器之間的數(shù)據(jù)的任意傳送
(除了代碼段寄存器CS和指令指針I(yè)P以外)。
段寄存器之間不能傳送。立即數(shù)傳送至CPU內(nèi)部通用寄存器組(AX、BX、CX、DX、BP、SP、SI、DI)。用于給寄存器賦初值。
不能直接給段寄存器賦值CPU內(nèi)部寄存器(除CS和IP外)
與存儲器(所有尋址方式)之間數(shù)據(jù)傳送。 可以實(shí)現(xiàn)一字節(jié)或一個(gè)字的傳送。
存儲單元之間不能直接傳送段地址的默認(rèn)BX、SI、DI間址默認(rèn)段地址為DS,BP間址默認(rèn)段地址SS。凡是遇到給SS賦值指令,系統(tǒng)自動(dòng)禁止外部中斷,執(zhí)行本條指令和下條指令,恢復(fù)對SS寄存器賦值前的中斷開放情況。在修改SS和SP的指令之間不要插入其他指令。
所有通用傳送指令不影響標(biāo)志位
指令字節(jié)數(shù):
指令字節(jié)數(shù)與尋址方式有關(guān)。
通常操作碼占二個(gè)字節(jié);
立即尋址:立即數(shù)增加1-2個(gè)字節(jié)數(shù);操作數(shù)在內(nèi)存中:
直接尋址:直接地址為1-2個(gè)字節(jié),總的指令長3-4個(gè)字節(jié);
寄存器間接尋址(沒有位移量):2個(gè)字節(jié);
變址尋址或者相對基址加變址:都有1-2字節(jié)的位移量,指令字節(jié)數(shù)為2-4個(gè)字節(jié)傳送次數(shù):指執(zhí)行指令時(shí),內(nèi)存與CPU之間數(shù)據(jù)傳送的次數(shù)。凡是立即數(shù)→寄存器或寄存器之間的傳送無此傳送數(shù)。凡是寄存器與存儲器之間傳送次數(shù)為1。堆?!凑障冗M(jìn)后出原則組織的一段內(nèi)存區(qū)域,
特點(diǎn):
下推式的(規(guī)定堆棧設(shè)置在堆棧段內(nèi))改變SP的內(nèi)容,
隨著推入堆棧內(nèi)容增加,SP的值減少。
先進(jìn)后出工作原則(LastInFirstOut簡稱LIFO)堆棧在內(nèi)存中的結(jié)構(gòu):可以用一條立即數(shù)傳送指令給SP賦值,確定SP在SS段中的初始位置。設(shè):(SS)=9FFFFH,堆棧段為64KBMOVSP,08000H;(SP)=08000H則:整個(gè)堆棧段的物理地址范圍為:
90000H—9FFFFH
棧底的物理地址為:9FFFFH
棧頂?shù)奈锢淼刂窞椋?7FFFH堆棧在內(nèi)存中的空間分布如右圖所示:注意:1、SP——堆棧指針,始終指向棧頂。 SP初值用MOVSP,im來設(shè)定。
2、SP按字操作。壓棧先SP=SP—2,再壓入數(shù)據(jù);出棧先彈出數(shù)據(jù),再SP=SP+2。XLATstr_table;(AL)←((BX)+(AL))
MOVBX,OFFSETHex_table
MOVAL,0AH
XLATHex_table
入棧指令 格式:PUSHsrc;1、(SP)
(SP)-2 ;2、((SP)+1,(SP))
(src)
把一個(gè)字從源操作數(shù)
由SP指向堆棧頂部。 操作如:PUSHAX
出棧指令 格式:POPdest;1、(dest)
((SP)+1,(SP)) ;2、(SP)
(SP)+2執(zhí)行結(jié)果,把現(xiàn)行SP所指向堆棧頂部的一個(gè)字
指定的目的操作數(shù),同時(shí)進(jìn)行修改堆棧指針的操作。應(yīng)用時(shí)注意:堆棧操作都按字操作。PUSH,POP指令的操作數(shù)可能有三種:寄存器(通用寄存器,地址指針,變址寄存器),段寄存器(CS除外,PUSHCS合法,POPCS非法),存儲器。執(zhí)行PUSH指令,(SP)-2
(SP),低字節(jié)放在低地址,高字節(jié)放在高地址。隨著推入堆棧內(nèi)容增加,堆棧就擴(kuò)展,SP的值減少,但SP總是指向棧頂,堆棧工作原則后進(jìn)先出。
PUSH,POP指令應(yīng)該成對使用,保持堆棧原有狀態(tài)。堆棧最大容量即為SP的初值與SS之間的差。XCHGBL,DL
XCHGAX,SI
XCHGCOUNT[DI],AX
XCHG[BX],[DI] ;(錯(cuò))
XCHGDS,AX;(錯(cuò))3、交換指令(Exchange)格式:XCHGdest,src ;(dest)
(src)執(zhí)行操作:
把一個(gè)字節(jié)或一個(gè)字的源操作數(shù)與目的操作數(shù)相交換??梢詫?shí)現(xiàn):寄存器之間 寄存器和存儲器之間注意:
存儲器之間不能交換,兩個(gè)操作數(shù)中必須有一個(gè)在寄存器中;段寄存器不能作為一個(gè)操作數(shù);允許字或字節(jié)操作,不影響標(biāo)志位。例1:實(shí)現(xiàn)(29H)(28H)→(DATA_WORD)
INAX,28H
MOVDATA_WORD,AX
例2:從端口3FCH送一個(gè)字到AX寄存器
MOVDX,3FCH
INAX,DX;(AL)←(3FCH),(AH)←(3FDH)
例3:實(shí)現(xiàn)將(AL)→(05H)
OUT5,AL;(05H)←(AL)無論接受還是發(fā)送數(shù)據(jù),必須通過累加器AX(字)或AL(字節(jié)),又稱累加器專用傳送指令。
輸入、輸出指令不影響標(biāo)志位。短格式:端口號中前256個(gè)端口(0~FFH)(8位),可以直接寫在指令中,這就是長格式。端口號代替指令中的PORT,機(jī)器指令用二字節(jié)表示,第二字節(jié)就是端口號。長格式:當(dāng)端口號≥256時(shí)(16位),只能使用短格式,必須先把端口號放到DX寄存器中。不需要用任何段寄存器來修改它的值。LEA(LoadEffectiveAddress)
格式:LEAreg16,mem16;EA(reg16)
功能:加載有效地址,用于寫近地址指針。
把指令中指定的存儲器操作數(shù)有效地址裝入指定的寄存器。
例:設(shè)(BX)=0400H,(SI)=003CH
LEABX,[BX+SI+0F62H];?
執(zhí)行指令后:EA=(BX)+(SI)+0F62H=0400H+003CH+0F62H=139EH
(BX)=139EH;只加載有效地址,沒有考慮隱含DS。LEA指令中的目標(biāo)寄存器必須是16位的通用寄存器,源操作數(shù)必須是一個(gè)存儲器。LDS(LoadpointerusingDS)格式:LDSreg16,mem32 ;(reg16)←(EA) (DS)←((EA)+2))功能:將指令指定32位地址指針?biāo)椭噶钪付拇嫫骱虳S。將指令指定mem32單元的前兩個(gè)單元內(nèi)容(16位偏移量)裝入指定通用寄存器,把后兩個(gè)單元內(nèi)容(段地址)裝入到DS段寄存器。LES(LoadpointerusingES)格式:LESreg16,mem32;(reg16)←(EA) (ES)←((EA)+2))功能:把源操作數(shù)指定的4個(gè)相繼字節(jié)送指令指定的寄存器 及ES寄存器中。此指令常常指定DI寄存器。將指令指定mem32單元的前兩個(gè)單元內(nèi)容(16位偏移量)裝入指定通用寄存器,把后兩個(gè)單元內(nèi)容(段地址)裝入到ES段寄存器。綜合舉例:設(shè):(DS)=5000HTABLE=1000H分析下列指令執(zhí)行結(jié)果:MOVBX,TABLE;(BX)=0040HMOVBX,OFFSETTABLE;(BX)=1000HLEABX,TABLE;(BX)=1000HLESBX,TABLE;(BX)=0040H,(ES)=3000HLDSBX,TABLE;(BX)=0040H,(DS)=3000H1.LAHF(LoadAHflagsflags)
格式:LAHF;
(AH)←(PSW的低字節(jié))功能:標(biāo)志寄存器低八位
(AH)。2. SAHF(StoreAHintoflags) 格式:SAHF;(PSW的低字節(jié))←(AH) 功能:(AH)送標(biāo)志寄存器低八位。3. PUSHF(Pushflagsontostack) 格式:PUSHF ;(SP)←(SP)-2 ((SP)+1,(SP))←(PSW) 功能:標(biāo)志進(jìn)棧。4. POPF(Popflagsoffstack)
格式:POPF;(PSW)←((SP)+1,(SP)) (SP)←(SP)+2 功能:標(biāo)志出棧。
(1)標(biāo)志位的影響
LAHF、PUSHF不影響標(biāo)志位,
SAHF、POPF由裝入的值確定標(biāo)志位的值,即影響標(biāo)
志位。
(2)PUSHF、POPF用于保護(hù)調(diào)用過程前(PSW),過程返回
后恢復(fù)。ADD(Addition)加法指令指令格式:ADDdest,src;(dest)
(dest)+(src)
Src:立即數(shù),寄存器,存儲器。 dest:寄存器,存儲器。特點(diǎn):
可以進(jìn)行8位、16位的無符號數(shù)和帶符號數(shù)的加法運(yùn)算;
源操作數(shù)和目標(biāo)操作數(shù)不能同時(shí)為存儲器,不能為段寄存器;
指令影響標(biāo)志位的情況:
OF=1,8位帶符號數(shù)相加,和超出范圍(-128~+127),16位帶符號數(shù)相加,和超出范圍(-32768~+32767);CF=1,8位無符號數(shù)相加,和超過255,16位無符號數(shù)相加,和超過65535。ADC(Addwithcarry)帶進(jìn)位加法指令格式:ADCdest,src;(dest)←(dest)+(src)+CF
CF:
進(jìn)位標(biāo)志CF的現(xiàn)行值(上條指令執(zhí)行后CF值)溢出------是指帶符號數(shù)的補(bǔ)碼溢出。
字長為n位帶符號數(shù),補(bǔ)碼運(yùn)算能表示范圍為:-2n-1~+2n+1–1
如果運(yùn)算結(jié)果超出該范圍,叫補(bǔ)碼溢出,簡稱溢出。在溢出時(shí),造成運(yùn)算錯(cuò)誤。(1)帶符號數(shù)相加溢出
根據(jù)OF=1?,判斷帶符號數(shù)產(chǎn)生溢出?
OF=1,同符號數(shù)相加,結(jié)果符號與其相反,產(chǎn)生溢出;OF=0,同符號數(shù)相加,結(jié)果符號與其相同,不產(chǎn)生溢出; 異號數(shù)相加,不可能溢出。(2)無符號數(shù)相加溢出
根據(jù)CF=1?,判斷無符號數(shù)產(chǎn)生溢出?
CF=1,無符號數(shù)相加產(chǎn)生溢出,但結(jié)果并沒有錯(cuò), 只是結(jié)果放不下。INC(Incrementby1)加1指令
格式:INC dest ;(B/W),(dest)←(dest)+1
dest:寄存器、存儲器。不能是段寄存器。
功能:對指定的目標(biāo)操作數(shù)+1
操作數(shù)單元。
用途:用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。SUB(Subtraction)減法指令格式::SUBdest,src;(dest)←(dest)-(src)
Src:立即數(shù),寄存器,存儲器。 Dest:寄存器,存儲器。這種指令影響標(biāo)志位:A、C、O、P、S、Z標(biāo)志。CF=1,無符號數(shù)小減大;SF=1,帶符號數(shù)小減大,OF=1溢出.SBB(Subtractionwithborrow)帶進(jìn)位減法指令
格式::SBBdest,src;(dest)←(dest)-(src)-CF CF:進(jìn)位標(biāo)志CF的現(xiàn)行值(上條指令CF值)
Src:立即數(shù),寄存器,存儲器。 dest:寄存器,存儲器。DEC(Decrementby1)減1指令
格式:DECdest ;(B/W) (dest)←(dest)-1
dest:寄存器 、存儲器。不能是段寄存器。
功能:對指定的目標(biāo)操作數(shù)-1
操作數(shù)單元。
用途:用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。結(jié)論:CF=1表示不帶符號數(shù)有溢出。 OF=1表示帶符號數(shù)有溢出。CF值反映無符號數(shù)運(yùn)算中的借位情況:無符號數(shù)相減:CF=1,減數(shù)>被減數(shù),有借位 CF=0,被減數(shù)>減數(shù),無借位補(bǔ)碼加法:CF=1,二進(jìn)制運(yùn)算中最高有效位向高位無進(jìn)位 CF=0,二進(jìn)制運(yùn)算中最高有效位向高位有進(jìn)位減法0F位設(shè)置: OF=1,二個(gè)數(shù)符號相反,結(jié)果符號與減數(shù)相同;否則,OF=0。CMP(Compare)比較指令
格式:CMPdest,src ;B/W(dest)-(src)
結(jié)果不送,僅置標(biāo)志。NEG(Negate)求補(bǔ)指令格式:NEGdest;B/W,(dest)←0-(dest)
dest:寄存器 、存儲器。操作:把操作數(shù)按位求反后末位+1。(dest)←0FFFFH-(dest)+1影響標(biāo)志:A、C、O、P、S、Z。CF: 操作數(shù)為0時(shí)求補(bǔ),CF=0;一般使CF=1.OF:對-128或-32768求補(bǔ),OF=1;否則OF=0.
(1)根據(jù)Z標(biāo)志,可判斷兩者是否相等
例:CMPAX,BX
ZF=1,(AX)=(BX),兩者相等
ZF=0,(AX)=(BX),兩者不相等
(2) 根據(jù)CF標(biāo)志,判斷兩個(gè)無符號數(shù)的大小
例:比較AX,BX寄存器,將大數(shù)
(AX)
CMPAX,BX
JNCNEXT;CF=0轉(zhuǎn)NEXT
XCHGAX,BX
結(jié)論:CF=0,(AX)>(BX);CF=1,(AX)<(BX)(3) 用SF、OF標(biāo)志,判斷二個(gè)帶符號數(shù)的大?。?)OF=0時(shí):SF=0,則:A>B
SF=1,則:A<B
OF=1時(shí):SF=1,則:A>B
SF=0,則:A<B(2)O=S=0或S=O=1時(shí):記作SO=0,則:A>B;
O、S異號時(shí):記作SO=1,則:A<B。(3)SO=0同時(shí)ZF=0時(shí),A>B,用JG/JNLE轉(zhuǎn)移指令;
SO=1時(shí),A<B,用JL/JNGE轉(zhuǎn)移指令。AND(Logicaland)邏輯“與”指令
格式:ANDdest,src
;B/W,(dest)
(dest∧(src)
src:立即數(shù)、寄存器、存儲器。
dest:寄存器、存儲器。
執(zhí)行操作:進(jìn)行“與”運(yùn)算,
兩位中有一位為0(或二位都為0),則結(jié)果為0,否則為1“與”指令的用途:(1) 清CF,自己“與”自己.操作數(shù)不變,CF=0
例:ANDAL; 結(jié)果:操作數(shù)不變,CF=0。
(2)使操作數(shù)中若干位保持不變,若干位與“1”相與; 而若干位置為“0“的場合,若干位與“0”相與。 例:
若(AL)=43H ANDAL,0FH ;(AL)=03H,(AL)0~3不變;
;(AL)4~7=00H,屏蔽高4位。 TEST(Testornon_destructivelogicaland)測試指令格式:TESTdest,src;(dest)∧(src)
src:立即數(shù)、寄存器、存儲器。
dest:寄存器、存儲器。執(zhí)行操作:二個(gè)操作數(shù)相與的結(jié)果不存,置條件碼。OR(Lgicalinclusiveor)邏輯“或”指令
格式:ORdset,src;(dset)←(dset)(src)
dest:寄存器、存儲器。
src:立即數(shù)、寄存器、存儲器。
執(zhí)行操作:進(jìn)行按位“或”運(yùn)算
兩位操作數(shù)中任一位為1(或都為1), 則該位(結(jié)果)=1, 否則為0。清CF,自己與自己“或”,操作數(shù)不變,CF=0
例:ORAL;(AL)不變,CF=04、XOR(Logicalexclusiveor)邏輯“異或”指令格式:XORdset,src
;B/W(dset)
(dset)
(src)
dest:寄存器、存儲器。
src:立即數(shù)、寄存器、存儲器。執(zhí)行的操作:對指令的兩個(gè)操作數(shù)進(jìn)行按位“異或”運(yùn)算。
二位不相同時(shí)為1,相同時(shí)為0。對某些特定位求反,某些特定位與“1”
其余位保持不變,保持不變與“0”
。NOT(Logicalnot)邏輯“非”指令格式:NOTdest
;B/W
指令操作數(shù)只有一個(gè),指令對操作數(shù)按位求反。執(zhí)行操作:字節(jié)求反:(dest)
0FFH-(dest)
字求反:(dest
0FFFFH-(dest)源操作數(shù):寄存器、存儲器。不能是立即數(shù)。
影響標(biāo)志位:對標(biāo)志位無影響。
SHL/SAL(Shiftlogicalleft/shiftarithmeticleft)邏輯左移/算術(shù)左移指令
格式:SHLdest,cnt
;邏輯左移指令,B/W
SALdest,cnt
;算術(shù)左移指令,B/W
dest:寄存器、存儲器尋址方式。
cnt:表示移位次數(shù)
cnt=1,1可寫在指令中。
cnt>1,用CL存放移位次數(shù)。
執(zhí)行操作:相當(dāng)于無符號數(shù)的×2功能。SHR(Shiftlogicalright)邏輯右移指令格式:SHRdest,cnt
;邏輯右移指令,B/W執(zhí)行操作:相當(dāng)于無符號數(shù)的÷2功能。SAR(Shiftarithmeticright)算術(shù)右移指令格式:SARdest,cnt
;算術(shù)右移指令,B/W執(zhí)行操作:相當(dāng)于帶符號數(shù)的÷2功能,對負(fù)數(shù)向下舍入
IDIV指令對負(fù)數(shù)向上舍入。0CFCF0
用SAR指令做除法(對負(fù)數(shù)向下舍入):
MOVAX,81H ;(AX)=-127
SARAX,1 ;(AX)=-64
用IDIV指令做除法(IDIV指令對負(fù)數(shù)向上舍入):
MOVAX,81H ;(AX)=-127
MOVCL,2
IDIVCL ;(AL)=-63,(AH)=-1程序:SHLAX,1RCLDX,1將DX、AX組合起來構(gòu)成32位寄存器向左移一位。帶進(jìn)位循環(huán)左移移9次還原帶進(jìn)位循環(huán)左移移9次還原循環(huán)右移(不帶CF)移8次還原循環(huán)左移(不帶CF)移8次還原算術(shù)右移(帶符號數(shù)÷2)邏輯右移(無符號數(shù)÷2)執(zhí)行操作名稱指令格式SHLoprd,1CL邏輯左移(無符號數(shù)*2)0
CF
0
CF
SALoprd,1CL算術(shù)左移CF0
SHRoprd,1CLCF
SARoprd,1CLCF
ROLoprd,1CLCF
RORoprd,1CLCF
RCLoprd,11CL1
CF
RCRoprd,11CL1
串操作指令(Stringmanipulation)
“串”就是內(nèi)存中一段地址相連的字節(jié)或字。
串操作—對串中各項(xiàng)進(jìn)行操作,也叫數(shù)據(jù)塊操作。
1、MOVS(Movestring)串傳送指令
2、CMPS(Comparestring)串比較指令
3、SCAS(Scanstring)串掃描指令
4、LODS(Loadfromstring)從串取數(shù)指令
5、STOS(Storeintostring)數(shù)存入串指令可以只有源操作數(shù),可以只有目標(biāo)操作數(shù),可能二者都有。源操作數(shù)用SI尋址,隱含DS值為段地址,可以用段跨越前綴指定其它段。目標(biāo)操作數(shù)用DI尋址,隱含ES為段地址。每次操作對SI、DI調(diào)整: DF=1,DI、SI自動(dòng)-1(字節(jié))或-2(字);
DF=0,DI、SI自動(dòng)+1(字節(jié))或+2(字)。與上述指令基本配合使用前綴有:
REP(Repeat)重復(fù)。
REPE/REPZ(Repeatwhileequal/zero)相等/為零則重復(fù)。REPNE/REPNZ(Repeatwhilenotequal/notzero)不相等/不為零則重復(fù)。指令重復(fù)前綴操作數(shù)地址指針寄存器MOVSREP源,目標(biāo)(DS):(SI),(ES):(DI)CMPSREPE/REPNE源,目標(biāo)(DS):(SI),(ES):(DI)SCASREPE/REPNE目標(biāo)(ES):(DI)LODS無源(DS):(SI)STOSREP目標(biāo)(ES):(DI)
MOVS(Movestring)串傳送
串傳送有3種格式:
MOVSdest,src;((ES):(DI)←((DS):(SI))
MOVSB(字節(jié));(SI)←(SI)±1,(DI)←(DI)±1
MOVSW(字);(SI)←(SI)±2,(DI)←(DI)±2
當(dāng)方向標(biāo)志CLD,DF=0時(shí)用“+”
STD,DF=1時(shí)用“-”
該指令不影響條件碼。
*如:MOVSES:BYTEPTR[DI],DS:[SI]
*MOV單指令不能完成存儲單元之間的數(shù)據(jù)傳送;
MOVS指令就是為解決存儲單元之間數(shù)據(jù)傳送而設(shè)置的。用MOVS串操作指令編程:
MOVAX,SEGAREA1 MOVDS,AX MOVAX,SEGAREA2 MOVES,AX
MOVSI,OFFSETAREA1 MOVDI,OFFSETAREA2 MOVCX,100
CLD
;DF=0,增址傳送LOOP1:MOVSES:BYTEPTR[DI],DS:[SI]
HLT
LODS(Loadfromstring)從串取數(shù)指令
從串取指令有3種格式:
LODSsrc;(字節(jié))(AL)
((DS):(SI)),(SI)
(SI)±1
(字)(AX)
((DS):(SI)),(SI)
(SI)±2
LODSB(字節(jié));(AL)
((DS):(SI)),(SI)
(SI)±1
LODSW(字);(AX)
((DS):(SI)),
(SI)
(SI)±2
功能:該指令把由(SI)指定的數(shù)據(jù)段中某單元內(nèi)容
(AL)
或(AX)中LODS應(yīng)用注意:(1)指令允許用段跨越前綴來指定非數(shù)據(jù)段的存儲區(qū)。(2)該指令不影響條件碼。一般說來,它不與REP聯(lián)用,每重復(fù)一次,累加器的內(nèi)容就改變一次。(AL)中只能保持最后一個(gè)元素。有時(shí)緩沖區(qū)中的一串字符需要多次取出測試時(shí)可用本指令。
STOS(Storeintostring)存入串指令
將(AL)或(AX)
((ES):(DI)),(DI)±1或±2(DI)
存入串指令有3種格式:
STOSdest;(字節(jié))((ES):(DI))
(AL),(DI)
(DI)±1
(字)((ES):(DI))
(AX),(DI)
(DI)±2
(2)STOSB(字節(jié));((ES):(DI))
(AL),(DI)
(DI)±1
(3)STOSW(字);((ES):(DI))
(AX),(DI)
(DI)±2
用途:
與REP聯(lián)用時(shí),(CX)←緩沖區(qū)長度。用來建立一串相同的值。CMPS(Comparestring)串比較指令
(SI)—作為源串地址,(DI)—目的串地址串比較指令有3種格式:(1) CMPSdest,src;((ES):(DI)-(DS):(SI)),結(jié)果不存,置標(biāo)志CMPSB(字節(jié));(SI)
(SI)±1,(DI)←(DI)±1CMPSW(字);(SI)
(SI)±2,(DI)
(DI)±2執(zhí)行操作:((ES):(DI)-(DS):(SI),結(jié)果不存,僅置標(biāo)志。字節(jié)操作:(SI)
(SI)±1,(DI)←(DI)±1字操作:(SI)
(SI)±2,(DI)
(DI)±2注意:
兩數(shù)相減,只影響標(biāo)志,不影響操作數(shù)。 其它操作規(guī)定與MOVS同。
SCAS(Scanstring)串掃描指令,搜索指令
(DI)-字符串起始地址,(AL)或(AX)-關(guān)鍵字
串掃描指令有3種格式:
SCASdest
SCASB(字節(jié));(AL)-((ES):(DI)),(DI)
(DI)±1
SCASW(字);(AX)-((ES):(DI)),(DI)
(DI)±2
注意:執(zhí)行{(AL)或(AX)-
目的串}的操作;
兩數(shù)相減,只影響標(biāo)志,不影響操作數(shù)。
其它特性與MOVS同。START: MOVSI,OFFSETBLOCK MOVDI,OFFSETPUOS-DATA;正數(shù)緩沖區(qū)
MOVBX,OFFSETMINUS-DATA;負(fù)數(shù)緩沖區(qū)
MOVCX,COUNT
CLDGOON:LODSB;取BLOCK塊中數(shù)據(jù)
TESTAL,80H JNZMINS;若負(fù)數(shù)轉(zhuǎn)MINS
STOSB
;正數(shù),(DI)←(AL),(DI)←(DI)+1 JMPAGAIN MINS:XCHGBX,DI
STOSB
;負(fù)數(shù),(DI)←(AL),(DI)←(DI)+1
XCHGBX,DI AGAIN:DECCX JNZGOON
HLT段內(nèi)直接短轉(zhuǎn)移:
格式:JMPSHORTOPR
OPR—在匯編語言中使用符號地址。
在機(jī)器語言中存放位移量D8
位移量D8=符號地址的偏移地址-當(dāng)前IP的值
執(zhí)行操作:(IP)←(IP)當(dāng)前+D8
SHORT短屬性標(biāo)號
8位位移量D8的范圍在(-128~127)之間,占有一個(gè)字節(jié)。
而指令本身占有兩個(gè)字節(jié)。
段內(nèi)直接近轉(zhuǎn)移:格式:JMPNEARPTROPR
OPR—在匯編語言中使用符號地址。
在機(jī)器語言中存放位移量D16位移量D16=符號地址的偏移地址-當(dāng)前IP的值執(zhí)行操作:(IP)←(IP)當(dāng)前+D16
NEAR近屬性標(biāo)號位移量為D16范圍:-3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東酒店管理職業(yè)技術(shù)學(xué)院《食品微生物綜合實(shí)訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東金融學(xué)院《公司金融含實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東建設(shè)職業(yè)技術(shù)學(xué)院《技術(shù)及應(yīng)用實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東金融學(xué)院《小動(dòng)物影像學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 網(wǎng)絡(luò)文明培訓(xùn)課件
- 《能源互聯(lián)網(wǎng)》課件
- 小班安全課件《狗狗來了》
- 廚具銷售培訓(xùn)課件
- 共青科技職業(yè)學(xué)院《現(xiàn)代基礎(chǔ)化學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛州師范高等??茖W(xué)校《金融法》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東省惠州市2022-2023學(xué)年高一上學(xué)期期末考試物理試題(含答案)
- 遼寧省丹東市2022-2023學(xué)年八年級上學(xué)期末數(shù)學(xué)期末試卷(含答案)
- 2023年政府項(xiàng)目申報(bào)專員年度總結(jié)及下一年規(guī)劃
- 中學(xué)燃?xì)忮仩t事故應(yīng)急預(yù)案
- 公租房續(xù)租申請書范文示例
- 小學(xué)各項(xiàng)制度執(zhí)行情況總結(jié)
- 2023-2024學(xué)年江蘇省徐州市九年級(上)期中物理試卷
- 搬運(yùn)裝卸服務(wù)外包投標(biāo)方案(技術(shù)標(biāo))
- 急性腎衰竭屬于中醫(yī)學(xué)“癃閉”范疇5種常用中成藥辨證施治方案
- 起重機(jī)械安全生產(chǎn)隱患課件
- 耕地資源與國家糧食安全高中地理湘教版(2019)選擇性必修3
評論
0/150
提交評論