版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微機(jī)原理與匯編語(yǔ)言,第5章 運(yùn)算程序設(shè)計(jì)及應(yīng)用舉例 5.1 算術(shù)運(yùn)算 5.2 數(shù)碼轉(zhuǎn)換 5.3 邏輯運(yùn)算 5.4 字符串處理,算術(shù)指令:? 加法指令 ADD、ADC、INC? 減法指令 SUB、SBB、DEC、NEG、CMP? 乘法指令 MUL、IMUL
2、? 除法指令 DIV、IDIV? 十進(jìn)制調(diào)整指令 DAA、DAS、 AAA、AAS、AAM、AAD,? 加法指令 加法指令: ADD DST, SRC 執(zhí)行操作: (DST) ? (SRC) + (DST) 帶進(jìn)位加法指令: ADC DST, SRC 執(zhí)行操作: (DST) ? (SRC) + (DST)
3、 + CF 加1指令: INC OPR 執(zhí)行操作: (OPR) ? (OPR) + 1,注意: * 除INC指令不影響CF標(biāo)志外,均對(duì)條件標(biāo)志位有影響。,加法指令對(duì)條件標(biāo)志位的影響,CF 位表示 無(wú)符號(hào)數(shù) 相加的溢出。OF 位表示 帶符號(hào)數(shù) 相加的溢出。,1 結(jié)果為負(fù)0 否則,SF=,,1 結(jié)果為00 否則,Z
4、F=,,1 和的最高有效位 有 向高位的進(jìn)位0 否則,CF=,,1 兩個(gè)操作數(shù)符號(hào)相同,而結(jié)果符號(hào)與之相反0 否則,OF=,,舉例: n=8 bit 帶符號(hào)數(shù)(-128~127) , 無(wú)符號(hào)數(shù)(0~255),0 0 0 0 0 1 0 0 + 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 1帶:(+4)+(+11)=+15
5、 OF=0無(wú):4+11=15 CF=0,,,帶符號(hào)數(shù)和無(wú)符號(hào)數(shù)都不溢出,,,0 0 0 0 1 0 0 1 + 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 帶: (+9)+(+124)=-123 OF=1 無(wú): 9+124=133 CF=0,帶符號(hào)數(shù)溢出,無(wú)符號(hào)數(shù)溢出,,,0 0 0 0
6、 0 1 1 1 + 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0帶:(+7)+(-5)=+2 OF=0無(wú):7+251=2 CF=1,,帶符號(hào)數(shù)和無(wú)符號(hào)數(shù)都溢出,,,1 0 0 0 0 1 1 1 + 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0帶:(-121)+(-11
7、)=+124 OF=1無(wú):135+245=124 CF=1,,例:雙精度數(shù)的加法 (DX) = 0002H (AX) = 0F365H (BX) = 0005H (CX) = 8100H 指令序列 ADD AX, CX ; (1) ADC DX, BX ; (2)
8、 (1) 執(zhí)行后,(AX) = 7465H CF=1 OF=1 SF=0 ZF=0 (2) 執(zhí)行后,(DX) = 0008H CF=0 OF=0 SF=0 ZF=0,? 減法指令減法指令: SUB DST, SRC
9、 執(zhí)行操作: (DST) ? (DST) - (SRC)帶借位減法指令: SBB DST, SRC 執(zhí)行操作: (DST) ? (DST) - (SRC) - CF減1指令: DEC OPR 執(zhí)行操作: (OPR) ? (OPR) - 1求補(bǔ)指令: NEG OPR 執(zhí)行操作: (OPR) ? - (OP
10、R)比較指令: CMP OPR1, OPR2 執(zhí)行操作: (OPR1) - (OPR2),注意: * 除DEC指令不影響 CF標(biāo)志外,均對(duì)條 件標(biāo)志位有影響。,減法指令對(duì)條件標(biāo)志位(CF/OF/ZF/SF)的影響:,CF 位表示 無(wú)符號(hào)數(shù) 減法的溢出。OF 位表示 帶符號(hào)數(shù) 減法的溢出。,1 被減數(shù)的最高有效位 有 向高位的借位0 否則,CF=,,1 兩
11、個(gè)操作數(shù)符號(hào)相反,而結(jié)果的符號(hào)與減數(shù)相同0 否則,OF=,,1 減法轉(zhuǎn)換為加法運(yùn)算時(shí) 無(wú) 進(jìn)位0 否則,CF=,,或,NEG 指令對(duì)CF/OF的影響,0 操作數(shù)為01 否則,CF =,,1 操作數(shù)為 -128 (字節(jié)運(yùn)算)或 操作數(shù)為 -32768 (字運(yùn)算)0 否則,OF =,,0 0 0 1 1 1 1 0
12、 + 0 0 0 1 1 1 1 1,NEG 指令對(duì)CF/OF的影響,0 操作數(shù)為01 否則,CF =,,1 操作數(shù)為 -128 (字節(jié)運(yùn)算)或 操作數(shù)為 -32768 (字運(yùn)算)0 否則,OF =,,0 0 0 0 1 1 1 1 + 0 0 0 1 1 0 0 0 0,,,1 0
13、0 0 0 1 1 1 + 0 0 0 1 1 0 0 0,,,例:x、y、z 均為雙精度數(shù),分別存放在地址為X, X+2; Y, Y+2;Z, Z+2的存儲(chǔ)單元中,用指令序列實(shí)現(xiàn) w ? x + y + 24 - z ,并用W, W+2單元存放w,MOV AX, XMOV DX, X+2ADD AX, YA
14、DC DX, Y+2 ; x+yADD AX, 24ADC DX, 0 ; x+y+24SUB AX, ZSBB DX, Z+2 ; x+y+24-zMOV W, AXMOV W+2, DX ; 結(jié)果存入W, W+2單元,? 乘法指令 無(wú)符號(hào)數(shù)乘法指令: MUL SRC 帶符號(hào)數(shù)乘法指令:
15、 IMUL SRC 執(zhí)行操作: 字節(jié)操作數(shù) (AX) ? (AL) * (SRC) 字操作數(shù) (DX, AX) ? (AX) * (SRC),注意: * AL (AX) 為隱含的乘數(shù)寄存器。* AX (DX,AX) 為隱含的乘積寄存器。* SRC不能為立即數(shù)。* 除CF和OF外,對(duì)條件標(biāo)志位無(wú)定義
16、。,乘法指令對(duì) CF/OF 的影響:,例:(AX) = 16A5H,(BX) = 0611H (1) IMUL BL ; (AX) ? (AL) * (BL) ; A5*11 ? 5B*11=060B ? F9F5 ; (AX) = 0F9
17、F5H CF=OF=1 (2) MUL BX ; (DX, AX) ? (AX) * (BX) ; 16A5*0611=0089 5EF5 ; (DX)=0089H (AX)=5EF5H CF=OF=1,00 乘積的高一半
18、為零11 否則,MUL指令: CF,OF =,,00 乘積的高一半是低一半的符號(hào)擴(kuò)展11 否則,IMUL指令: CF,OF =,,1010 01010101 1011,,? 除法指令 無(wú)符號(hào)數(shù)除法指令: DIV SRC 帶符號(hào)數(shù)除法指令: IDIV SRC 執(zhí)行操作: 字節(jié)操作 (AL) ? (AX) / (SRC)
19、 的商 (AH) ? (AX) / (SRC) 的余數(shù) 字操作 (AX) ? (DX, AX) / (SRC) 的商 (DX) ? (DX, AX) / (SRC) 的余數(shù)注意: * AX (DX,AX) 為隱含的被除數(shù)寄存器
20、。 * AL (AX) 為隱含的商寄存器。 * AH (DX) 為隱含的余數(shù)寄存器。 * SRC不能為立即數(shù)。 * 對(duì)所有條件標(biāo)志位均無(wú)定義。如何判別結(jié)果有效?,例:x , y , z , v 均為16位帶符號(hào)數(shù),計(jì)算 ( v - ( x*y + z – 540 ) ) / x,MOV AX,
21、 X IMUL Y ; x*y →(DX,AX)MOV CX, AXMOV BX, DXMOV AX, ZCWD ;Z →(DX,AX)ADD CX, AXADC BX, DX ; x*y+z →(BX,CX)SUB CX, 540 SBB BX, 0 ; x*y+z-540MOV AX, VCWD
22、 ;V →(DX,AX)SUB AX, CXSBB DX, BX ; v-(x*y+z-540)IDIV X ; (v-(x*y+z-540))/x→(AX) 余數(shù)→(DX),? 十進(jìn)制調(diào)整指令BCD碼:用二進(jìn)制編碼的十進(jìn)制數(shù),又稱二--十進(jìn)制數(shù)壓縮的BCD碼:用 4 位二進(jìn)制數(shù)表示 1 位十進(jìn)制數(shù) 例:( 59 )1
23、0 =( 0101 1001 )BCD非壓縮的BCD碼:用 8 位二進(jìn)制數(shù)表示 1 位十進(jìn)制數(shù) 例:( 59 )10 =( 0000 0101 0000 1001 )BCD數(shù)字的 ASCII 碼是一種 非壓縮的 BCD 碼 DIGIT ASCII BCD030H0011 0000131H0011 0001232H0011 0010……
24、 …939H0011 1001,,例:寫(xiě)出( 3590 )10的壓縮 BCD 碼和非壓縮BCD碼,并分 別 把它們存入數(shù)據(jù)區(qū) PAKED 和 UNPAK壓縮BCD:( 3590 )10=( 0011 0101 1001 0000 )BCD非壓縮BCD: ( 3590 )10=( 00000011 00000101 00001001 00000000 )BCD,P
25、AKED 90H 35H,,,,,,,,UNPAK 00H 09H 05H 03H,問(wèn)題的提出:,十進(jìn)制調(diào)整指令,19 壓縮BCD: 0001 1001,27 0010 0001 +
26、 110,+ 08 + 0000 1000,,,(0010 0111)BCD,,,AF=1,,,(1)壓縮的BCD碼調(diào)整指令● DAA 加法的十進(jìn)制調(diào)整指令 ● DAS 減法的十進(jìn)制調(diào)整指令 (2)非壓縮的BCD碼調(diào)整指令● AAA 加法的ASCII碼調(diào)整指令● AAS 減
27、法的ASCII碼調(diào)整指令● AAM 乘法的ASCII碼調(diào)整指令● AAD 除法的ASCII碼調(diào)整指令,邏輯指令: ? 邏輯運(yùn)算指令 AND、OR、NOT、XOR、TEST ? 移位指令 SHL、SHR 、 SAL 、SAR、 ROL、ROR、RCL、RCR,邏輯指令:AND“與”運(yùn)算兩個(gè)對(duì)應(yīng)位同時(shí)為1,運(yùn)算結(jié)果的對(duì)應(yīng)位
28、為1,否則為0。OR“或”運(yùn)算兩個(gè)對(duì)應(yīng)位同時(shí)為0,運(yùn)算結(jié)果的對(duì)應(yīng)位為0,否則為1。XOR“異或”運(yùn)算兩個(gè)對(duì)應(yīng)位相同時(shí),運(yùn)算結(jié)果的對(duì)應(yīng)位為0,否則為1。NOT“非”運(yùn)算將原操作數(shù)的各位取反,即“1”變?yōu)椤?”,“0”變?yōu)椤?”,邏輯與指令:AND DST, SRC執(zhí)行操作: (DST) ? (DST) ? (SRC)邏輯或指令:OR DST, SRC執(zhí)行操作: (DST) ? (DST) ? (SR
29、C)異或指令: XOR DST, SRC執(zhí)行操作: (DST) ? (DST) ⊕ (SRC)測(cè)試指令: TEST OPR1, OPR2執(zhí)行操作: (OPR1) ? (OPR2)邏輯非指令:NOT OPR * OPR不能為立即數(shù)執(zhí)行操作: (OPR) ? (OPR) * 不影響標(biāo)志位,,CF OF SF ZF PF AF 0
30、 0 * * * 無(wú)定義,,根據(jù)運(yùn)算結(jié)果設(shè)置,? 邏輯運(yùn)算指令,,例:屏蔽AL的第0、1兩位 AND AL, 0FCH例:置AL的第5位為1 OR AL, 20H 例:使AL的第0、1位變反 XOR AL, 3例:測(cè)試某些
31、位是0是1 TEST AL, 1 JZ EVEN,* * * * * * * * OR 0 0 1 0 0 0 0 0 * * 1 * * * * *,,* * * * * * 0 1 XOR 0 0 0 0 0 0 1 1 * *
32、* * * * 1 0,,,,* * * * * * * * AND 1 1 1 1 1 1 0 0 * * * * * * 0 0,,* * * * * * * * AND 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 *,,邏輯左移 SHL OPR, CNT邏輯右移 SHR OPR, CNT
33、算術(shù)左移 SAL OPR, CNT(同邏輯左移)算術(shù)右移 SAR OPR, CNT,,,,,,,,CF 0,,,,,,0 CF,CF,,,,,,,,,,? 移位指令,,,,循
34、環(huán)左移 ROL OPR, CNT循環(huán)右移 ROR OPR, CNT帶進(jìn)位循環(huán)左移 RCL OPR, CNT帶進(jìn)位循環(huán)右移 RCR OPR, CNT,CF,,,,,CF,,,,,,,CF,,,,,,,,,,,,,,,CF,,,帶進(jìn)位的循環(huán)左移指令,例:將32位數(shù)12345678H算術(shù)左移一位。MOV AX,5678HMOV DX,1234HSAL AX,1RCL DX,1結(jié)果為(A
35、X)=0ACF0H, (DX)=2468H,例:(AX)= 0012H,(BX)= 0034H,把它們裝配成(AX)= 1234H,例:(BX) = 84F0H (1) (BX) 為無(wú)符號(hào)數(shù),求 (BX) / 2 SHR BX, 1 ; (BX) = 4278H (2) (BX) 為帶符號(hào)數(shù),求 (BX) ×2
36、 SAL BX, 1 ; (BX) = 09E0H, OF=1 (3) (BX) 為帶符號(hào)數(shù),求 (BX) / 4 MOV CL, 2 SAR BX, CL ; (BX) = 0E13CH,MOV CL, 8ROL AX, CLADD AX, BX,MOV C
37、H, 4 ; 循環(huán)次數(shù)MOV CL, 4 ; 移位次數(shù)NEXT: ROL BX, CLMOV AX, BXAND AX, 0FHPUSH AXDEC CHJNZ NEXT,,,,,,,0008,0004,000F,0000 ? (SP),(3) (BX)=84F0H,把 (BX) 中的 16 位數(shù)每 4 位壓入堆棧,第4章 8086指令系統(tǒng)及尋址
38、方式,4.5 表達(dá)式與操作符常量、變量、標(biāo)號(hào)常量字符串常量用單引號(hào)‘ ’、或者雙引號(hào)“ ”括起來(lái)的一個(gè)或多個(gè)ASCⅡ字符,如‘A1’、‘B’、‘5’、‘GOOD’匯編程序把字符串常量表示成一個(gè)字節(jié)序列,一個(gè)字節(jié)對(duì)應(yīng)一個(gè)字符,并把該字符翻譯成它的ASCⅡ碼值進(jìn)行存儲(chǔ)。如‘5’轉(zhuǎn)換成ASCⅡ碼值就是273527H,串處理指令: ? 設(shè)置方向標(biāo)志指令 CLD、STD ? 串處理指
39、令 ? 串重復(fù)前綴 MOVSB / MOVSW REP STOSB / STOSW REPE / REPZ LODSB / LODSW REPNE /
40、REPNZ CMPSB / CMPSW SCASB / SCASW,與 REP 配合工作的 MOVS / STOS / LODS REP 執(zhí)行操作:(1) 如 (CX)=0 則退出 REP,否則轉(zhuǎn)(2)(2) (CX) ? (CX) -1(3) 執(zhí)行 MOVS / STOS / LODS(4) 重復(fù) (1) ~ (3),MOVS 串傳送
41、指令:MOVS DST, SRCMOVSB (字節(jié))MOVSW (字)例:MOVS ES: BYTE PTR [DI], DS: [SI] 執(zhí)行操作: (1) ((DI)) ← ((SI)) (2) 字節(jié)操作:(SI)←(SI)±1, (DI)←(DI)±1
42、 字操作: (SI)←(SI)±2, (DI)←(DI)±2 方向標(biāo)志 DF=0 時(shí)用 + ,DF=1 時(shí)用 - 。 REP MOVS:將數(shù)據(jù)段中的整串?dāng)?shù)據(jù)傳送到附加段中。 源串(數(shù)據(jù)段)→ 目的串(附加段),執(zhí)行 REP MOVS 之前,應(yīng)先做好:(1) 源串首地址(末地址)→
43、SI(2) 目的串首地址(末地址)→ DI(3) 串長(zhǎng)度 → CX(4) 建立方向標(biāo)志 ( CLD 使 DF=0,STD 使 DF=1 ),(SI)? ?(DI),數(shù)據(jù)段 附加段,,,,,,,(SI)?
44、 ?(DI),,,,,,data segment mess1 db ‘personal_computer’data endsextra segment mess2 db 17 dup (?)extra endscode segment mov ax, data movds,ax mo
45、vax, extra mov es, ax lea si, mess1 lea di, mess2 mov cx, 17 cld rep movsb …code ends,data segment mess1 db ‘personal_computer’ mess2 db 17 dup (?)data endscode segment mov ax, data mo
46、vds, ax mov es, ax lea si, mess1 lea di, mess2 mov cx, 17 cld rep movsb …code ends,LODS 從串取指令: LODS SRC LODSB (字節(jié)) LODSW (字)執(zhí)行操作: 字節(jié)操作:(AL)←((SI)), (SI
47、)←(SI)±1 字操作:(AX)←((SI)), (SI)←(SI)±2,注意: * LODS 指令一般不與 REP 聯(lián)用* 源串一般在數(shù)據(jù)段中(允許使用段跨越前綴來(lái)修改), 目的串必須在附加段中* 不影響條件標(biāo)志位,與 REPE / REPZ(REPNE / REPNZ)配合工作的 CMPS 和 SCAS REPE / REP
48、Z REPNE / REPNZ 執(zhí)行操作: (1) 如 (CX)=0 或 ZF=0 (ZF=1) 則退出串操作, 否則轉(zhuǎn)(2) (2) (CX)←(CX) -1 (3) 執(zhí)行 CMPS / SCAS (4) 重復(fù) (1) ~ (3),CMPS 串比較指令:
49、 CMPS SRC, DST CMPSB (字節(jié)) CMPSW (字) 執(zhí)行操作: (1) ((SI)) - ((DI)) 根據(jù)比較結(jié)果置條件標(biāo)志位:相等 ZF=1
50、 不等 ZF=0 (2) 字節(jié)操作:(SI)←(SI)±1, (DI)←(DI)±1 字操作: (SI)←(SI)±2, (DI)←(DI)±2,SCAS 串掃描指令: SCAS DST SCASB (字節(jié)) SCASW (字)
51、執(zhí)行操作: 字節(jié)操作:(AL) - ((DI)), (DI)←(DI)±1 字操作: (AX) - ((DI)), (DI)←(DI)±2,例:從一個(gè)字符串中查找一個(gè)指定的字符 mess db ‘COMPUTER’ lea di, mess mov al, ‘T’ mov cx, 8 cld repne scasb,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- [教育]運(yùn)算符與順序程序設(shè)計(jì)
- 二算術(shù)運(yùn)算程序設(shè)計(jì)
- 基于.net的web程序設(shè)計(jì)題型舉例答案
- matlab程序設(shè)計(jì)及應(yīng)用實(shí)驗(yàn)義
- gps應(yīng)用程序設(shè)計(jì)
- 《vb程序設(shè)計(jì)及應(yīng)用》課后作業(yè)
- 程序設(shè)計(jì)語(yǔ)言與初等數(shù)學(xué)運(yùn)算
- 匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告四(算術(shù)運(yùn)算程序?qū)嶒?yàn))
- vb程序設(shè)計(jì)例題-程序改錯(cuò)程序填空程序設(shè)計(jì)
- c#程序設(shè)計(jì)及應(yīng)用課后題答案
- web應(yīng)用程序設(shè)計(jì)專業(yè)
- web應(yīng)用程序設(shè)計(jì)(aspnet)
- vfp應(yīng)用程序設(shè)計(jì)實(shí)例
- 程序設(shè)計(jì)及算法語(yǔ)言計(jì)算機(jī)程序設(shè)計(jì)
- 程序設(shè)計(jì)教案 程序設(shè)計(jì)——數(shù)據(jù)結(jié)構(gòu)
- 巖體質(zhì)量分級(jí)的程序設(shè)計(jì)及應(yīng)用.pdf
- 可視化程序設(shè)計(jì)及應(yīng)用教學(xué)大綱
- 可視化程序設(shè)計(jì)及應(yīng)用教學(xué)大綱
- 面向?qū)ο蟪绦蛟O(shè)計(jì) 綜合設(shè)計(jì)與應(yīng)用
- 最簡(jiǎn)單的c程序設(shè)計(jì)――順序程序設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論