版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
*1微機原理與接口技術(shù)自動化學(xué)院王俊宏課程網(wǎng)站::///auto/wjjk/公共Email:zdhwjyl@126密碼:wjyl1234其次試驗大樓南506電話十一講*2§3-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】無條件轉(zhuǎn)移和過程調(diào)用指令JMPCALLRET無條件轉(zhuǎn)移過程調(diào)用過程返回條件轉(zhuǎn)移JZ/JE(10條指令)JA/JNBE
(8條指令)直接標志轉(zhuǎn)移間接標志轉(zhuǎn)移條件循環(huán)控制LOOPLOOPE/LOOPZLOOPNE/LOOPNZJCXZCX≠0則循環(huán)CX≠0和ZF=1則循環(huán)CX≠0和ZF=0則循環(huán)CX=0則轉(zhuǎn)移中斷INTINTOIRET中斷溢出中斷中斷返回 MOVAL,MEMSCMPAL,0MOVAL,0FFHJLDONE;小于,轉(zhuǎn)DONEMOVAL,01HJGDONE;大于,轉(zhuǎn)DONEMOVAL,0DONE:MOVMEMD,AL數(shù)據(jù)段中偏移地址為MEMD的存儲單元的內(nèi)容為:
。
MEMSDB08HMEMDDB? MOVAL,MEMSCMPAL,0MOVAL,0FFHJLDONE;小于,轉(zhuǎn)DONEMOVAL,01HJGDONE;大于,轉(zhuǎn)DONEMOVAL,0DONE:MOVMEMD,AL數(shù)據(jù)段中偏移地址為MEMD的存儲單元的內(nèi)容為:
01H
。
MEMSDB08HMEMDDB?*§3-3算術(shù)運算指令
【8086的指令系統(tǒng)】 LEA SI,BLOCK MOV CX,COUNT MOV BL,[SI] MOV BH,BL DEC SIAGAIN:INC SI CMP BL,[SI] JLE GOTO MOV BL,[SI]GOTO:CMP BH,[SI] JGE NEXT MOV BH,[SI]NEXT: LOOP AGAIN執(zhí)行程序段后,寄存器BH的內(nèi)容為
、BL的內(nèi)容為
。BLOCK DB 01H,80H,0F6H,7FH,39H DB 25H,95H,0A2H,65H,48H COUNT EUQ $-BLOCK LEA SI,BLOCK MOV CX,COUNT MOV BL,[SI] MOV BH,BL DEC SIAGAIN:INC SI CMP BL,[SI] JLE GOTO MOV BL,[SI]GOTO:CMP BH,[SI] JGE NEXT MOV BH,[SI]NEXT: LOOP AGAIN執(zhí)行程序段后,寄存器BH的內(nèi)容為
7FH
、BL的內(nèi)容為
80H
。BLOCK DB 01H,80H,0F6H,7FH,39H DB 25H,95H,0A2H,65H,48H COUNT EUQ $-BLOCK**53.循環(huán)限制指令(IterationControl)特點:是一組增加型的條件轉(zhuǎn)移指令,限制程序段的重復(fù)執(zhí)行,重復(fù)次數(shù)存于CX寄存器中。指令的字節(jié)數(shù)均為2,第一字節(jié)是操作碼,其次字節(jié)是8位偏移量,轉(zhuǎn)移的目標都是短標號。循環(huán)指令中的偏移量都是負值。循環(huán)限制指令均不影響任何標記。這類指令共有4條。§3-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*6
(1)LOOP循環(huán)指令(Loop)指令格式:LOOP短標號指令功能:限制重復(fù)執(zhí)行一系列指令,重復(fù)次數(shù)放在CX寄存器中,每執(zhí)行一次LOOP指令,CX自動減1。假如減1后CX≠0,則轉(zhuǎn)移到指令中所給定的標號處接著循環(huán);若自動減1后CX=0,則結(jié)束循環(huán)。一條LOOP指令相當于執(zhí)行以下兩條指令的功能:DECCXJNZ標號§3-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*7
【例】設(shè)商店里有8種商品,價格分別為83元,76元,65元,84元,7l元,49元,62元和58元,現(xiàn)要將每種商品提價7元,編程計算每種商品提價后的價格。OLD DB 83H,76H,65H,84H DB 71H,49H,62H,58HNEW DB 8DUP(?) … MOV CX,08H ;共8種商品 MOV BX,00H ;BX作指針,初值為0NEXT: MOV AL,OLD[BX] ;讀入一個商品的原價 ADD AL,7 ;加上提價因子 DAA ;調(diào)整為十進制 MOV NEW[BX],AL ;存放結(jié)果 INC BX ;地址指針加1 LOOP NEXT ;如未加滿8次,接著循環(huán) … ;已加完8次§3-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*8【例】這是一個用循環(huán)和跳轉(zhuǎn)指令來限制PC機的揚聲器發(fā)聲的程序。在PC機中,61H端口的D1和D0位接到揚聲器接口電路上,在D0=0的狀況下:當D1=1時,揚聲器被接通,D1=0則斷開,通過限制這一位的值,就能產(chǎn)生一個由1和0構(gòu)成的二進制序列,使揚聲器發(fā)聲。 IN AL,61H ;AL←從61H端口讀取數(shù)據(jù) AND AL,0FCH ;疼惜D7~D2位,D0位清零MORE:XOR AL,02 ;觸發(fā)D1位,使之在0和1間變更 OUT 61H,AL ;限制揚聲器開關(guān)通斷 MOV CX,260 ;CX=循環(huán)次數(shù)DELAY:LOOP DELAY ;循環(huán)延時 JMP MORE ;再次觸發(fā)延時程序的實現(xiàn):
MOV CX,10 ;循環(huán)次數(shù)為10DELAY: LOOP DELAY ;本指令重復(fù)執(zhí)行10次§3-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*9⑵LOOPE/LOOPZ相等或結(jié)果為零時循環(huán)(LoopIfEqual/Zero)
指令格式:LOOPE標號或LOOPZ標號指令功能:LOOPE是相等時循環(huán);LOOPZ是結(jié)果為零時循環(huán);指令執(zhí)行前,先將重復(fù)次數(shù)送到CX中,每執(zhí)行一次指令,CX自動減1,若減1后CX≠0和ZF=1,則轉(zhuǎn)到指令所指定的標號處重復(fù)執(zhí)行;若CX=0或ZF=0,便退出循環(huán)。
§3-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*10【例】設(shè)有一個由50個字節(jié)組成的數(shù)組存放在ARRAY起先的內(nèi)存單元中,現(xiàn)要對該數(shù)組中的元素進行測試,若元素為0,而且不是最終一個元素,便接著進行下一個元素的測試,直到找到第一個非0元素或查完了為止。ARRAY: DB ××,××,… ;含50個元素的數(shù)據(jù) … MOV BX,OFFSETARRAY ;BX指向數(shù)組起先單元 DEC BX ;指針減1 MOV CX,50 ;CX=元素個數(shù)NEXT: INC BX ;指向數(shù)組的下 個元素 CMP [BX],00H ;數(shù)組元素與0比較 LOOPENEXT ;若元素為0 ;和CX≠0,循環(huán) … ;否則,接著查找§3-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*11⑶LOOPNE/LOOPNZ不相等或結(jié)果不為零循環(huán)(LoopIfNotEqual/NotZero)指令格式:LOOPNE標號 或LOOPNZ標號指令功能:LOOPNE是不相等時循環(huán);LOOPNZ是結(jié)果不為零循環(huán)。指令執(zhí)行前,應(yīng)將重復(fù)次數(shù)送入CX,每執(zhí)行一次,CX自動減1,若減1后CX≠0和ZF=0,則轉(zhuǎn)移到標號所指定的地方重復(fù)執(zhí)行;若CX=0或ZF=1,則退出循環(huán),依次執(zhí)行下一條指令?!?-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*12【例】設(shè)一個由17個字符組成的字符串存放在STRING起先的內(nèi)存中,查找該字符串中是否包含空格符。若沒有找到和尚未查完,則接著查找,直到找到第一個空格符或查完了才退出循環(huán)。下面是實現(xiàn)上述操作的程序:STRING: DB ‘PersonalComputer’ ;字符串 … MOV BX,OFFSETSTRING ;BX指向字符串的起先 DEC BX ;BX-1 MOV CX,17 ;CX=字符串長度NEXT:INC BX ;指向下一個字符串 CMP [BX],20H ;字符串元素與空格比較 LOOPNE NEXT ;找到空格或CX已為0 §3-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*13⑷JCXZ若CX為0跳轉(zhuǎn)(JumpIfCXZero)指令格式:JCXZ標號指令功能:若CX寄存器為零,則轉(zhuǎn)移到指令中標號所指定的地址處,它不對CX寄存器進行自動減1的操作。主要用在循環(huán)程序起先處,為跳過循環(huán),把CX寄存器清零?!?-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*14⑴中斷概念▲定義:計算機短暫中止當前程序的運行,執(zhí)行中斷服務(wù)程序去為臨時發(fā)生的事務(wù)服務(wù),執(zhí)行完畢后,返回正常程序接著運行,這個過程稱為中斷。外部中斷內(nèi)部中斷:(引起中斷的原因)
中斷源引腳NMI引入(馬上響應(yīng))(處理如系統(tǒng)掉電等重大故障)引腳INTR引入IF=1(允許響應(yīng))IF=0(不允許響應(yīng))意外情況如除法運算出錯、溢出錯誤等;調(diào)試;中斷指令I(lǐng)NTn;4.中斷指令(Iterrupt)§3-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*15⑵中斷指令
①軟件中斷指令(Interrupt):INTn也稱陷阱中斷。n為中斷類型號,范圍0~255。CPU執(zhí)行INTn指令的過程:標記寄存器的內(nèi)容入棧;當前斷點的段基地址CS、偏移地址IP入棧;清除中斷標記IF、單步標記TF;將中斷類型號n乘以4,找到中斷服務(wù)程序的入口地址表的表頭地址,獲得中斷服務(wù)程序的入口地址,置入CS和IP寄存器轉(zhuǎn)到相應(yīng)中斷服務(wù)程序。②溢出中斷指令(InterruptOnoverflow):INTO帶符號數(shù)進行算術(shù)運算時,若OF=1,則溢出中斷指令I(lǐng)NTO產(chǎn)生類型為4的中斷??稍趲Х柤訙p法運算之后支配一條INTO指令?!?-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*16
③中斷返回指令(InterruptReturn):IRET實現(xiàn)中斷返回。支配在中斷服務(wù)程序的出口處。執(zhí)行后:首先從堆棧中依次彈出程序斷點,送到IP和CS寄存器中;接著彈出標記寄存器的內(nèi)容,送回標記寄存器;CPU按CS:IP的值返回斷點,接著執(zhí)行原來被中斷的程序?!?-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*171.標記操作指令(CF、DF、IF位操作)六、處理器限制指令指令指令助記符操作指令名稱CLCCMCSTCCLDSTDCLISTICF←0CF←/CFCF←1DF←0DF←1IF←0IF←1進位標志清0(ClearCrray)進位標志求反(ComplementCarry)進位標志置1(SetCarry)方向標志清0(ClearDirection)方向標志置1(SetDirection)中斷標志清0(ClearInterrupt)中斷標志置1(SetInterrupt)§3-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*182.外部同步指令*
使CPU與其它協(xié)處理器同步工作的指令,用于多處理機;指令執(zhí)行后均不影響標記位。共3條。⑴ESC換碼指令(Escape)指令格式:ESC外部操作碼,源操作數(shù)指令功能:換碼指令用來實現(xiàn)8086對8087協(xié)處理器的限制。⑵WAIT等待指令(Wait)通常用在CPU執(zhí)行ESC指令后,表示8086CPU正處于等待狀態(tài),它不斷檢測8086的測試引腳TEST,每隔5個時鐘周期檢測一次,若此腳為高電平,則重復(fù)執(zhí)行WAIT指令,處理器處于等待狀態(tài)。一旦TEST引腳的信號變?yōu)榈碗娖?,便退出等待狀態(tài),執(zhí)行下條指令。⑶LOCK封鎖總線指令(LockBus)是一種前綴,加在指令的前端,用來維持8086的總線封鎖信號LOCK有效,帶有LOCK前綴的指令在執(zhí)行過程中,禁止其它協(xié)處理器運用總線?!?-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*193.停機指令和空操作指令⑴HLT停機指令(Halt)CPU進入暫停狀態(tài),不進行任何操作。下列狀況發(fā)生時,CPU才脫離暫停狀態(tài):在RESET線上加復(fù)位信號;在NMI引腳上出現(xiàn)中斷懇求信號;在允許中斷的狀況下,在INTR引腳上出現(xiàn)中斷懇求信號;⑵NOP空操作或無操作指令(NoOperation)單字節(jié)指令,執(zhí)行時需耗費3個時鐘周期的時間,但不完成任何操作。常在循環(huán)等操作中增加延時,或在調(diào)試程序時運用空操作指令?!?-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*20表中的EA項表示,該指令執(zhí)行時還要考慮計算有效地址所須要的時間。七、指令的執(zhí)行時間和軟件延時8086指令的執(zhí)行速率是由晶振限制產(chǎn)生的時鐘確定的,每條指令執(zhí)行時都須要幾個時鐘周期。已知8086CPU的工作時鐘為5MHZ,則1個時鐘周期為0.2us。一些指令執(zhí)行時須要的時鐘數(shù)和時間值指令時鐘周期數(shù)執(zhí)行時間MOV寄存器,寄存器CALL段內(nèi)直接調(diào)用CALL段間間接調(diào)用21937+EA0.2μs×2=0.4μs0.2μs×19=3.8μs0.2μs×(37+EA)μs§3-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*21計算EA所須要的時間尋址方式時鐘周期數(shù)直接尋址寄存器間接尋址寄存器相對尋址基址變址尋址相對基址變址尋址6597~811~12在程序中須要確定的延時或進行定時時,可以選用適當?shù)闹噶?如NOP等)和循環(huán)限制指令構(gòu)成延時程序。這種方法常被稱為軟件延時或定時。§3-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*22例設(shè)CPU的時鐘頻率為5MHZ,試編寫一個延時1ms的程序。解:程序如下: ;時鐘周期×執(zhí)行次數(shù)DEL_1MS: MOV CX,N ;4×1NEXT: NOP ;3×N NOP ;3×N LOOP NEXT ;循環(huán)時為17,不循環(huán)為5延時常數(shù)N的計算:CPU的時鐘頻率為5MHZ,則一個時鐘周期為:0.2us。延時t=1ms所須要的總的時鐘周期數(shù)CT為:CT=1ms/0.2us=5000總的時鐘周期數(shù)CT又可以用循環(huán)常數(shù)N來表示:∵CT=4+3N+3N+17(N-1)+5=23N-8=5000∴N=(5000+8)/23=218=0DAH,可實現(xiàn)1ms的精確延時。(注:第一條指令只執(zhí)行一次;兩條NOP指令各執(zhí)行N次;最終的LOOP指令,共循環(huán)執(zhí)行N一1次,最終一次不循環(huán))§3-3限制轉(zhuǎn)移指令【8086的指令系統(tǒng)】*23§4宏匯編語言程序設(shè)計一、匯編語言程序格式二、MASM中的表達式三、偽指令語句四、DOS系統(tǒng)功能調(diào)用和BIOS中斷調(diào)用內(nèi)容提要*24▲匯編語言(AssemblyLanguage)指令的助記符+符號地址+標號是機器語言的符號表示,是較低級的語言?!闯绦蚶脜R編語言編寫的程序,稱源程序。不能被機器識別?!闯绦虻倪\行匯編程序翻譯成二進制的浮動目標程序連接程序?qū)⒛繕宋募c庫文件相連,形成可執(zhí)行程序可執(zhí)行的程序在機器上干脆運行▲高級語言:可讀性好,編程簡潔;匯編語言:實時性能好,程序效率高,節(jié)約內(nèi)存,運行速度快,概述§4宏匯編語言程序設(shè)計*25例在屏幕上顯示并打印字符串“Thisisasampleprogram”。一個完整的用匯編語言編寫程序的格式:
DATA SEGMENT
;數(shù)據(jù)段
DA1 DB ‘Thisisasampleprogram.’ DB 0DH,0AH,‘$’DATA ENDSSTACK SEGMENT ;堆棧段
ST1 DB 100DUB(?)STACK ENDSCODE SEGMENT
;代碼段MAIN PROC FAR ASSUMECS:CODE,DS:DATA,SS:STACK ORG 1000 START: PUSH DS ;正常返回所需段地址及偏移地址
MOV AX,0 PUSH AX §4宏匯編語言程序設(shè)計*26 MOV AX,DATA ;送數(shù)據(jù)段段地址
MOV DS,AX MOV AX,STACK ;送堆棧段地址
MOV SS,AX
MOV AH,9 ;DOS9號功能調(diào)用,顯示字符串
MOV DX,OFFSETDA1 INT 21H RETMAIN ENDPCODE ENDS END START§4宏匯編語言程序設(shè)計*27
宏匯編運用的語句分兩類指令性語句偽指令語句§4-1匯編語言程序格式
【宏匯編語言程序設(shè)計】*28指令性語句:機器指令相對應(yīng),可譯成目標代碼(機器指令代碼)。語句格式:標號:指令助記符操作數(shù),操作數(shù) ;注釋標號:指令語句的符號地址,后面必需緊跟冒號“:”。標號可運用的字符為字母(A~Z,a~z)、數(shù)字(o~9)或某些特殊字符(@、一、?)等。第一個字符必需為字母或某些特殊字符,最大有效字符長度為31個字符(匯編程序僅識別前面31個字符)。標號可以省略,它常常作為表示轉(zhuǎn)移的地址。指令助記符:指令名稱的代表符號,指出指令的操作類型??勺g成機器碼;不行省略,是關(guān)鍵字。一、指令性語句§4-1匯編語言程序格式
【宏匯編語言程序設(shè)計】*29§4-1匯編語言程序格式【指令性語句】
操作數(shù):參與指令運算的數(shù)據(jù)??梢杂幸粋€、多個操作數(shù)或無操作數(shù);多個操作數(shù)之間用逗號“,”隔開,操作數(shù)與指令助記符之間用“空格”隔開。操作數(shù)可以是常數(shù)、變量、標號、寄存器名或表達式。注釋:說明指令或程序的功能,可省略。注釋前加分號“;”。*30偽指令語句:無對應(yīng)的機器指令,匯編時對偽指令進行處理,可完成數(shù)據(jù)定義、存儲區(qū)支配、段定義、段支配、指示程序結(jié)束等功能。語句的格式:名字偽指令指示符操作數(shù),操作數(shù);注釋名字:用符號地址表示,名字后不允許帶冒號“:”,但可以省略。通常是變量名、段名、過程名、符號名等。偽指令指示符:匯編程序MASM規(guī)定的符號。常用的有變量定義語句(DB、DW),符號定義語句(EQU、=),段定義語句(SEGMENT…END),段支配語句(ASSUME),過程定義語句(PROC…ENDP)等。操作數(shù):不同偽指令有不同要求。操作數(shù)可以是常數(shù)、變量、字
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 天津2025年天津市津南區(qū)衛(wèi)生健康系統(tǒng)招聘65人筆試歷年參考題庫附帶答案詳解
- 天津2025年天津商務(wù)職業(yè)學(xué)院專任教師及專職輔導(dǎo)員崗位招聘4人筆試歷年參考題庫附帶答案詳解
- 四川2025下半年四川省人力資源和社會保障廳所屬事業(yè)單位選調(diào)5人筆試歷年參考題庫附帶答案詳解
- 哈爾濱2025年中國(黑龍江)自由貿(mào)易試驗區(qū)哈爾濱片區(qū)招聘筆試歷年參考題庫附帶答案詳解
- 廈門2025年福建廈門市集美區(qū)杏?xùn)|中學(xué)非在編教師(產(chǎn)假頂崗)招聘4人筆試歷年參考題庫附帶答案詳解
- 南充2025下半年四川南充市順慶區(qū)招聘事業(yè)單位工作人員28人筆試歷年參考題庫附帶答案詳解
- 2025年人力資源招聘專員職業(yè)水平測試試題及答案
- 樂山2025年四川樂山五通橋區(qū)鄉(xiāng)鎮(zhèn)事業(yè)單位從“三支一扶”人員中招聘2人筆試歷年參考題庫附帶答案詳解
- 安全員A證考試綜合練習(xí)含完整答案詳解【歷年真題】
- 2025年化工安全員技能大賽試題及答案
- 高三一模考后家長會課件
- 2022依愛消防E1-8402型消防控制室圖形顯示裝置安裝使用說明書
- 職業(yè)培訓(xùn)機構(gòu)五年發(fā)展策略
- 《小盒子大舞臺》參考課件
- 任捷臨床研究(基礎(chǔ)篇)
- 供應(yīng)鏈危機應(yīng)對預(yù)案
- DBJ41-T 263-2022 城市房屋建筑和市政基礎(chǔ)設(shè)施工程及道路揚塵污染防治差異化評價標準 河南省工程建設(shè)標準(住建廳版)
- 砌筑工技能競賽理論考試題庫(含答案)
- 水工鋼結(jié)構(gòu)平面鋼閘門設(shè)計計算書
- JJG 291-2018溶解氧測定儀
- 《抗體偶聯(lián)藥物》課件
評論
0/150
提交評論