版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.,1, 指令的基本概念和指令所包含的 基本內容。 8086指令的格式及編碼方式。 8086指令的尋址方式及尋址過程。 8086指令系統(tǒng)的分類、功能及操 作過程,每條指令的格式及用法。,.,2,.,3,.,4,4.1 概 述,一、指令 (Instruction):,指令通常以二進制代碼的形式提供給計算機,這種指令稱為機器指令。,指示計算機執(zhí)行什么操作的命令。,.,5,二、指令系統(tǒng) (Instruction System):,三、程序 (Program):,完成某個特定任務而編制的一系列指令的有序集合。,程序的執(zhí)行一般是按指令的先后次序一條一條執(zhí)行,但遇到轉移類指令時則可能改變指令的執(zhí)行次序。,
2、計算機所能執(zhí)行的全部指令。,.,6,四、指令包含的基本內容,1. 做什么操作,由指令的操作碼字段規(guī)定。,2. 操作數(shù)的來源,操作數(shù)來自于什么地方。由指令的操作數(shù)字段規(guī)定。,.,7,操作數(shù)的來源可以是:,.,8,3. 操作結果的去向,操作的結果將存放在何處。,4. 下一條指令的位置,指示下一條指令是順序執(zhí)行還是轉移執(zhí)行。,.,9,五、指令的種類,.,10,六、指令的表示方法,1. 二進制代碼表示機器語言指令,2. 助記符表示匯編語言指令,例:10001000 11011000,例:MOV BL,AL,MOV表示“傳送”助記符,BL(寄存器)表示結果存放的位置,AL(寄存器)表示數(shù)據(jù)的來源。,.,
3、11,助記符表示的指令便于書寫、理解和記憶,但最終必須將助記符指令“翻譯”成機器指令才能被識別和執(zhí)行。這個過程叫“匯編”。,.,12,4.2 8086 CPU的尋址方式,地址:數(shù)據(jù)和指令存放的位置。,數(shù)據(jù)存放的位置可以是寄存器、存儲器或I/O端口,指令存放的位置只能是存儲器中的代碼段。,尋址方式:尋找指令地址和操作數(shù)地址的方式。,尋址過程:形成指令地址和操作數(shù)地址的過程。,.,13,結果,.,14,2. 立即數(shù)尋址,操作數(shù)作為立即數(shù)就在指令中給出。,例:MOV AX,1234H,操作:把立即數(shù)1234H送寄存器AX中。,機器碼:B8 34 12 (低字節(jié)在地址小的單元),.,15,AH,AL,
4、AX,.,B8,34,12,.,代碼段 (存儲器中),操作碼(B8),操作數(shù)(1234H)立即數(shù),一條指令,指令執(zhí)行后,AX=1234H (原有的內容被新的內容替換)。,MOV AX,1234H,.,16,3. 寄存器尋址,操作數(shù)在某個寄存器中。,例:INC BL,操作:使BL中內容加1后送回,若BL=00H,則執(zhí)行后BL=01H,BL=FFH,則執(zhí)行后BL=00H (自動溢出),01,.,17,4. 存儲器尋址,操作數(shù)在存儲器中的一個或幾個單元中。,在這種尋址方式下,要找到該操作數(shù),關鍵是必須找到該操作數(shù)所在單元的地址。,由于8086采用存儲器段組織結構,內存單元的地址由段起始地址 (基地址
5、) 和該單元與段起始地址之間的距離 (以字節(jié)數(shù)計) 兩部分共同決定。,.,18,段起始地址(基地址):某個段寄存器的內容(又稱段基值)乘以16得到。,段內偏移量:該單元與段起始地址之間的距離(字節(jié)數(shù)) 。又稱有效地址EA。,待尋址的內存單元,(CS, DS, ES, SS)16 段基地址,內存單元物理地址,.,19,8086規(guī)定,在執(zhí)行某種操作時,采用的段寄存器有一個預先的約定。故指令中一般只需給出有關EA的信息,則CPU將能夠根據(jù)該次操作自動選用段寄存器,并與EA一起形成物理地址。 存儲器尋址的實質就是如何形成有效地址EA。,.,20,(1) 直接尋址方式,指令中以偏移量方式直接給出操作數(shù)的
6、有效地址。即,EA=指令中給出的偏移量,.,21,例:MOV AX,1234H,機器碼:A1 34 12,操作:把偏移量1234H作為EA,在數(shù)據(jù)段中找到相應的字單元,再將字單元的內容送AX。,.,22,本例執(zhí)行完后,AX=3050H,EA=1234H,設DS=3000H,DS16,=30000H,= 3000H16,MOV AX, 1234H,.,23,b. 段基值乘以16,相當于段基值(二進制表示)左移4位,或段基值(十六進制表示)在末尾添一個0H。,注:,.,24,(2) 間接尋址方式,以間接的方式得到有效地址EA,有幾個專用的寄存器可用于間接尋址:BX,BP,SI,DI。,a. 基址尋
7、址方式,以BX作為基址尋址寄存器,操作數(shù)在數(shù)據(jù)段中。,以BP作為基址尋址寄存器,操作數(shù)在堆棧段中。,EA=BX或BP的內容+8位或16位位移量,.,25,例:MOV AX,BX,機器碼:8B 04,操作:以BX的內容作為有效地址EA,在數(shù)據(jù)段中找到對應的字單元,再將該字單元的內容送AX中。,EA=BX (位移量為0),.,26,設DS=2000H,BX=1000H,本例執(zhí)行后 AX=50A0H,DS=2000H,這種尋址方式的優(yōu)點就在于可以隨時修改BX寄存器的內容,而指向不同的存儲單元。故BX又稱為基址指針寄存器。,.,27,例:MOV AL,DATABP,這里DATA是以符號表示的位移量。,
8、EA=BP+位移量DATA,操作:以EA作為有效地址,在堆棧段中去 尋址字節(jié)單元,再將該字節(jié)單元內容送AL。,.,28,b. 變址尋址方式,以SI,DI寄存器作為間接尋址寄存器,操作數(shù)在數(shù)據(jù)段中。,EA=SI或DI內容+8位或16位位移量,例:ADD AX,SI,EA=SI,操作:以EA作為有效地址,在數(shù)據(jù)段中找到某個操作數(shù),再將該操作數(shù)與AX的內容相加,結果存放在AX中。,.,29,c. 基址變址尋址方式,既有基址寄存器(BX或BP),又有變址寄存器參與(SI或DI)尋址,操作數(shù)在基址寄存器所規(guī)定的段中。,EA=BX或BP+SI或DI+8位或16位位移量,.,30,例:MOV AX,0260
9、H BX SI,EA=BX+SI+0260H,操作數(shù)在數(shù)據(jù)段中,MOV AX,INF BP+DI,EA=BP+DI+位移量INF,操作數(shù)在堆棧段中,* 以上兩種基址+變址的格式都是合法的。,.,31,(3) 串操作指令尋址,這類指令規(guī)定:,源串操作數(shù)在數(shù)據(jù)段,且有效地址EA=SI,目的串操作數(shù)在附加段,且有效地址EA=DI,指令執(zhí)行后,自動修改SI,DI的值,使之指向新的單元。,.,32,8086的段約定,8086在執(zhí)行某種操作時,預先規(guī)定了采用的段寄存器和段,即有基本的段約定。如果要改變默認的段約定,則需要在指令中明 確指出來。,.,33,8086/8088的段約定,.,34,5. I/O端
10、口尋址方式,(1) 直接端口尋址,操作數(shù)在某個8位或16位端口中。,.,35,b. 端口輸出,OUT port, AL,a. 端口輸入,IN AL,port,port=端口地址 (8位,0255),例:IN AL,80H,操作:從端口地址為80H的端口輸入一字節(jié)送AL。,.,36,(2) 間接端口尋址,可以把端口地址送入DX,然后進行端口尋址:,輸入: IN AL,DX 輸出: OUT DX,AL,.,37,注: 若用AX代替AL,則表示16位數(shù)據(jù)的端口。, 端口地址大于255時,必須將端口地址送入DX,即采用間接尋址端口方式。,.,38,6. 轉移類指令的尋址方式,前面所述的各種尋址方式實際
11、上是數(shù)據(jù)尋址方式,關鍵是如何找到操作數(shù)。,轉移類指令尋址方式屬于程序存儲器尋址,關鍵是要找到下一條待執(zhí)行指令的地址。,.,39,尋址方式小結:,固定尋址:操作數(shù)固定在某個寄存器中,寄存器尋址:操作數(shù)在某個寄存器中,立即數(shù)尋址:操作數(shù)就是操作碼后跟的立即數(shù),.,40,(1) 轉移范圍,段內轉移:轉移范圍在同一個段以內,段間轉移:從一個代碼段轉移至另一個代碼段,(2) 轉移條件,無條件轉移,有條件轉移 (轉移范圍僅為128+127),(3) 轉移方式,直接轉移 (轉移目標直接在指令中給出),間接轉移 (轉移目標預先放入某個寄存器或存儲器中),.,41,存儲器尋址,直接尋址,間接尋址,串操作尋址,基
12、址尋址,變址尋址,基址+變址尋址,I/O端口尋址,直接端口尋址,間接端口尋址,轉移類指令尋址,.,42,基址變址尋址,基址變址尋址(Based Index Addressing)中的操作數(shù)的有效地址是一個基址寄存器(如BX、BP)和一個變址寄存器(如SI、DI)的內容之和,兩個寄存器均由指令指出。操作數(shù)的段地址分配和前面所述相同,即使用默認段基址或使用段超越前綴來指定段基址。,.,43,相對基址變址尋址,.,44,課堂練習與思考:,1.請指出下列每條指令源操作數(shù)的尋址方式。,(1) MOV AX, BX (2) MOV CH, 3AH (3) MOV BX, 2000H (4) MOV DX,
13、 BX (5) MOV CX, BP+2 (6) MOV AX, 3BX DI (7) MOV AL, ES:SI (8) MOV BX, DS:BP,;寄存器尋址,操作數(shù)在BX中 ;立即數(shù)尋址,操作數(shù)為3AH ;直接尋址,EA=2000H,數(shù)在數(shù)據(jù)段 ;間接尋址,EA=BX,數(shù)在數(shù)據(jù)段 ;基址尋址,EA=BP+2,數(shù)在堆棧段 ;相對基址變址尋址,EA=BX+DI+3,數(shù)在數(shù)據(jù)段 ;含段超越的變址尋址,EA=SI,數(shù)在附加段 ;含段超越的基址尋址,EA=BP,數(shù)在數(shù)據(jù)段,.,45,課堂練習與思考:,2. MOV AX,BX+SI+0080H,即將BX與SI中的內容與0080H相加作有效地址。
14、3.設BX=0123H DI=1000H DS=3200H,默認DS作為操作數(shù)對應的段寄存器(假定沒使用段前綴),試指出下列指令的尋址方式,并寫出其操作數(shù)的有效地址和物理地址。 (1)MOV AX,1A38H (2)MOV AX,BX (3)MOV AX,BX+1A38H (4)MOV AX,BX+DI (5)MOV AX,BX+DI+1A38H,.,46,課堂練習與思考:,解: (1)直接尋址 有效地址=1A38H, 物理地址=32000H+1A38H=33A38H (2)寄存器間接尋址 有效地址=0123H, 物理地址=32000H+0123H=32123H (3)寄存器相對基址尋址 有效
15、地址=0123H+1A38H=1B5BH, 物理地址=32000H+1B5B=33B5BH (4) 基址變址尋址 有效地址=0123H+1000H=1123H, 物理地址=32000H+1123H=33123H (5)相對基址變址尋址 有效地址=0123H+1000H+1A38H=2B5BH, 物理地址=32000H+2B5BH=34B5BH,.,47,4.3 8086指令系統(tǒng),8086指令按功能分為六大類。,.,48,mem 存儲器操作數(shù) port 輸入輸出端口,可用 數(shù)字或表達式表示 opr 表示操作數(shù) 存儲單元的內容 ac 累加器操作數(shù)(AX或AL) reg 寄存器 src 源操作數(shù) s
16、egreg 段寄存器 dist 目的操作數(shù) count 移位次數(shù),可以是 1或CL data 立即數(shù) S_ins 串操作指令 disp 8位或16位位移量,本節(jié)中要用到的一些符號所表示的含義:,.,49,一、數(shù)據(jù)傳送指令,數(shù)據(jù)傳送指令能夠完成下列操作數(shù)的傳送任務。,立即數(shù),存儲器,段寄存器CS,DS,ES,SS,通用寄存器組AX,BX,CX,DXBP,SP,SI,DI,(CS不能作目的),.,50,1. 通用數(shù)據(jù)傳送指令,(1) MOV d, s,功能:將源操作數(shù)s復制到目標操作數(shù)d,源保持不變,目標被源代替。,.,51,注: d, s不能同時為存儲器,錯誤指令:MOV BX,SI , d不能
17、為立即數(shù),錯誤指令:MOV 1234H,AX , d, s必須同時為字節(jié)型或字型,錯誤指令:MOV AX,BL ,.,52,指令后的分號“;”以后為注釋部分,對指令的執(zhí)行沒有任何影響,主要是便于閱讀或解釋指令的功能。,.,53,例:MOV AX,0 ; AX0,AX清0,執(zhí)行后,AX=0,MOV SI,BP ; SIBP,BP內容送SI,執(zhí)行后,SI=BP,BP不變,.,54,MOV AL,BUFFERS ;BUFFERS內存單元內容送入AL,這里,BUFFERS代表符號地址,從該地址單元中取出內容送AL寄存器。,相當于直接尋址方式。,.,55,MOV AX,DATA SI+BX,EA=SI+
18、BX+DATA,在數(shù)據(jù)段中尋找字單元,取出該字單元的內容送入AX。,.,56,設DS=3000H,SI=200H,BX=1000H,DATA的偏移量為100H,則,EA=SI+BX+DATA=200H+1000H+100H=1300H,物理地址=DS16+EA=30000H+1300H=31300H,即從31300H和31301H兩單元中取出內容送AX。,.,57,MOV AX,DATA SI+BX,.,58,(2) PUSH s;SP2 SP, 源操作數(shù)壓入堆棧保存,POP d;SP所指堆棧的內容送目 標, SP+2 SP,.,59,例:PUSH BX;把BX內容壓入堆棧,設 SS=2000
19、H,SP=0040H,BX=2340H,則執(zhí)行后,2340H被保存到堆棧,同時SP=003EH,BX內容不變,.,60,注:s和d只能為16位寄存器或存儲器,.,61,(3) XCHG d, s ;交換源和目標操作數(shù),注:d=通用寄存器,s=通用寄存器或存儲器,例:XCHG AX,SI+400H,.,62,(4) XLAT ;查表轉換,注:a. 表首相對于段起始地址的偏移量預先送入BX中;,b. 待查找的表內某單元相對于表首的偏移量送入AL中;,c. 以EA=BX+AL在表中(數(shù)據(jù)段)查找,將查得的數(shù)據(jù)再送回AL中。,.,63,例:設表首的偏移地址為2000H,要查找表內第4號單元 (從0號算
20、起)的內容并送回AL,則程序段如下:,MOV BX,2000HMOV AL,04HXLAT,設表中內容如下頁圖所示, 則執(zhí)行后,AL=09H,.,64,09,.,65,2. 目標地址傳送指令,對于任一個存儲器操作數(shù),由段地址和偏移地址確定了它們在存儲器中的位置。目標地址傳送指令就用于獲得存儲器操作數(shù)的段地址或偏移地址。,.,66,(1) LEA d, s,例:LEA BX,COUNTER; 取COUNTER地址偏移量BX,.,67,(2) LDS d, s,功能:裝入地址指針,段地址DS,偏移地址d,這條指令往往改變了段寄存器DS的內容,使得DS指向了另外一個數(shù)據(jù)段。,.,68,例:LDS S
21、I,BASE,設執(zhí)行前,DS=1000H,SI=0000H,BASE偏移地址為0004H,10004H10007H單元內容依次為00H,30H,00H,20H,則,執(zhí)行后,DS=2000H,SI=3000H,.,69,00,30,00,20,0004H,SI=3000H,原DS所指向的數(shù)據(jù)段,新DS所指向的數(shù)據(jù)段,1000H1610000HDS,BASE,30,00,2000,SI,DS,2000H1620000HDS,.,70,(3) LES d, s,功能:裝入地址指針,段地址 ES,偏移地址d,.,71,3. 標志位傳送指令,(1) LAHF,功能:將標志寄存器低8位裝入AH寄存器,.,
22、72,(2) SAHF,功能:把AH的內容送入標志寄存器的低8位。,.,73,(2) SAHF,功能:把AH的內容送入標志寄存器的低8位。,.,74,(4) POPF,功能:將當前SP所指內容(2字節(jié))彈出至標志寄存器,同時SP+2SP。,.,75,4. I/O數(shù)據(jù)傳送指令,功能:從指定端口輸入數(shù)據(jù)至累加器acc (AL或AX) ,port=0255,(1) IN acc, port,.,76,(2) IN acc, DX,功能:從DX指示的端口輸入數(shù)據(jù)至累加器acc , DX=065535,.,77,(3) OUT port, acc,功能:將累加器的數(shù)據(jù)輸出至指定端口。,.,78,(4)
23、OUT DX,acc,功能:將累加器的數(shù)據(jù)輸出到DX所指示的端口。,注: 16位端口地址必須送入DX中。, 若采用AX,則表示16位數(shù)據(jù)傳送(輸入/輸出),.,79,(4) 換碼指令XLAT,功能:該指令通過AL和BX寄存器進行表格查找,將8位數(shù)裝入AL中。它完成的操作為:AL BX+AL,XLAT指令常用于查表操作,即BX寄存器含有表格的起始地址,而AL中的值是作進入表格中的偏移量,查出表格中的內容送入AL中。,.,80,二、算術運算指令,算術運算指令的操作數(shù)可以是無符號數(shù),也可以是有符號數(shù)。,算術運算指令一般影響標志位,而數(shù)據(jù)傳送指令一般不影響標志位。,.,81,1. 加法指令,(1) A
24、DD d, s,功能:將s與d相加,結果在d中。根據(jù)操作結果設置標志位。,.,82,例:ADD BX+106BH,1234H,設DS=2000H,BX=1200H,EA=1200H+106BH=226BH,物理地址:2000H16+226BH=2226BH,又設原來(2226BH)=90H,(2226CH)=30H,則指令執(zhí)行后:3090H+1234H=42C4H,即(2226BH)=C4H,(2226CH)=42H,.,83,又 42C4H=0100,0010,1100,0100B,.,84,(2) ADC d, s,功能:將s與d再與進位CF相加,結果留在d中,ADC指令主要用于多字節(jié)相加
25、。,注:若是立即數(shù),且最高位為數(shù)碼AF,則必須在前面添加一個0,以避免混淆。,.,85,(3) INC d,功能:將d加1后送回d。,注:INC指令不影響進位標志CF。,該指令經常用于修改地址指針寄存器 (BX, BP, SI, DI),使之指向下一個單元。,.,86,2. 減法指令,(1) SUB d, s,功能:dsd,同時影響標志位。,(2) SBB d, s,功能:dsCFd,同時影響標志位。,.,87,(3) DEC d,功能:d1d,該指令與INC相反操作,也不影響進位標志CF。,.,88,(4) NEG d,功能:對d進行求補運算后送回 (按位求反再加1)。,例:MOV AL,7
26、FH,NEG AL,結果:AL=7F按位求反+1=80H+1=81H,.,89,(5) 比較指令 CMP d, s,功能:作一次減法運算ds,但不回送結果,只根據(jù)結果設置標志位。,比較指令往往用于判斷兩數(shù)是否相等,或兩數(shù)大小關系。若相等,則零標志ZF=1。,.,90,3. 乘法指令,乘法指令在指令中只出現(xiàn)一個操作數(shù)s (乘數(shù)),另一個操作數(shù)固定在累加器(AX或AL)中。,.,91,(1) MUL s,功能:無符號數(shù)乘法指令,a. 8位乘法,被乘數(shù)=AL,乘數(shù)=s,積(16位)=AH:AL中,即在AX中,AH為高8位,AL為低8位。,.,92,b. 16位乘法,被乘數(shù)=AX,乘數(shù)=s,積(32位
27、)=DX:AX,DX為高16位,AX為低16位。,.,93,例:MUL BX,若執(zhí)行前 AX=0012H,BX=0066H,則執(zhí)行后 DX=0000H,AX=072CH,.,94,(2) IMUL s,功能:有符號數(shù)乘法指令,8086規(guī)定,有符號數(shù)一般采用補碼表示。故有符號數(shù)作乘法運算時,必須先把它們轉變?yōu)樵a數(shù)相乘,積也為原碼數(shù),再將原碼數(shù)轉變?yōu)檠a碼數(shù)。這個工作由CPU自動完成。,.,95,例:MOV AL,88H; 88H為 120的補碼,MOV BL,2,IMUL BL,結果:AX=FF10H ;FF10H為240的補碼,若直接用MUL BL指令,則AX=0110H,.,96,4. 除法
28、指令,(1) DIV s,功能:無符號數(shù)相除,a. 字節(jié)除,被除數(shù)=AX,除數(shù)=s (s0),結果:商=AL,余數(shù)=AH,.,97,b. 字除,被除數(shù)=DX:AX,除數(shù)= s (s0),結果:商=AX,余數(shù)=DX,.,98,注:如果除數(shù)太小,使得商超出了一個字節(jié)或字所能表示的范圍,則會產生“被0除”錯誤。,例:MOV AX,800HMOV BL,2DIV BL,結果錯誤,“被0除”,.,99,(2) IDIV s,功能:帶符號數(shù)除法,采用的固定寄存器與DIV相同。,.,100,(3) CBW和CWD,CBW:字節(jié)除法的符號擴展指令,功能:若AL為正數(shù)(D7=0) 則 AH=00H,AL為負數(shù)(
29、D7=1) 則 AH=FFH,.,101,CWD:字除法的符號擴展指令,功能:若AX為正數(shù)(D15=0) 則 DX=0000H,AX為負數(shù)(D15=1) 則 DX=FFFFH,CBW和CWD一般用于帶符號數(shù)除法指令之前。,.,102,5. 十進制調整指令,運算器按二進制規(guī)律進行運算,如果參與運算的是BCD碼數(shù),則需要對結果進行調整。,.,103,(1) AAA,功能:對未組合型BCD碼加法的結果進行校正(調整)。,校正(調整)方法:,若AL中低4位數(shù)值 9 或 AF = 1,則:,a. AL+6 AL,且 AL 高4位清0,b. AH+1 AH,否則不作調整。,.,104,(2) DAA,功能
30、:對組合型BCD碼加法的結果進行校正(調整)。,DAA同時對AL中低4位和高4位進行調整。,.,105,.,106,.,107,.,108,(3) AAS,功能:對未組合型BCD的減法結果進行調整。,功能:對組合型BCD的減法結果進行調整。,(4) DAS,.,109,最后結果 AL = 00110110B(代表36),CF=0,.,110,(5) AAM,功能:對未組合型BCD的乘法結果進行調整。,.,111,.,112,AH,AL中表示未組合型BCD碼72。,.,113,(6) AAD,功能:對未組合型BCD碼(在AX中)進行除法前的校正。,.,114,調整后, AH = 00000000
31、,AAD相當于將兩個未組合型BCD碼數(shù)合并為一個二進制數(shù)。,.,115,三、邏輯運算和移位循環(huán)指令,邏輯指令在底層軟件中提供了對二進制位的控制。可以對位進行置位、清0或取反。常用于控制系統(tǒng)的I/O設備。,.,116,1. 邏輯運算指令,(1) AND d, s,功能:s 和 d 按位相 “與”,結果在 d 中。,AND指令通常用于使某些位清0,而另一些位保持不變。,.,117,例:AND BX, 0F0FH,若BX=5555H,則執(zhí)行后 BX=0505H,.,118,(2) OR d, s,功能:s 和 d 按位相 “或”,結果送 d 。,OR 操作經常用于將某些位置位,其它位不變。,.,11
32、9,(3) XOR d, s,功能:s 和 d 按位相 “異或”,結果送 d 。,XOR 操作經常用于將某些位取反,其它位不變。,.,120,(4) NOT d,功能:將 d 按位求反后送回。,.,121,(5) TEST d, s,功能:s 和 d 按位相 “與”,但不送結果,只根據(jù)結果設置標志位。,TEST 指令通常用于測試某些位是為0還是為1。,.,122,2. 移位指令和循環(huán)移位指令,(1) 算術移位,a. 算術左移,.,123,左移 1 次: SAL d, 1,左移多次: SAL d, CL (CL中為移位次數(shù)),例:MOV BL, 10001001B,SAL BL, 1,結果: C
33、F = 1,BL = 00010010B,注:移位多次時,移位次數(shù)必須預先置入CL中。,.,124,右移 1 次: SAR d, 1,右移多次: SAR d, CL,b. 算術右移,.,125,(2) 邏輯移位,a. 邏輯左移 SHL與SAL等價。,.,126,(3) 循環(huán)左移,不帶進位循環(huán)左移 ROL d, 1ROL d, CL,.,127,b. 帶進位循環(huán)左移 RCL d, 1RCL d, CL,.,128,(4) 循環(huán)右移,a. 不帶進位循環(huán)右移 ROR d, 1ROR d, CL,.,129,b. 帶進位循環(huán)右移 RCR d, 1RCR d, CL,.,130,例:設32位數(shù)在DX:A
34、X中,實現(xiàn)32位數(shù)整個左移1次。,SALAX,1,RCLDX,1,.,131,四、串操作指令,1. 串的概念,串是連續(xù)存放在內存中的字節(jié)塊或字塊。每個串有一個起始地址和長度。,.,132,2. 方向標志,方向標志DF選擇串操作期間寄存器 DI ,SI 的自增(DF=0)或自減(DF=1)操作。,.,133,3. 串所在的段,規(guī)定:(1) 源串在數(shù)據(jù)段,用SI作地址指針,(2) 目的串在附加段,用DI作地址指針,如果源串與目的串實質上在一個段中,則要令ES = DS。,.,134,4. 串操作指令,(1) MOVS d,s,或寫成 MOVSB (字節(jié)串傳送) MOVSW (字串傳送),.,135
35、,重復前綴 (REP)可以加到串數(shù)據(jù)傳送指令上。REP前綴使得每次執(zhí)行串指令后CX減1。CX減1以后,重復執(zhí)行串指令,直到CX值為0時,指令才終止。,.,136, REP 無條件重復直至CX1CX = 0, REPE/REPZ 當ZF = 1且CX1CX0 則重復, REPNE/REPNZ 當ZF = 0且CX1CX0 則重復,.,137,(2) 串比較 CMPS d, s,CMPSB (字節(jié)串比較),CMPSW (字串比較),功能:作一次減法:DS:SI ES:DI 但不送結果,同時自動修改SI,DI 串比較指令常常與有條件重復前綴配合。,.,138,(3) 串搜索 SCAS d,SCASB
36、 (字節(jié)串搜索),SCASW (字串搜索),功能:做一次減法 AL ES:DI (字節(jié)) AX ES:DI (字) 同時自動修改DI,但不回送結果,只 根據(jù)結果置有關標志位 串搜索指令也常與有條件重復前綴相配合。,.,139,(4) 裝載串 LODS s,LODSB (字節(jié)串),LODSW (字串),功能:DS:SI AL或AX 同時自動修改SI,.,140,(5) 存儲串 STOS d,STOSB (字節(jié)串),STOSW (字串),功能:AL或AX ES:DI 同時自動修改DI,.,141,例1. 設源串在1000H:2000H開始的100個字節(jié)單元中,要求將源串送到3000H:1020H開
37、始的目的串中。,MOV AX,1000H MOV DS,AX;置源數(shù)據(jù)段寄存器 MOV SI,2000H;置源串指針初值 MOV AX,3000H MOVES,AX;置目的附加段寄存器 MOVDI,1020H;置目的串指針初值 CLD;DF = 0,使SI,DI自增 MOVCX,64H;置重復次數(shù)100D REP MOVSB;重復串傳送,直到CX = 0,初始化,.,142,例2. 比較兩個串,發(fā)現(xiàn)有不同的字符時則停止比較。,CLD MOV CX,100 MOV SI,2500H MOVDI,1400H REPE CMPSB;串比較,直到ZF = 0或CX=0才停止。,結果:若ZF=0,則兩個
38、串不相等; 若ZF=1,則兩個串相等。,.,143,五、程序控制指令,程序控制指令用來控制程序的走向,其實質是設法改變當前的CS和IP值,以使CPU轉移到一個新的地址處執(zhí)行程序。,.,144,A:Above 高于, B:Below 低于, C:Carry 進位, E:Equal 等于, G:Greater 大于, L:Less 小于, N:Not 無, O:Over 溢出 , S:Sign 符號, PE:Parity Even 奇偶性偶, PO:Parity Odd 奇偶性奇,8086提供了四種控制轉移指令:無條件轉移指令,條件轉移指令,循環(huán)控制指令和中斷指令。除中斷指令外,其它轉移類指令都不
39、影響狀態(tài)標志。 注意指令中條件縮寫字母的含意分別是:,.,145,1. 無條件轉移指令,(1) JMP 目標 a. 段內直接轉移 格式 JMP 目標標號 特點:僅僅改變IP值,而CS值不變。,例:JMP ADDI 這里ADDI為轉移目標的標號。,.,146,指令中的位移量=標號偏移地址-當前IP值,操作碼,轉移指令JMP有三種編碼格式,.,147,例:設標號偏移地址=1000H,執(zhí)行完JMP指令后的當前IP值為0009H,則,位移量=1000H0009H = 0FF7H,編碼格式 E9 F7 0F (代表JMP 1000H),.,148,b. 段內間接轉移,格式: JMP BX,以BX的內容作
40、為轉移目標的偏移地址。,CS值不變,IP值改變。,.,149,c. 段間直接轉移,格式:JMP FAR_ADDR,功能:轉移到另一個代碼段的目標FAR_ADDR處執(zhí)行。即以另一個段的基地址CS,標號的偏移地址IP。,.,150,當前CS=2100H,JMP 0C 02 00 65,轉移目標的偏移地址,轉移目標的段地址,16 21000H,代碼段1,16 65000H,新CS=6500H,代碼段2,轉移至此,當前IP =1500H,新IP = 020CH,.,151,d. 段間間接轉移,格式:JMP BX+位移量,功能:以有效地址EA = BX +位移量作為開始地址,從前2個單元中取出內容IP,
41、后2個單元中取出內容CS,以轉移到新的地址執(zhí)行程序。,.,152,例:JMP BX+ADDR3 設DS=2000H,BX=1400H,ADDR3=020AH,則執(zhí)行過程如下:,2000H,3000,4000,IP,CS,00 30 00 40,EA=1400H+020AH,執(zhí)行跳轉指令后,轉移至4000H:3000H處執(zhí)行程序。,數(shù)據(jù)段,.,153,(2) CALL 目標 (過程名),CALL指令完成調用子程序的功能。,CALL指令完成的操作:, 將程序的返回地址(CALL的下一條指令地址)壓入堆棧中保存。, 將目標的偏移地址IP。若為遠調用則再將目標的段地址CS。, 轉移至新的目標 (子程序),.,154,如果是近調用,則堆棧中只保存返回地址的偏移地址;若是遠調用,則還必須保存返回地址的段地址。,.,155,在子程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文物局安全培訓會課件
- 吉林省長春市綠園區(qū)2025-2026學年九年級上學期1月期末歷史試卷(含答案)
- 食品活動策劃創(chuàng)意方案(3篇)
- 遼寧省營口市多校2025-2026學年高三上學期期中考試政治試卷(解析版)
- 湖南省多校聯(lián)考2025-2026學年高一上學期10月月考政治試題(解析版)
- 2026年國家電網(wǎng)招聘之公共與行業(yè)知識考試題庫500道帶答案(輕巧奪冠)
- 2025年法律職業(yè)資格之法律職業(yè)客觀題二考試題庫500道及參考答案【b卷】
- 2026年一級注冊建筑師之建筑設計考試題庫500道附答案【黃金題型】
- 2026年二級建造師之二建礦業(yè)工程實務考試題庫300道含答案(基礎題)
- 2026年演出經紀人之演出市場政策與法律法規(guī)考試題庫200道附答案(能力提升)
- 企業(yè)社會責任實踐與品牌建設策略
- 現(xiàn)代攝影工作室辦公設計方案
- 庫房婚慶道具管理辦法
- 智能制造職業(yè)技能培訓教學計劃
- 機電安裝工程師中級職稱論文范文
- 應急裝備與技術課件
- 小學“十五五”發(fā)展規(guī)劃
- 溫嶺市恩力天金屬表面處理有限公司年處理10萬噸磷化金屬表面技改項目環(huán)評報告
- 2025年主管護師考試真題試題及答案
- 心理咨詢與治療 習題及答案 雷秀雅 第1-15章
- 《建筑與市政工程施工現(xiàn)場臨時用電安全技術標準JGJT46-2024》知識培訓
評論
0/150
提交評論