




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課前復習指令系統:課前復習指令系統:1 .MOV DS,2010H ;錯錯 不能將立即直接給段寄存器不能將立即直接給段寄存器 2 .PUSH AL ;錯錯 不能對字節進行堆棧操作不能對字節進行堆棧操作 3 .MOV DX, SP ;錯錯 無無SP尋址方式,存儲器地址尋址方式,存儲器地址只能通過只能通過BX,BP,SI,DI尋址尋址 4 .IN AL,0A00H ;錯錯 端口地址大于端口地址大于FFH 應用應用DX尋址端口尋址端口 5 .XCHG CL,CH ;對對6 .AAA CX ;6 .AAA CX ;錯錯 AAAAAA為無操作數指令為無操作數指令, ,默認操作數默認操作數AL AL 7
2、.ADD BP+DI,1000H ;7 .ADD BP+DI,1000H ;錯錯 兩個操作數不能均為存儲兩個操作數不能均為存儲器器 8 .OUT DX,CL ;8 .OUT DX,CL ;錯錯 端口只能通過端口只能通過ALAL或或AXAX傳送數據傳送數據 9.CBW BH ;9.CBW BH ;錯錯 符號擴展命令為無操作數指令符號擴展命令為無操作數指令, , 默認操作數默認操作數ALAL10.ADD 03ECH,AX ;10.ADD 03ECH,AX ;錯錯 目的操作數不能為立即數目的操作數不能為立即數 11.MOV BX,SP+DI;11.MOV BX,SP+DI;錯錯 無無SP+DISP+
3、DI尋址尋址, ,必須是基址必須是基址 (BX(BX或或BP)+BP)+變址變址(SI(SI或或DI) DI) 12.MOV DI,AX ;12.MOV DI,AX ;錯錯 無無AXAX尋址尋址13.LDS CH,DI ;13.LDS CH,DI ;錯錯 LDSLDS指令目的操作數應為一個指令目的操作數應為一個1616為寄存器為寄存器 14.LEA BX,1000H ;14.LEA BX,1000H ;錯錯 LEALEA源操作數應為一個存儲器操作數源操作數應為一個存儲器操作數, , 不能是立即數不能是立即數15.DIV 0010H ;15.DIV 0010H ;錯錯 單操作數不能是立即數單操作
4、數不能是立即數 16.LEA DX,DI ;16.LEA DX,DI ;錯錯 LEALEA源操作數應為一個存儲器操作數源操作數應為一個存儲器操作數, , 不能是寄存器不能是寄存器 17.MUL AX,200H ;17.MUL AX,200H ;錯錯 MULMUL為單操作數指令為單操作數指令, , 且源操作數不能為立即數且源操作數不能為立即數,AX,AX隱含隱含 18.MOV AX,BX+BP;18.MOV AX,BX+BP;錯錯 無無BP+BXBP+BX尋址尋址, ,理由同第理由同第1212題題 19.CMP BX,SI ;19.CMP BX,SI ;錯錯 雙操作數不能均為存儲器雙操作數不能均
5、為存儲器 21.OUT DX,BX ;21.OUT DX,BX ;錯錯 端口只能通過端口只能通過ALAL或或AXAX傳送數據傳送數據22.AND 0FH,AL ;22.AND 0FH,AL ;錯錯 目的操作數不能為立即數目的操作數不能為立即數23.JNZ AAA ;23.JNZ AAA ;錯錯 AAAAAA十一條指令十一條指令. .不能作為符號地址不能作為符號地址 例例1 復習求補指令:復習求補指令: MOV AH, 80H NEG AH 00 H 0000 0000 B 00 H 0000 0000 B - - 80 H 80 H - - 1000 0000 B 1000 0000 B 1
6、1 1 1 80H 1000 0000B 80H 1000 0000B 執行后:執行后: (AL)=80H , CF=1,OF=1,ZF=0,SF=1,AF0,PF=0 CMP oprd1, oprd2 ; (oprd1) - (oprd2) CMP A, Bl 利用利用CMP執行后的標志值,比較兩操作數之間的關系執行后的標志值,比較兩操作數之間的關系l 比較指令比較指令CMP,進行兩操作數相減操作,進行兩操作數相減操作, 但只影響標志值,不影響操作數但只影響標志值,不影響操作數(減的結果不保存減的結果不保存)例例2:復習比較指令:復習比較指令:條件轉移指令條件轉移指令判斷條件判斷條件 低于低
7、于 JB next CF = 1 低于低于或或等于等于 JBE next CF = 1 或或 ZF = 1 高于高于 JA next CF = 0 且且 ZF = 0 高于高于或或等于等于 JAE next CF = 0有符號數小于用有符號數小于用JLJL,大于用,大于用JGJG例例 將將AX和和BX中較大的帶符號數,存于中較大的帶符號數,存于AX中中 CMP AX, BX ;比較比較 JGE great ;大于大于或或等于則跳轉等于則跳轉 XCHG AX, BX ;小于則交換小于則交換 great: 、CMP A,BCMP指令應用舉例:指令應用舉例: 若自若自BLOCKBLOCK開始的內存緩
8、沖區中,有開始的內存緩沖區中,有100100個帶符號數。個帶符號數。 找出最大值。并存放到找出最大值。并存放到MAXMAX單元中。單元中。 第一個數取出第一個數取出 ( AX), 取出第二個數(第二個字單元內容)與取出第二個數(第二個字單元內容)與(AX)比較比較 : (AX)第二個數,不做交換,第二個數,不做交換, 否則,(第二個字單元內容否則,(第二個字單元內容) (AX)。)。 再取第三個數,再取第三個數, 經過經過99次比較,在(次比較,在(AX)中得到最大數。)中得到最大數。編程:編程: MOV BX,OFFSET BLOCK MOV AX,BX INC BX INC BX MOV
9、CX,99AGAIN: ;(AX) (AX) 大,轉大,轉NEXTNEXT MOV AX,BXNEXT: INC BX INC BX DEC CX JNZ AGAIN MOV MAX,AX;MAX單元存放單元存放最大值最大值三三. 邏輯運算指令邏輯運算指令邏輯指令邏輯指令指令分類指令分類邏輯運算邏輯運算AND 、OR 、XOR 、NOT 、TEST移移 位位 SHL 、SAL 、SHR 、SAR 循環移位循環移位 ROL 、ROR 、RCL 、RCR1.邏輯運算指令邏輯運算指令AND AL , 0000 1111BOR BX , 00FFHNOT CLXOR DL, ALTEST AL, 00
10、00 0001Bl 除除NOT指令單操作數外,其它均為雙操作數指令單操作數外,其它均為雙操作數l 可進行字節或字操作可進行字節或字操作l NOT指令不影響標志指令不影響標志l TEST為為“與與”操作,但只影響標志位,不影響操作數。操作,但只影響標志位,不影響操作數。其他指令其他指令置置CF、OF為為0,AF不定不定 ( 無意義無意義 )SF、ZF、PF據結果置位據結果置位以以“與與”指令為例,討論注意事項:指令為例,討論注意事項: 影響條件碼:影響條件碼: CF0F=0, AF未定義未定義 , SF ZF PF “與與”指令的用途指令的用途:(1) 例:例:AND AL,AL ; 結果:結果
11、:。 (2) 使使;而而。例:例: 若(若(AL)=4 H AND AL, 0 H ; (AL)=03H, ; ;。2. 移位指令移位指令SHL oprd, 1CLSAL oprd, 1CLSHR oprd, 1CLSAR oprd, 1CL0CF0CFCF0CF執行操作執行操作指令格式指令格式左移部分邏輯移位與算術移位3. 循環移位指令循環移位指令指令格式指令格式執行操作執行操作CFCFCFCFROL oprd, 1CLROR oprd, 1CLRCL oprd, 1CLRCR oprd, 1CL循環移位分帶進位與不帶進位兩種共同點:共同點: 所有移位指令都可以作所有移位指令都可以作B/W操
12、作。操作。 指令中的指令中的 cnt : 表示移位次數表示移位次數 cnt=1,1可寫在指令中,不能是可寫在指令中,不能是1以外的常數。以外的常數。 cnt1,用,用CL存放移位次數存放移位次數 ,不能是其他寄存器。不能是其他寄存器。 如:如:SAL AX,1 MOV CL,4 SAL AX,CL注意事項:注意事項: SHL AL, 1 SHR AL, CL ROL BX, 1 RCR AL, CLl源操作數為移位的次數源操作數為移位的次數 為為1可在指令中直接給出可在指令中直接給出 大于大于1時,移位次數需由時,移位次數需由CL給出給出 RCR AX,5 SHL BL, ALl 目的操作數類
13、型決定操作類型目的操作數類型決定操作類型SAL BL,CL 字節操作字節操作ROL BX,CL 字操作字操作當移位次數當移位次數l oprd可以是可以是reg/meml 可進行字節或字操作可進行字節或字操作(Rotate)(Shift): 移位指令執行后,移出的位可能丟失;移位指令執行后,移出的位可能丟失; 循環移位指令移循環移位指令移位后,操作數中原來各數位的信息不會丟失,這是移動了位位后,操作數中原來各數位的信息不會丟失,這是移動了位置,必要時可以恢復。置,必要時可以恢復。 循環移位指令可以對操作數進行測試。循環移位指令可以對操作數進行測試。例:測試例:測試(AL)5 =? 0MOV CL
14、 , 3JNC ZEROZERO: 。例:例: 將將DX、AX組合起來構成組合起來構成32位寄存器向左移一位。位寄存器向左移一位。如下圖所示:如下圖所示:0 015150 01515DXDXAXAX程序:程序: SHL AX , 1 RCL DX , 132位寄存器向左移一位位寄存器向左移一位四、串操作指令(四、串操作指令(String manipulation ) “串串”就是內存中一段地址相連的字節或字。就是內存中一段地址相連的字節或字。 。 串操作指令是串操作指令是8088實現內存之間數據傳送的一組指令實現內存之間數據傳送的一組指令 8088有有5種基本操作:種基本操作: 1、 MOVS
15、(Move string) 串傳送指令串傳送指令 2、CMPS(Compare string) 串比較指令串比較指令 3、SCAS(Scan string) 串掃描指令串掃描指令 4、LODS(Load from string) 串取數指令串取數指令 5、STOS (Store in to string) 存入串數據指令存入串數據指令 可以只有源操作數,可以只有目標操作數,可能二者都有。可以只有源操作數,可以只有目標操作數,可能二者都有。 源操作數用源操作數用SI 尋址,隱含尋址,隱含DS值為段地址,可以用段跨越前綴指定其它段。值為段地址,可以用段跨越前綴指定其它段。 目標操作數用目標操作數用
16、DI尋址,隱含尋址,隱含ES為段地址。為段地址。 每次操作對每次操作對SI、DI 調整:調整: 與上述指令基本配合使用前綴有:與上述指令基本配合使用前綴有:(Repeat) (Repeat while equal/zero) (Repeat while not equal/not zero)。下面分二種情況來討論:下面分二種情況來討論:(一一) 與與REP相配合工作的相配合工作的MOVS、STOS指令指令 REP 重復串操作直到(重復串操作直到(CX)=0為止為止LODS指令一般不直接與指令一般不直接與REP聯合使用,但其操作與聯合使用,但其操作與STOS相關,因而放在這里。相關,因而放在這里
17、。(二二) 與與REPE/REPZ和和REPNE/REPNZ聯合工作的聯合工作的CMPS和和SCAS指令指令 REPE/REPZ 當相等當相等/為零時重復串操作為零時重復串操作 REPNE/REPNZ 當不相等當不相等/不為零時重復串操作不為零時重復串操作 格式:格式:REP String Primitive 串指令串指令 String Primitive 可為:可為:MOVS、STOS。1. MOVS(Move String) 串傳送串傳送2. LODS(Load from String) 讀串指令讀串指令3. STOS(Store into String) 寫串指令寫串指令 (1)當當(C
18、X)= 0 ,結束,結束REP, 執行執行REP后的下一條指令。后的下一條指令。 (2) 當當(CX)0, (CX) (CX) -1 , (3) 執行執行REP后的串指令,后的串指令, (4) 重復重復(1)(3)。)。REP 執行流程圖執行流程圖( (C CX)X)=0?=0?Y Y(CX) (CX)-1(CX) (CX)-1執行下一條指令執行下一條指令執行REP后的串執行REP后的串指令指令N N(1) MOVS dest,src;(;(ES):():(DI)(DS):():(SI)(2) MOVSB (字節)(字節);(SI)(SI)1,(,(DI)(DI) 1(3) MOVSW (字)
19、;(字);(SI)(SI)2,(,(DI)(DI)2 該指令不影響條件碼該指令不影響條件碼 。 *如:如: MOVS ES:BYTE PTR DI,DS:SI* 單指令不能完成單指令不能完成 ; 例:將內存的數據段中以例:將內存的數據段中以AREA1為首地址的為首地址的100個數據,個數據,傳送到附加段中的傳送到附加段中的AREA2為首地址的區域。為首地址的區域。用用MOVS串操作指令編程:串操作指令編程: MOV AX,SEG AREA1MOV DS,AX MOV AX,SEG AREA2MOV ES,AX ; DF=0,增址傳送,增址傳送 REP ESES:BYTE PTRDI, DSBY
20、TE PTRDI, DS:SISIMOV指令編程:指令編程: MOV AX,SEG AREA1 MOV DS,AX MOV AX,SEG AREA2 MOV ES,AX MOV SI,OFFSET AREA1 ;將;將ARE1偏移地址偏移地址SI MOV DI,OFFSET AREA2 MOV CX,100LOOP1:MOV AL,SI ; (AL)(DS):():(SI) MOV ES:DI,AL ;(;(ES):():(DI)(AL) INC SI INC DI DEC CX JNE LOOP1歸納在執行歸納在執行MOVS指令時,應該先做好以下準備工作:指令時,應該先做好以下準備工作:(1
21、) 數據段中源串首地址(如反向傳送到末地址)存入SI寄存器中。(2) 附加段中目的串首地址(或反向傳送末地址)。(3) 。(4) CLD(clear direction flag) 功能:功能:,執行串處理指令時,執行串處理指令時 可以使地址可以使地址。 STD(set direction flag)功能:功能:,執行串處理指令時可以使地址,執行串處理指令時可以使地址2. LODS(Load from string)讀串指令(1) LODS src;(字節)(字節)(AL) (DS):(SI), (SI) (SI) 1 (字(字)(AX) (DS):(SI),(SI) (SI)2(2) LOD
22、S B (字節)(字節);(AL) (DS):(SI),(SI) (SI) 1(3) LODS W (字)(字) ;(AX) (DS):(SI),(SI) (SI)2功能:該指令把由功能:該指令把由。DF=0,(,(SI) (SI)+1或或+2DF=1,(,(SI) (SI)-1或或-2(1) 指令允許用段跨越前綴來指定非數據段的存儲區。指令允許用段跨越前綴來指定非數據段的存儲區。(2) 該指令不影響條件碼。該指令不影響條件碼。(3) 一般說來,一般說來,它不與它不與REP聯用聯用,每重復一次,累加器的內容就改變一次。每重復一次,累加器的內容就改變一次。 (AL)中只能保持最后一個元素。中只能
23、保持最后一個元素。有時有時。適用于在一個循環中,用基本串操作指令構成復雜串操作適用于在一個循環中,用基本串操作指令構成復雜串操作時很有用。時很有用。 (1) STOS dest;(字節)(字節) (ES):(DI) (AL) , (DI) (DI) 1 (字(字) (ES):(DI) (AX) , (DI) (DI) 2(2) STOS B (字節)(字節); (ES):(DI) (AL) , (DI) (DI) 1(3) STOS W (字)(字) ; (ES):(DI) (AX) , (DI) (DI) 2用途:用途:與與REP聯用時,(聯用時,(CX)緩沖區長度。用來建立一串相同的值,緩
24、沖區長度。用來建立一串相同的值,初始清零。初始清零。例:在附加段例:在附加段STORE開始存開始存5個空格個空格程序:程序: MOV AL,20H ;_ (AL) MOV CX,5 MOV DI,offset STORE CLD REP STOSB ;(ES):(DI) (AL) (DI) (DI)+120H20H20H20H20H20H20H20H20H20H.STORE:STORE:學習學習LODS,STOS指令應用指令應用例:內存中有一個首地址為例:內存中有一個首地址為BLOCK。 存放正數的緩沖區首址為存放正數的緩沖區首址為PUOS-DATA, 存放負數的緩沖區首址為存放負數的緩沖區首
25、址為MINUS-DATA。設:設: 源數據塊用源數據塊用SI尋址,尋址, 正數的目的區用正數的目的區用DI尋址,尋址, 負數的目的區用負數的目的區用BX尋址。尋址。 循環次數循環次數 ( CX )。用用LODS指令把源數據取入(指令把源數據取入(AL)中,)中, 檢查其符號,確定正、負,檢查其符號,確定正、負,若為正數用若為正數用STOS指令送至正數緩沖區,指令送至正數緩沖區,若是負數,把(若是負數,把(DI)與()與(BX)交換,仍使用)交換,仍使用STOS傳送,傳送,傳送傳送 完后再完后再 將(將(DI)與()與(BX)交換,恢復原值)交換,恢復原值。程序:程序:START: MOV SI
26、,OFFSET BLOCK ; 數緩串位置數緩串位置MOV DI,OFFSET PUOS-DATA ; 正數緩沖區正數緩沖區 MOV BX,OFFSET MINUS-DATA ;負數緩沖區;負數緩沖區MOV CX,COUNT GOON: TEST AL,80H JNZ MINS ;若非;若非0,為負數轉,為負數轉MINS ;正數;正數 ,(,(DI)(AL),(),(DI)(DI)+1JMP AGAINMINS: XCHG BX,DI ;負數;負數 ,(,(DI)(AL),(),(DI)(DI)+1XCHG BX,DI AGAIN:DEC CX JNZ,GOON HLT(二二) 與與REPE/
27、REPZ和和REPNE/REPNZ聯合工作的聯合工作的CMPS和和SCAS指令指令 REPE/REPZ 當相等當相等/為零時重復串操作為零時重復串操作 格式:格式:REPE(或(或REPZ)string primitive 當相等時的重復前綴當相等時的重復前綴REPZString primitive可用于可用于 : 1、CM PS(Compare string ) 串比較指令串比較指令 2、SCAS (Scan string ) 串掃描指令,搜索指令串掃描指令,搜索指令執行過程:執行過程:(1) 當當(CX)= 0 , 結束結束REPZ, 執行執行REPZ下一條指令;下一條指令;(2) 當當(
28、CX)0,將,將CX 的內容減的內容減1,執行執行REPZ后的串指令;后的串指令;(3) 當當ZF = 1, 返回返回 (1) ;(4) 當當ZF1, 則結束則結束REPZ 執行執行REPZ下一條指令。下一條指令。 (CX)減減1操作不影響標志操作不影響標志 ZF標志由串操作決定標志由串操作決定 當當 (CX) = 0或或ZF=0時退出循環時退出循環REPZ執行流程執行流程( (C CX)X)=0?=0?Y Y(CX) (CX)-1(CX) (CX)-1執行下一條指令執行下一條指令執行REZ后的串執行REZ后的串指令指令N NZF=1?ZF=1?N NY Y 格式:格式:REPNE(或(或RE
29、PNZ)string primitive 當不相等重復前綴REPNZstring primitiveString primitive可為可為 : 1、CM PS(Compare string ) 串比較指令串比較指令 2、SCAS (Scan string ) 串掃描指令,搜索指令串掃描指令,搜索指令執行過程:執行過程:(1) 當當(CX )= 0 , 結束結束REPNZ, 執行執行REPNZ下一條指令。下一條指令。(2) 當當(CX)0,將,將CX 的內容減的內容減1, 執行執行REPNZ后的串指令。后的串指令。(3) 當當ZF = 0, 返回返回(1); 當當ZF0, 則結束則結束REPN
30、Z, (4) 執行執行REPNZ下一條指令。下一條指令。注意:注意: (CX)減1操作不影響標志 ZF標志由串操作決定 當 (CX) = 0或ZF=1時退出循環REPNZ執行流程執行流程( (C CX)X)=0?=0?Y Y(CX) (CX)-1(CX) (CX)-1執行下一條指令執行下一條指令執行RENZ后的串執行RENZ后的串指令指令N NZF=0?ZF=0?N NY Y (SI)作為源串地址,(作為源串地址,(DI)目的串地址目的串地址(1) CMPS dest,src;(ES) :(DI) -(DS):(SI),(2) CMPS B (字節)(字節);(SI) (SI)1,(DI)(D
31、I) 1(3) CMPS W (字);(字);(SI) (SI)2,(DI) (DI)2執行操作:執行操作:(ES) :(DI) -(DS):(SI),結果不存,置標志。結果不存,置標志。字節操作:字節操作:(SI) (SI)1,(DI)(DI) 1字操作:字操作:(SI) (SI)2,(DI) (DI)2 學習學習REPZ CMPSB指令指令例:利用例:利用CMPS指令對指令對STRING1和和STRING2二個字符串進行二個字符串進行 比較,比較結果相同在比較,比較結果相同在RESULT 單元送單元送00H,不同送,不同送0FFH。MOV SI,OFFSET STRING1 MOV DI,
32、OFFSET STRING2 MOV CX,COUNT CLD REPZ CMPSB;相等時繼續比較;相等時繼續比較 JNZ UNMAT ;若串不同,在;若串不同,在RESUL單元中置單元中置0FFH MOV AL,0 ;若串相等,在;若串相等,在RESULT單元中置單元中置00H JMP OULPT UNMAT:MOV AL,0FFH (Scan string ) (DI)字符串起始地址,(AL)或(AX) 關鍵字 串掃描指令有3種格式:格式:格式:SCAS dest SCASB(字節);(字節);(AL)-(ES):():(DI),(),(DI)(DI)1 SCASW(字);(字);(AX)-(ES):():(DI),(),(DI) (DI)2 (AL)或()或(AX) - 目的串目的串兩數相減,只影響標志,不影響操作數。兩數相減,只影響標志,不影響操作數。其它特性與其它特性與MOVS同。同。 REP NE SCASB指令應用。例:要搜索的關鍵字 放在(AL)或(AX)中,搜索某一數據塊或字符串中有無關 鍵字,若有,且記錄關鍵字地址;若判斷結果為0轉出,表示找到關鍵字;若計數器為0,表
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學生廉政教育課件
- 沙水區大城堡課程故事
- 中國民居建筑藝術賞析
- 2025年山東省工藝品出口合同
- 2025裝修工勞動合同樣本
- 2025年華南農行柜員勞動合同及勞務派遣面試
- 2025攪拌機租賃合同書范文租賃合同
- 2025合同管理與招投標實踐題目
- 液壓與氣動技術課程設計
- 2024-2025湘科版科學一年級下冊期中測試卷附答案
- 河流專題復習-重點課件
- 企業風險管理-戰略與績效整合(中文版)
- 2022年全國職工書屋推薦書目
- 哈薩克斯坦鐵路車站代碼
- 裝配式建筑設計設計專篇
- 《教育心理學》教材
- 綏滿公路大慶黃牛場至齊齊哈爾宛屯段擴建項目B4合同段施工組織設計
- 身體紅綠燈課件
- Pentacam白內障應用(第二版)
- 抗精神病藥物的選擇與聯合應用
- JJF1059.1測量不確定度評定與表示(培訓講稿)
評論
0/150
提交評論