版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、8086指令系統(tǒng)簡介徐承彬1陽山書屋 一、 8086的指令格式和尋址方式匯編語言指令要解決的兩個問題:要指出進(jìn)行什么操作操作符;要指出操作數(shù)和操作數(shù)地址及操作結(jié)果放在何處尋址方式。 操作碼(OP)操作數(shù)(EA)2陽山書屋(一)、指令格式1、零地址指令格式2、一地址指令格式操作碼(OP)OP EA操作碼操作數(shù)3陽山書屋3、二地址指令格式OP EA1 EA2操作碼第一操作數(shù)(目的操作數(shù))第二操作數(shù)(源的操作數(shù))4陽山書屋二、8086的尋址方式操作數(shù)有三種可能存放方式5陽山書屋 (二)、8086的尋址方式操作數(shù)有三種可能存放方式操作數(shù)在指令中操作數(shù)在CPU內(nèi)部某一寄存器中操作數(shù)在內(nèi)存的存儲單元中6陽
2、山書屋1、立即數(shù)尋址操作數(shù)就在指令中提供,叫立即數(shù)尋址方式。例:MOV AL,15H立即尋址該指令是把立即數(shù)15H送寄存器AL,指令執(zhí)行后(AL)=15H 例如: MOV AX,7632H 例如: MOV word ptr BX,20H7陽山書屋2、寄存器尋址 操作數(shù)在CPU內(nèi)部的寄存器中,指令中指定寄存器號例:MOV DI,AXAXDI執(zhí)行前(AX)=1234H,(DI)=0018H1234H0018H1234H執(zhí)行后(AX)=1234H,(DI)=1234H寄存器尋址8陽山書屋INCCX;將CX的內(nèi)容加1ROLAH,1;將AH中的內(nèi)容循環(huán)左移一位CXAH9陽山書屋3、存儲器尋址:操作數(shù)或地
3、址在存儲器中存儲器尋址直接尋址間接尋址相對尋址基址變址尋址相對基址變址尋址10陽山書屋(1)直接尋址操作數(shù)的16位有效地址在指令中物理地址=(DS)16+EA例:MOV AX,205AHM.代碼段數(shù)據(jù)段設(shè)(DS)=3000HOP5A203 0 0 0205A物理地址=3205A1234指令執(zhí)行后(AX)=3412H數(shù)據(jù)段首地址=3000011陽山書屋注:在匯編語言中有時用符號地址作為有效地址。例如:MOV AX,ARRY也可寫成 MOV AX,ARRY在8086中允許段超越,即允許數(shù)據(jù)放在數(shù)據(jù)段以外的其他段中,指令中需加段跨越前綴。例如:MOV AX,ES:2000H符號地址注:對于雙操作數(shù)指
4、令,必須有一個操作數(shù)在寄存器中12陽山書屋(2)間接尋址:操作數(shù)的有效地址在寄存器BX,BP或變址寄存器SI,DI中操作數(shù)物理地址=(DS)16+(BX)(DS)16+(SI)(DS)16+(DI)(SS)16+(BP)13陽山書屋 例如: MOV AX,BX 例如: MOV AL,BX 例如: MOV AX,SI 例如: MOV AL,DI 例如: MOV SI,BX 例如: MOV BP,AX寄存器間接尋址寄存器尋址14陽山書屋(3)相對尋址:操作數(shù)的有效地址由基址寄存器BX,BP或變址寄存器SI,DI之一中的內(nèi)容加上指令中指定的8位或16位位移量組成。操作數(shù)物理地址=(DS)16+(BX
5、)+ 8位或16位位移量(DS)16+(SI) + 8位或16位位移量(DS)16+(DI) + 8位或16位位移量(SS)16+(BP) + 8位或16位位移量15陽山書屋例:MOV AX,COUNTSIM.代碼段數(shù)據(jù)段設(shè)(DS)=3000H,(SI)=0110HOP10003 0 0 00110+0010=0120物理地址=30120H1234指令執(zhí)行后(AX)=3412H數(shù)據(jù)段首地址=3000016陽山書屋 例如: MOV AX,20HBX相對尋址 例如: MOV AX,BUFSI17陽山書屋(4)基址變址尋址:操作數(shù)的有效地址是指令中指定的基址寄存器(BX或BP)和變址寄存器(SI或D
6、I)之和。操作數(shù)物理地址=(DS)16+(BX)+ (SI)(DS)16+(BX)+ (DI)(SS)16+(BP)+ (SI)(SS)16+(BP)+ (DI)18陽山書屋 例如: MOV AX,BXSI基址變址尋址 例如: MOV AL,BXDI 例如: MOV AX,BPSI19陽山書屋(5)相對基址變址尋址:操作數(shù)的有效地址是指令中指定的基址寄存器(BX或BP)和變址寄存器(SI或DI)與一個8位或16位位移量之和。操作數(shù)物理地址=(DS)16+(BX)+ (SI) +8位或16位位移量(DS)16+(BX)+ (DI)+ 8位或16位位移量(SS)16+(BP)+ (SI)+ 8位或
7、16位位移量(SS)16+(BP)+ (DI)+ 8位或16位位移量20陽山書屋 例如: MOV AX,10HBXSI相對基址變址尋址 例如: MOV AL,BUFBXDI21陽山書屋例如:MOV AX,MASKBXDI設(shè)(DS)=2000H,(SS)=3000H(BX)=1100H,(DI)=0010H,(SI)=0030HMASK=0203H,(21313H)=1234H(31313H)=2356H,(21333H)=0056H則:操作數(shù)的物理地址=2 1 3 1 3H執(zhí)行后(AX)=1234H22陽山書屋指出下列指令中源操作數(shù)和目的操作數(shù)的尋址方式1.MOV AX,1002.MOV SI
8、,AX3.MOV CX,DATXSI4.ADD AX,BXDI5.AND AX,BX6.MOV AX,TAXBXSI7.SUB AX,2500H23陽山書屋二、 8086的指令系統(tǒng)(一)、指令書寫格式:標(biāo)號:助記符 目的操作數(shù),源操作數(shù);注釋(二)、8086的指令系統(tǒng)數(shù)據(jù)傳送指令算術(shù)運算指令邏輯操作指令串操作指令控制轉(zhuǎn)移指令處理機(jī)控制指令24陽山書屋1、數(shù)據(jù)傳送:負(fù)責(zé)把數(shù)據(jù)、地址或立即數(shù)送到寄存器或存儲單元中。分類通用傳送指令累加器專用傳送指令地址傳送指令標(biāo)志傳送指令25陽山書屋(1)通用傳送指令最基本的傳送指令(MOV) 格式:MOV OPRD1,OPRD2;B/WOPRD1:累加器、寄存器
9、、存儲器OPRD2:累加器、寄存器、存儲器操作數(shù)和立即數(shù)目的操作數(shù)源操作數(shù)26陽山書屋傳送路徑段寄存器DS、SS、ES存儲器立即數(shù)通用寄存器AX、BXCX、DXBP、SPSI、DI27陽山書屋MOV 指令的幾種形式MOV BX,AXMOV ALPHA,AXMOV ALPHA,AHMOV AH,ES:BXSIMOV AL,BPMOV AX,ARRAY28陽山書屋MOV ES,DXMOV DS,AXMOV ES,SS:BXMOV BX,DXMOV BL,AX(錯誤指令)MOV MEM,DXMOV CH,8AHMOV DL,B MOV BX,12H 29陽山書屋堆棧操作指令堆棧是在存儲器中開辟的一個
10、棧區(qū) 。工作方式:“后進(jìn)先出”的方式進(jìn)行8086的堆棧是從高地址向低地址方向生長的 堆棧操作:入棧指令PUSH出棧指令POP30陽山書屋在CALL指令、 RET指令、中斷響應(yīng)和返回中都有入棧和出棧的操作。PUSH入棧指令格式:PUSH SRC;W字操作執(zhí)行的操作(SP-1)(SP-2) (SRC)SP (SP-2);先修改后操作SRC是入棧的字操作數(shù)寄存器、段寄存器(不包含CS)、和存儲器31陽山書屋例如:PUSH AX 設(shè)執(zhí)行前(SP)=2500H,SS=5000H,(AX)=3125HSS=5000H堆棧段SP=2500H3 1 2 5AX3 1SP=24FEH2 5棧頂單元物理地址=52
11、50032陽山書屋例如:PUSH BETABXSI設(shè)DS=2000H,BX=2100H,SI=2520H,BETA=03404H,SS=5000H,SP=2500H操作數(shù)的物理地址PA=20000+2100+2520+0340=24960(524FE)(24960)(24961)(524FF)33陽山書屋POP出棧指令格式:POP DST;W字操作執(zhí)行的操作(DST) (SP+1,SP)SP (SP+2);先操作后修改DST是出棧的字操作數(shù)的目的地址(寄存器、段寄存器、和存儲器)34陽山書屋 例如: PUSH AX PUSH BX POP AX執(zhí)行前: AX=1234H BX=2345H SP
12、=1000H1000SP35陽山書屋 例如: PUSH AX PUSH BX POP AX執(zhí)行前: AX=1234H BX=2345H SP=1000H10000FFESP34H12H執(zhí)行后1: AX=1234H BX=2345H SP=0FFEH36陽山書屋 例如: PUSH AX PUSH BX POP AX執(zhí)行前: AX=1234H BX=2345H SP=1000H10000FFE34H12H執(zhí)行后2: AX=1234H BX=2345H SP=0FFCH0FFCSP45H23H37陽山書屋 例如: PUSH AX PUSH BX POP AX執(zhí)行前: AX=1234H BX=2345
13、H SP=1000H10000FFE34H12H執(zhí)行后3: AX=2345H BX=2345H SP=0FFCH0FFC45H23HSP0FFE38陽山書屋 例如: PUSH AX PUSH BX POP AX執(zhí)行前: AX=1234H BX=2345H SP=1000H10000FFE34H12H執(zhí)行后3: AX=2345H BX=2345H SP=0FFEH0FFC45H23HSP0FFE39陽山書屋交換指令:XCHG格式:XCHG OPRD1,OPRD2;B/w執(zhí)行的操作:(OPRD1) (OPRD2)40陽山書屋例如:XCHG AX,BX執(zhí)行前:AX=420AH , BX=7955H執(zhí)
14、行后:AX=7955H ,BX=420AH例如:XCHG DX,BPSI41陽山書屋(2) 累加器專用傳送指令 IN 輸入指令 固定端口輸入數(shù)據(jù)格式:IN AL/AX,Port;Port為端口號功能:從固定端口Port傳送一個字節(jié)或 一個字?jǐn)?shù)據(jù)到AL或AX寄存器8086規(guī)定,從固定端口輸入數(shù)據(jù),端口號的范圍為: 00HFFH42陽山書屋可變端口輸入數(shù)據(jù)格式:IN AL/AX,DX;功能:從DX寄存器所存放的端口地址中送 一個字節(jié)或 一個字?jǐn)?shù)據(jù)到AL或AX寄存器8086規(guī)定:外設(shè)最多可以有65536個I/O端口,端口號范圍為0000HFFFFH。其中低256個端口為固定端口,指令中可以直接指定。
15、當(dāng)端口號256時必須先把端口號放在DX中然后才使用IN指令,他們稱為可變端口43陽山書屋OUT 指令 輸出指令格式:OUT Port,AL/AX OUT DX,AL/AX例如:IN AX,21H IN AL,DX OUT 25H,AX OUT DX,AX44陽山書屋(3)地址-目的傳送指令:把地址送到指定的寄存器中 LEA指令:有效地址送寄存器指令格式LEA REG,SRC功能把REG EASRC注:SRC只能是各種尋址方式 的存儲器操作數(shù) REG 只能是16位的通用寄存器 45陽山書屋例如:LEA CX,BXDI執(zhí)行前 (BX)=1000H ,(DI)=0250H操作數(shù)的有效地址EA=100
16、0H+0250=1250H執(zhí)行后(CX)=1250HCX 的內(nèi)容是存儲單元的有效地址而非存儲單元的內(nèi)容例:LEA DX,BATEBX執(zhí)行前(BX)=1248H ,BETA=0020H該指令執(zhí)行后(DX)=1268H46陽山書屋2、算術(shù)運算指令:用來執(zhí)行算術(shù)運算47陽山書屋(1)加法指令:ADD ADC INC ADD:加法指令格式:ADD OPRD1,OPRD2操作: OPRD1 OPRD1+OPRD2結(jié)果影響標(biāo)志位 AF,CF,OF,PF,SF,ZF 例如: ADD AX,SI 例如: ADD AL,BH48陽山書屋(1)加法指令:ADD ADC INC ADC:帶進(jìn)位的加法指令格式:ADC
17、 OPRD1,OPRD2操作: OPRD1 OPRD1+OPRD2+CF結(jié)果影響標(biāo)志位 AF,CF,OF,PF,SF,ZF49陽山書屋例如:在存儲區(qū)中有兩個雙字?jǐn)?shù)據(jù),分別存放在FIRST和SECOND單元中(四個字節(jié))將兩個數(shù)相加后結(jié)果放在THIRD單元中7 8 5 62 3 9 11 0 3 31 A B 6FIRST3 31 05 67 8SECONDB 61 A9 12 3THIRD50陽山書屋相關(guān)程序如下:MOV AX,F(xiàn)IRST3 31 05 67 8B 61 A9 12 3 E 9 2 AFIRSTSECONDADD AX,SECONDTHIRDMOV THIRD,AXMOV AX
18、,F(xiàn)IRST+2ADC AX,SECOND+2MOV THIRD+2,AX51陽山書屋(1)加法指令:ADD ADC INC INC:加1指令格式:INC OPRD操作: OPRD OPRD+1結(jié)果影響標(biāo)志位 AF,OF,PF,SF,ZF例:INC AL例:INC CX例:INC word PTR BXDI52陽山書屋(2)減法指令:SUB SBB DEC CMPSUB:減法指令格式:SUB OPRD1,OPRD2操作: OPRD1 OPRD1-OPRD2結(jié)果影響標(biāo)志位 AF,CF,OF,PF,SF,ZF53陽山書屋(2)減法指令:SUB SBB DEC CMPSBB:帶借位減法指令格式:SB
19、B OPRD1,OPRD2操作: OPRD1 OPRD1-OPRD2-CF結(jié)果影響標(biāo)志位 AF,CF,OF,PF,SF,ZF54陽山書屋(2)減法指令:SUB SBB DEC CMPDEC:減1指令格式:SUB OPRD操作: OPRD OPRD-1結(jié)果影響標(biāo)志位 AF,OF,PF,SF,ZF55陽山書屋(2)減法指令:SUB SBB DEC CMPCMP:比較指令格式:CMP OPRD1,OPRD2操作: OPRD1-OPRD2結(jié)果影響標(biāo)志位 AF,CF,OF,PF,SF,ZF56陽山書屋例如:CMP AX,BX例如:CMP AL,20H例如:CMP AL,SI57陽山書屋(3)乘法指令:M
20、UL IMULMUL:無符號書乘法指令格式:MUL SRC;B/W操作:AX AL*(SRC)DX AX AX*(SRC)指令中隱含目的操作數(shù)為累加器(AL/AX)源操作數(shù)為寄存器操作數(shù)或存儲器操作數(shù)58陽山書屋(3)乘法指令:MUL IMULIMUL:有符號數(shù)乘法指令格式:IMUL SRC;B/W操作:AX AL*(SRC)DX AX AX*(SRC)兩條指令的執(zhí)行結(jié)果是不同的乘法指令對CF和OF有影響對其他位無定義59陽山書屋(4) 除法指令:DIV IDIVDIV:無符號數(shù)除法指令格式:DIV SRC操作:字節(jié)操作,16位被除數(shù)在AX中8位除數(shù)為源操作數(shù),結(jié)果的8位商在AL中,8位余數(shù)在
21、AH中操作:字操作, 位被除數(shù)在 和 中, 位除數(shù)為源操作數(shù), 結(jié)果的16位商在AX中,16位余數(shù)在DX中DX 32AX 16 60陽山書屋(4) 除法指令:DIV IDIVIDIV:有符號數(shù)除法指令格式與操作同DIV 指令注1:除法運算后,標(biāo)志位不確定 注2:若除數(shù)位0,則產(chǎn)生0號中斷 注3:除法中,若被除數(shù)為8位(字節(jié)除法或16位(字除法)時必須將被除數(shù)進(jìn)行符號擴(kuò)展,AL擴(kuò)展到AH中,AX擴(kuò)展到DX中61陽山書屋CBW:字節(jié)轉(zhuǎn)換為字指令格式:CBW操作:AL中的符號位擴(kuò)展到AH中例如: AL=64H=0 1 1 0 0 1 0 0B執(zhí)行CBW后AX=00 64H例如: AL=83H=1 0
22、 0 0 0 0 1 1B執(zhí)行CBW后AX=FF 83H62陽山書屋CWD:字轉(zhuǎn)換為雙字指令格式:CWD操作:AX中的符號位擴(kuò)展到DX中CBW和CWD指令不影響標(biāo)志位例如:計算 V-(X*Y+Z)/X其中X,Y,Z,V均為16位有符號數(shù)分別已裝入X,Y,Z,V字單元,要求將上式結(jié)果的商存入AX中,余數(shù)存入DX中,請編寫相應(yīng)程序63陽山書屋V-(X*Y+Z)/XMOV AX,XXYZVIMUL Y MOV CX,AXMOV BX,DXMOV AX,ZCWD ADD CX,AXADC BX,DXMOV AX,VCWD SUB AX,CXSBB DX,BX;X*Y IDIV X64陽山書屋3、邏輯運
23、算指令和移位指令(1)邏輯運算指令A(yù)ND OR XOR TEST NOT AND:邏輯與指令格式:AND OPRD1,OPRD2;B/W 功能: OPRD1 OPRD1 OPRD2AND指令執(zhí)行后,CF=0,OF=0. 對AF無定義對 SF ,PF ,ZF 有影響65陽山書屋注: 0A=01A=A 例1:屏蔽一個字節(jié)的高4位 (AL)=39H =0011 1001B則屏蔽字: 00001111則指令A(yù)ND AL,0FH執(zhí)行后 (AL)= 09H 例2:AND AL,AL 執(zhí)行后AL寄存器的內(nèi)容不變 但使CF=0 66陽山書屋(1)邏輯運算指令A(yù)ND OR XOR TEST NOT OR:邏輯或
24、指令格式:OR OPRD1,OPRD2;B/W 功能: OPRD1 OPRD1 OPRD2OR指令執(zhí)行后,CF=0,OF=0. 對AF無定義對 SF ,PF ,ZF 有影響67陽山書屋注: 0A=A1A=1 例1:將一個字節(jié)的高4位置1 (AL)=39H =0011 1001B則屏蔽字: 11110000則指令OR AL,F(xiàn)0H執(zhí)行后 (AL)= F9H 例2:OR AL,80H OR AL,AL 68陽山書屋(1)邏輯運算指令A(yù)ND OR XOR TEST NOT XOR:邏輯異或指令格式:XOR OPRD1,OPRD2;B/W 功能: OPRD1 OPRD1 OPRD2XOR指令執(zhí)行后,C
25、F=0,OF=0. 對AF無定義對 SF ,PF ,ZF 有影響69陽山書屋注: 0A=A1A=A 例1:將某個操作數(shù)清零 則執(zhí)行指令 XOR AL,AL則屏蔽字: 10011000 例2:將操作數(shù)的某些位取反 (AL)=38H= 0011 1000B 則執(zhí)行指令 XOR AL,98H70陽山書屋(1)邏輯運算指令A(yù)ND OR XOR TEST NOT TEST:測試指令格式:TEST OPRD1,OPRD2;B/W 功能: OPRD1 OPRD2TEST指令執(zhí)行后,CF=0,OF=0. 對AF無定義對 SF ,PF ,ZF 有影響71陽山書屋作用:測試某一位或某幾位的條件是否滿足例1:TES
26、T AL,01HJNZ THERE THERE : (AL)=1010 0011 0000 0001例2:TEST AX,8000HJNZ THERE THERE : 72陽山書屋(1)邏輯運算指令A(yù)ND OR XOR TEST NOT NOT:邏輯非指令格式:NOT OPRD;B/W 功能: OPRD OPRDNOT指令不影響標(biāo)志位例 NOT AL73陽山書屋3、邏輯運算指令和移位指令(2)邏輯移位指令SHL SHR SAL SAR ROL ROR RCL RCR SHL:邏輯左移指令格式:SHL OPRD,CNT;B/W 功能:移位次數(shù)由CNT決定 可以是1或CL寄存器的值D0D70CF7
27、4陽山書屋(2)邏輯移位指令SHL SHR SAL SAR ROL ROR RCL RCR SHR:邏輯右移指令格式:SHR OPRD,CNT;B/W 功能:D0D70CF75陽山書屋(2)邏輯移位指令SHL SHR SAL SAR ROL ROR RCL RCR SAL:算術(shù)左移指令格式:SAL OPRD,CNT;B/W 功能:D0D70CF76陽山書屋(2)邏輯移位指令SHL SHR SAL SAR ROL ROR RCL RCR SAR:算術(shù)右移指令格式:SHR OPRD,CNT;B/W 功能:D0D7CF77陽山書屋(2)邏輯移位指令SHL SHR SAL SAR ROL ROR RC
28、L RCR ROL:循環(huán)左移指令格式:ROL OPRD,CNT;B/W 功能:D0D7CF78陽山書屋(2)邏輯移位指令SHL SHR SAL SAR ROL ROR RCL RCR ROR:循環(huán)右移指令格式:ROR OPRD,CNT;B/W 功能:D0D7CF79陽山書屋(2)邏輯移位指令SHL SHR SAL SAR ROL ROR RCL RCR RCL:帶進(jìn)位循環(huán)左移指令格式:RCL OPRD,CNT;B/W 功能:D0D7CF80陽山書屋(2)邏輯移位指令SHL SHR SAL SAR ROL ROR RCL RCR RCR:帶進(jìn)位循環(huán)右移指令格式:RCR OPRD,CNT;B/W
29、功能:D0D7CF81陽山書屋MOV CL,3SAR 20HBX,CL執(zhí)行前(DS)=2000H (BX)=1200H (21220)=38H =0011 1000B 執(zhí)行后(21220)= 0000 0111B=07H82陽山書屋例2: SAL AH,1執(zhí)行前(AH)=A5H 1 0 1 0 0 1 0 1CF執(zhí)行后(AH)= 4AHCF=10F=1ZF=0SF=0PF=083陽山書屋 4、串操作指令84陽山書屋 5、控制轉(zhuǎn)移指令(1)無條件轉(zhuǎn)移指令JPM段內(nèi)轉(zhuǎn)移段間轉(zhuǎn)移IPCS IP85陽山書屋Data segmentAddr dw numberNumber dw yCount dw ?D
30、ata endsCode segmentAssume cs:code,ds:dataStart:mov ax,data Mov ds,ax Mov cx,0 Mov bx,addr Mov ax,bxRepeat:test ax,0ffffh Jz exit Jns shiftInc cxShift: shl ax,1 Jmp repeatExit: mov count,cx Mov ah,4chInt 21h Code ends End start 86陽山書屋(2)條件轉(zhuǎn)移指令條件判斷Y轉(zhuǎn)向目標(biāo)指令N順序執(zhí)行指令87陽山書屋根據(jù)單個標(biāo)志位的條件進(jìn)行轉(zhuǎn)移JZ OPR;ZF=1 轉(zhuǎn)移JNZ O
31、PR;ZF=0 轉(zhuǎn)移JS OPR;SF=1 轉(zhuǎn)移JNS OPR;SF=0 轉(zhuǎn)移JO OPR;OF=1 轉(zhuǎn)移JNO OPRJP OPRJNP OPR;OF=0轉(zhuǎn)移;PF=1轉(zhuǎn)移;PF=0轉(zhuǎn)移例如: CMP AX,DXJZ NEXT 88陽山書屋比較兩個無符號數(shù)根據(jù)比較結(jié)果轉(zhuǎn)移JB(JNAE,JC) OPRJNB(JAE,JNC) OPRA和BJBE(JNA,) OPRJNBE(JA,) OPR89陽山書屋例如:當(dāng)一個無符號數(shù)x小于、等于、或大于100時的三種情況下,應(yīng)去執(zhí)行三個不同的程序段MOV AL,XCMP AL,100JA PROG3PROG1: X100程序段 JZ PROG290陽山書
32、屋比較兩個有符號數(shù)根據(jù)比較結(jié)果轉(zhuǎn)移JL(JNGE) OPRJNL(JGE) OPRJLE(JNG) OPRJNLE(JG) OPR測試CX的值為0則轉(zhuǎn)移指令 JCXZ格式:JCXZ OPR91陽山書屋(3)循環(huán)指令LOOP 循環(huán)指令格式:LOOP OPR測試條件:CX0LOOPZ/LOOPE 為零或相等時循環(huán)指令格式:LOOPZ/LOOPE OPR測試條件:ZF=1且CX0LOOPNZ/LOOPNE 不為零或不相等時循環(huán)指令格式:LOOPNZ/LOOPNE OPR測試條件:ZF=0且CX092陽山書屋例如:有一個首地址為ARRAY的M個字?jǐn)?shù)組試編寫一個程序,求出該數(shù)組的內(nèi)容之和(不考慮溢出)并
33、把結(jié)果存入TOTAL中存儲器數(shù)據(jù)段ARRAYM個TOTALMOV CX,MMOV AX,0MOV SI,0START LOOP:ADD AX,ARRAYSIADD SI,2LOOP START LOOPMOV TOTAL,AX93陽山書屋5、處理器控制指令CLCCMCSTCCLDSTDCLISTIHLT94陽山書屋3.3匯編語言程序設(shè)計一、8086匯編語言源程序的格式1、一般格式Name1 segment 語句Name1 endsName2 segment 語句Name2 ends95陽山書屋Name3 segment 語句Name3 ends end 標(biāo)號2、指令的種類 指令語句指示性語句M
34、OV ,ADD ,LMPMY PLACE DB ?96陽山書屋二、語句的格式名字項操作項操作數(shù)項;注釋項1、名字項標(biāo)號變量某條指令所在存儲單元的符號地址某操作數(shù)所在存儲單元的符號地址(1)標(biāo)號在代碼段定義,后面跟“:”(2)變量在代碼段以外的段定義,后不跟“:”2、操作項指令、偽指令、或宏指令助記符3、操作數(shù)項由一個或多個項組成,多個操作數(shù)之間用“,”分開97陽山書屋(1)對于指令語句一般為操作數(shù)地址、變量、寄存器、標(biāo)號、變量或表達(dá)式 (2)對于偽指令語句或宏指令語句一般為所要的參數(shù) 98陽山書屋DEBUG.EXE 調(diào)試程序一、程序的編制和運行1、用編輯程序EDIT建立以.ASM為擴(kuò)展名的源程
35、序文件。2、用匯編程序MASM對源文件進(jìn)行匯編,生成以. OBJ為擴(kuò)展名的目標(biāo)文件3、用LINK(連接程序)對目標(biāo)文件進(jìn)行連接,形成以.EXE為擴(kuò)展名的可執(zhí)行文件。99陽山書屋二、DEBUG.EXE 調(diào)試程序的使用1、進(jìn)入DEBUG 在根目錄下鍵入DEBUG例如:CDEBUG或者CDEBUGFilename.EXEDEBUG 調(diào)入后出現(xiàn)提示符100陽山書屋2、DEBUG 的常用命令(1)顯示內(nèi)存單元內(nèi)容命令D格式:- D 地址 或 -D 范圍(2)修改內(nèi)存單元內(nèi)容命令E格式1:- E 地址 內(nèi)容表例如:- E DS:120 00 11ABC22格式2:- E 地址 逐個單元相繼修改例如:- E
36、 100101陽山書屋102陽山書屋103陽山書屋2、DEBUG 的常用命令(1)顯示內(nèi)存單元內(nèi)容命令D格式:- D 地址 或 -D 范圍(2)修改內(nèi)存單元內(nèi)容命令E格式1:- E 地址 內(nèi)容表例如:- E DS:120 00 11ABC22格式2:- E 地址 逐個單元相繼修改例如:- E 100104陽山書屋105陽山書屋2、DEBUG 的常用命令(1)顯示內(nèi)存單元內(nèi)容命令D格式:- D 地址 或 -D 范圍(2)修改內(nèi)存單元內(nèi)容命令E格式1:- E 地址 內(nèi)容表例如:- E DS:120 00 11ABC22格式2:- E 地址 逐個單元相繼修改例如:- E 100106陽山書屋107陽
37、山書屋(3)檢查和修改寄存器命令R格式1:-R顯示CPU內(nèi)所有寄存器內(nèi)容和標(biāo)志位格式2:-R 寄存器名顯示和修改某個寄存器內(nèi)容格式3:-RF顯示和修改標(biāo)志位狀態(tài)108陽山書屋109陽山書屋8個標(biāo)志位的置位復(fù)位名稱標(biāo)志位置位復(fù)位溢出 OF OV NV方向 DF DN UP符號 SF NG PL零 ZF ZR NZ輔助進(jìn)位 AF AC NA奇偶 PF PE PO進(jìn)位 CF CY NC中斷 IF EI DI110陽山書屋(3)檢查和修改寄存器命令R格式1:-R顯示CPU內(nèi)所有寄存器內(nèi)容和標(biāo)志位格式2:-R 寄存器名顯示和修改某個寄存器內(nèi)容格式3:-RF顯示和修改標(biāo)志位狀態(tài)111陽山書屋112陽山書屋
38、113陽山書屋(3)檢查和修改寄存器命令R格式1:-R顯示CPU內(nèi)所有寄存器內(nèi)容和標(biāo)志位格式2:-R 寄存器名顯示和修改某個寄存器內(nèi)容格式3:-RF顯示和修改標(biāo)志位狀態(tài)114陽山書屋115陽山書屋116陽山書屋117陽山書屋(4)運行命令G格式:-G =地址1 地址2地址3(5)跟蹤命令T格式1:-T =地址逐條指令跟蹤格式2:-T =地址 值(6)匯編命令A(yù)格式:-A 地址118陽山書屋119陽山書屋120陽山書屋(4)運行命令G格式:-G =地址1 地址2地址3(5)跟蹤命令T格式1:-T =地址逐條指令跟蹤格式2:-T =地址 值(6)匯編命令A(yù)格式:-A 地址121陽山書屋122陽山書
39、屋123陽山書屋(4)運行命令G格式:-G =地址1 地址2地址3(5)跟蹤命令T格式1:-T =地址逐條指令跟蹤格式2:-T =地址 值(6)匯編命令A(yù)格式:-A 地址124陽山書屋125陽山書屋126陽山書屋(4)運行命令G格式:-G =地址1 地址2地址3(5)跟蹤命令T格式1:-T =地址逐條指令跟蹤格式2:-T =地址 值(6)匯編命令A(yù)格式:-A 地址127陽山書屋128陽山書屋129陽山書屋130陽山書屋注:若輸入的語句有語法錯誤,則DEBUG顯示 ERROR 且重新顯示現(xiàn)行的匯編地址等待新的輸入 (7)反匯編命令U格式:-U 范圍131陽山書屋132陽山書屋133陽山書屋134
40、陽山書屋135陽山書屋136陽山書屋(8)退出命令Q格式:-Q退出DEBUG 返回DOS137陽山書屋138陽山書屋139陽山書屋140陽山書屋141陽山書屋三、指示性語句 偽指令語句不形成指令的機(jī)器碼,僅告訴匯編程序為指令中的操作數(shù)如何存放,指令如何產(chǎn)生機(jī)器碼 偽指令語句前如有標(biāo)號,其后無冒號“:”如有操作數(shù),可以有兩個以上的操作數(shù)。偽指令在程序中起著定義、賦置說明、分段等作用。 142陽山書屋1、數(shù)據(jù)定義偽指令格式:變兩名 助記符 操作數(shù) ;注釋DB:定義字節(jié),其后的每個操作數(shù)占用一個字節(jié)DW:定義字,其后的每個操作數(shù)占用一個字DD:定義雙字,其后的每個操作數(shù)占用兩個字DQ:定義4個字,其
41、后的每個操作數(shù)占用4個字Dt:定義10個字節(jié),其后的每個操作數(shù)占用10個字節(jié) 143陽山書屋歸納為以下幾種情況 (1)操作數(shù)可以是常量或常量表達(dá)式例如: X DB 25,42,14H,0,-30Y DW 123H,610,3A60HZ DD 3705H,15 X1 92 A1 40 0E 2Y2 30 13 C0 06 03 A0 5Z3 70 00 0144陽山書屋(2)偽指令后可用操作數(shù)“?”分配并保留空間,不存數(shù)據(jù)例如: A DB 5,? DB ?,?,10B DW ?,15,?A05-0AB-0F00-145陽山書屋(3)可以用操作符DUP來復(fù)制一些操作數(shù)格式:EXPCOUNT DUP
42、(操作數(shù).操作數(shù))例如: Y1 DB 2 DUP (11,?,15)Y2 DW 3 DUP (2500H,?)146陽山書屋Y1 DB 2 DUP (11,?,15)Y2 DW 3 DUP (2500H,?)Y10B-0F0B-0FY20025-0025-147陽山書屋例如: PARA DB 2DUP(3,2DUP(5,7),0),?0305PARA07050700030507050700-復(fù)制操作數(shù)DUP可以嵌套 148陽山書屋(4)可以定義一個表或一個字符串例如: 110的平方值表可以定義如下 :PFB DB 1,4,9,16,25,36,49,64,81定義字符串 STRINGS DB
43、“GOOD MORNING”149陽山書屋2、符號定義語句格式:符號名 EQU 表達(dá)式偽指令可以把符號名定義為常量,或一個能求出常數(shù)值得表達(dá)式 例如: RT1 EQU 123FS EQU 32B5 EQU RT1+1150陽山書屋3、段定義偽指令(1)段定義偽指令SEGMENT/ENDS格式:段名 segment 定位類型 組合類型 類別段名 ends 功能:定義一個邏輯段,由若干邏輯段組成源程序 151陽山書屋定位類型 說明段的開始地點的特點PARA WORD BYTE PAGE 組合類型 告訴連接程序本段與其他段的關(guān)系PUBLIC STACK COMMON 152陽山書屋(2)段寄存器說明
44、偽指令格式:ASSUME 段寄存器名:段名段寄存器名:段名功能:說明段寄存器與段的關(guān)系在一般程序中,本偽指令通常位于代碼段的前面,指明程序中各段所用到的段寄存器的情況 153陽山書屋Code segment Assumecs:code, ds:date, ss:stack, es:date1, Mov ax, dateMov ds, axMov ax, date1Mov es, axCode ends 154陽山書屋返回 dos通常在代碼段結(jié)束之前插入兩條語句MOV AH,4CHINT 21H 155陽山書屋四、程序設(shè)計舉例1、直線運行程序例如:求兩個數(shù)的平均值。兩個數(shù)分別放在X和Y單元中,結(jié)
45、果放在Z單元中。設(shè)兩個數(shù)分別為32和64編程如下:156陽山書屋DATE segment X DB 20H Y DB 40H X20Y40Z DB ? DATE ENDS CODE segment ASSUME CS:CODE, DS:DATE START:MOV AX,DATE MOV DS,AX MOV AL,X 157陽山書屋MOV AL,X ADD AL,Y MOV AH,00H ADC AH,00H MOV BL,02H DIV BL MOV Z,AL CODE ENDS END START 158陽山書屋2、分支程序設(shè)計分支程序:根據(jù)某種判斷結(jié)果,從兩個以上的程序中選擇一個執(zhí)行。條
46、件分支段1分支段2或條件分支段2159陽山書屋例3、比較兩個無符號數(shù)的大小,把大數(shù)存入MAX單元。DATE segment SHUJU DB X1,X2 MAX DB ? DATE ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA 160陽山書屋MOV AX,DATA MOV DS,AX MOV AL,SHUJU CMP AL,SHUJU+1 JA BRANCH BRANCH:MOV MAX, ALMOV AL, SHUJU+1 CODE ENDS END MOV AH, 4CH INT 21H 161陽山書屋3、循環(huán)程序設(shè)計循環(huán)程序一般由四部分組成循環(huán)初值
47、循環(huán)次數(shù),循環(huán)正常工作的初始狀態(tài)循環(huán)體循環(huán)工作的主體部分,為完成特定功能而設(shè)計的程序段 修改部分保證每次循環(huán)時,相關(guān)信息發(fā)生有規(guī)律的變化,為下一次循環(huán)作準(zhǔn)備 循環(huán)控制部分控制循環(huán)的運行和結(jié)束 162陽山書屋例4、從XX單元開始10個連續(xù)單元中存放有10個無符號數(shù),從中找出最大者送YY單元。XXYY分析AL163陽山書屋Data segment Xx db 15,22,16,9,3,44,26,88,39,52 Yy db ? Data ends Code segment Assume cs: code,ds:data Assume cs: code,ds:data Mov ax,data Mo
48、v ds,ax Mov al,xx 164陽山書屋lea bx,xx inc bx Cmp al,bx Mov cx,9 Jae next Xchg al,bx Loop next:loop1:loop1Mov yy,al Mov ah,4ch Int 21h Code ends End 165陽山書屋常用系統(tǒng)功能調(diào)用01H號讀取鍵盤字符并回顯(單字符)調(diào)用方式MOV AH,01HINT 21H 說明等待按鍵 若是CTRL-BREAK則退出 其他鍵,將其ASCLL碼送AL寄存器,同時送顯示器顯示 166陽山書屋02H號顯示字符 調(diào)用方式MOV AH,02HINT 21H DL 要顯示字符的AS
49、CLL碼說明將置入DL寄存器的字符送顯示器顯示 167陽山書屋08H號鍵盤輸入單字符不顯示 調(diào)用方式MOV AH,08HINT 21H 說明將輸入的字符送AL寄存器 168陽山書屋09H號字符串輸出顯示 調(diào)用方式DX 要顯示字符串的首地址MOV AH,09HINT 21H 說明要顯示的字符串一般定義在數(shù)據(jù)段 該字符串必須以定界符“$”為結(jié)束標(biāo)志 “$” 字符不顯示 169陽山書屋STRING DB How are you,$ 例如: MOV DX,OFFSET STRING MOV AH,09H INT 21H 170陽山書屋0AH號字符串輸入 調(diào)用方式DX 接收字符串緩沖區(qū)的首地址MOV A
50、H,0AHINT 21H 說明從鍵盤接收字符串到內(nèi)存指定的緩沖區(qū),直到回車為止 緩沖區(qū)的第一個字節(jié)為指定緩沖區(qū)的字符個數(shù) 緩沖區(qū)的第二個字節(jié)保留,填寫實際輸入字符的個數(shù) 171陽山書屋緩沖區(qū)的第三個字節(jié)開始存入輸入的字符 例如: DATA SEGMENT BUF DB 80 DB ? DB 80DUP(?) DATA ENDS 172陽山書屋4CH號結(jié)束程序返回操作系統(tǒng) 調(diào)用方式MOV AH,4CHINT 21H 173陽山書屋從鍵盤輸入07中的一個數(shù),然后將數(shù)字轉(zhuǎn)換成對應(yīng)位為1的8位二進(jìn)制數(shù)存入AL中,根據(jù)AL中哪一位為1轉(zhuǎn)入相應(yīng)的分支程序處,實現(xiàn)散轉(zhuǎn),設(shè)8個分支程序分別顯示AH中的一個 。
51、 分析: 輸入0 AL0000 0001 顯示A 輸入1AL0000 0010 顯示B 輸入2AL0000 0100 顯示C 輸入3AL0000 1000 顯示D 輸入7AL1000 0000 顯示H174陽山書屋實際: 輸入0AL0011 00000000 0001 輸入10011 00010000 0010AL 輸入30011 00110000 1000AL 輸入70011 01111000 0000AL設(shè)置初值寄存器DL0000 0001移動次數(shù)由AL低4位得到送CL寄存器移動 DL后送顯示175陽山書屋code segmentassume cs:codestart:mov dl,01hmov ah,1int 21hcmp al,qjz exitand al,0fhmov cl,alshl dl,clmov al,dlcmp al,01hjz xacmp al,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技驅(qū)動農(nóng)產(chǎn)品電商
- 科技農(nóng)業(yè)投資視角
- 專業(yè)房產(chǎn)經(jīng)紀(jì)服務(wù)協(xié)議2024版范本版
- 二零二四宇通客車零部件銷售代理及市場拓展合作協(xié)議3篇
- 2025年度電商新零售線下體驗店合作合同3篇
- 專業(yè)銷售服務(wù)協(xié)議書2024年3篇
- 2025年度跨境電商物流中心場地承包經(jīng)營合同4篇
- 2025年度航空航天復(fù)合材料加工技術(shù)合同4篇
- 2025年度茶樓裝修工程合同標(biāo)準(zhǔn)樣本8篇
- 2025年度教育機(jī)構(gòu)場地租賃保證金合同8篇
- 2024版塑料購銷合同范本買賣
- 【高一上】【期末話收獲 家校話未來】期末家長會
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 有毒有害氣體崗位操作規(guī)程(3篇)
- 二年級下冊加減混合豎式練習(xí)360題附答案
- 吞咽解剖和生理研究
- TSG11-2020 鍋爐安全技術(shù)規(guī)程
- 汽輪機(jī)盤車課件
- 異地就醫(yī)備案個人承諾書
- 蘇教版五年級數(shù)學(xué)下冊解方程五種類型50題
評論
0/150
提交評論