歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

安徽大學(xué)匯編語言程序設(shè)計.ppt

  • 資源ID:12788696       資源大?。?span id="6c0e501" class="font-tahoma">934.56KB        全文頁數(shù):469頁
  • 資源格式: PPT        下載積分:19.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要19.9積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

安徽大學(xué)匯編語言程序設(shè)計.ppt

匯編語言程序設(shè)計,引言,課程介紹課程的任務(wù)、目的和基本要求主要教學(xué)內(nèi)容和學(xué)時教學(xué)要求主要參考書作業(yè)、實驗和考試,課程介紹,專業(yè)基礎(chǔ)課軟件開發(fā)的一個組成部分一種低級語言的程序設(shè)計,課程的任務(wù)、目的和基本要求,了解微型計算機的基本結(jié)構(gòu)了解和掌握微型計算機的基本工作原理掌握匯編語言及其應(yīng)用能獨立完成簡單的匯編語言程序設(shè)計認(rèn)真完成作業(yè)和上機任務(wù),主要教學(xué)內(nèi)容和學(xué)時,主要內(nèi)容1-8章學(xué)時:上課54學(xué)時上機36學(xué)時,教學(xué)要求,課堂上注意聽講、重要的是理解部分補充內(nèi)容需要記筆記課堂外一定要看書復(fù)習(xí)或預(yù)習(xí)、完成作業(yè)充分利用上機時間、多編程練習(xí),主要參考書,80X86匯編語言程序設(shè)計教程,楊季文等著,清華大學(xué)出版社。匯編語言程序設(shè)計,錢曉捷著,電子工業(yè)出版社。IBMPC匯編語言程序設(shè)計,沈美明著,清華大學(xué)出版。,作業(yè)、實驗和考試,考勤:15%作業(yè)(15%):1次/12周考試(70%):閉卷考試實驗(單獨考試):9次,第一章匯編語言基礎(chǔ)知識,1.1匯編語言簡介1.2計算機中數(shù)據(jù)的表示1.3計算機組織,1.1匯編語言簡介,1.1.1什么是匯編語言1.1.2為什么要學(xué)習(xí)匯編語言,1.1.1什么是匯編語言,機器指令:cpu能直接識別并遵照執(zhí)行的指令,用二進(jìn)制編碼表示,由操作碼,操作數(shù)組成,編碼只含二進(jìn)制0或1。機器語言:用二進(jìn)制編碼組成的機器指令的集合和一組使用機器指令的規(guī)則。匯編語言:對機器指令中的操作碼用英文單詞的縮寫描述(助記符),對操作數(shù)用標(biāo)號、變量、常量描述。,用匯編語言編寫的程序稱為匯編源程序。匯編語言是一種符號語言,比機器語言容易理解和掌握,也容易調(diào)試和維護。但是,匯編語言源程序要翻譯成機器語言程序才可以由計算機執(zhí)行。這個翻譯的過程稱為“匯編”,這種把匯編源程序翻譯成目標(biāo)程序的語言加工程序稱為匯編程序。,1.1.2為什么要學(xué)習(xí)匯編語言,匯編語言程序是用符號指令寫成的,本質(zhì)上是機器語言。與具體機器的機型的硬件密切相關(guān),可以直接有效地控制計算機硬件,程序運行速度快,程序短小精悍,占用內(nèi)存少,在某些特殊應(yīng)用場合更能發(fā)揮作用。如:智能化儀表家用電器實時控制系統(tǒng)單片機控制病毒研究等。使用匯編語言能從根本上認(rèn)識和理解計算機的工作過程,它可直接而精確地控制計算機硬件的操作。學(xué)習(xí)匯編語言對從事計算機的研究和開發(fā)有著重要的意義。所以,它作為一門計算機專業(yè)基礎(chǔ)課,并對計算機專業(yè)今后課程的學(xué)習(xí)是非常重要的。,1.1.3匯編語言的特點,與機器有關(guān):移植性差,但可直接控制硬件。程序效率高。編寫匯編語言源程序比編寫高級語言源程序煩瑣。調(diào)試?yán)щy。,1.2計算機中數(shù)據(jù)的表示,1.2.1不同進(jìn)位計數(shù)制及其相互轉(zhuǎn)換1.2.2二進(jìn)制數(shù)和十六進(jìn)制數(shù)的運算1.2.3帶符號數(shù)的表示1.2.4補碼的加法和減法1.2.5無符號數(shù)的表示1.2.6字符的表示1.2.7基本邏輯運算,1.2.1不同進(jìn)位計數(shù)制及其相互轉(zhuǎn)換,1.進(jìn)位計數(shù)制對于任意一個進(jìn)位計數(shù)制,如果用R表示基數(shù),那么任何一個數(shù)S均可用如下多項式表示:S=knRn+kn-1Rn-1+k0R0+k-1R-1+k-2R-2+k-mR-m,十進(jìn)制數(shù):123.6(D)=1102+2101+3100+610(-1)各位權(quán)值10k二進(jìn)制數(shù):101101(B)=125+123+122+120=45(D)各位權(quán)值2k十六進(jìn)制數(shù):5F(H)=5161+15160(D)各位權(quán)值16k,在書寫不同進(jìn)位計數(shù)制數(shù)時,常常在尾部用一個字母來表示該數(shù)是什么進(jìn)位計數(shù)制的數(shù)。結(jié)尾用B(2進(jìn)制數(shù))、O(8進(jìn)制數(shù))、D(10進(jìn)制數(shù))、H(16進(jìn)制數(shù))。缺省為十進(jìn)制數(shù)。例如712O、9198D、10010B、BE49H等等。,2.各種數(shù)制間的相互轉(zhuǎn)換例如:13.8125D=1101.1101B=D.DH,二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)方法:各位二進(jìn)制數(shù)碼乘以對應(yīng)的權(quán)之和例:1.1十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)方法:各位十六進(jìn)制數(shù)碼乘以對應(yīng)的權(quán)之和例:1.2,十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)(1)降冪法:先寫出小于此數(shù)的各位二進(jìn)制權(quán)值,然后再求和。(適用于數(shù)值不大的數(shù))例:1.3(2)除法:不斷除以2,計下余數(shù),直到商為0為止。(僅適用于整數(shù)部分)例:1.4,對于十進(jìn)制數(shù)的小數(shù)部分除了可以使用降冪法也可采用乘法,即不斷乘2,并計下整數(shù),而小數(shù)部分再乘2,直到結(jié)果為0為止。并非所有的十進(jìn)制小數(shù)都能用二進(jìn)制完全表示,可按需要取一定精度即可。例:1.5,十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)(1)降冪法:先寫出小于此數(shù)的各位十六進(jìn)制權(quán)值,然后再求和。(適用于數(shù)值不大的數(shù))例:1.6(2)除法:不斷除以16,計下余數(shù),直到商為0為止。(僅適用于整數(shù)部分)例:1.7,對于十進(jìn)制數(shù)的小數(shù)部分除了可以使用降冪法也可采用乘法,即不斷乘16,并計下整數(shù),而小數(shù)部分再乘16,直到結(jié)果為0為止。并非所有的十進(jìn)制小數(shù)都能用十六進(jìn)制完全表示,可按需要取一定精度即可。,二進(jìn)制數(shù)和十六進(jìn)制數(shù)的相互轉(zhuǎn)換直接轉(zhuǎn)換,每四位一組,整數(shù)從低位開始,小數(shù)從高位開始,不足位補0。例:1.8,1.2.2二進(jìn)制數(shù)和十六進(jìn)制數(shù)運算,二進(jìn)制運算加法規(guī)則:0+0=01+0=10+1=11+1=0(進(jìn)位1)乘法規(guī)則:00=010=001=011=1十六進(jìn)制數(shù)運算原則:逢十六進(jìn)一例1.9,1.10,1.11,1.2.3帶符號數(shù)的表示,帶符號數(shù)最高位是符號位。正數(shù)的符號位為0,負(fù)數(shù)的符號位為1。表示方法:原碼、補碼、反碼。,數(shù)的補碼表示定義:(X>=0時)X補=符號+|X|-(1)(X<0時)X補=2n-|X|=(2n-1-|X|)+1-(2)即X<0時:X補+|X|=2n數(shù)的補碼具體操作是:正數(shù)不變,負(fù)數(shù)則用絕對值取反+1,例1.12X補求補等于-X補等于|X|(X實踐性很強,結(jié)合上機是最好的學(xué)習(xí)方法。,2.1匯編語言程序?qū)嵗?2.1.1實例12.1.2實例2,例2.1單個字符的鍵盤輸入與顯示輸出程序,codesegmentassumecs:codestart:movah,1int21hmovdl,aladddl,1movah,2int21hmovah,4chint21hcodeendsendstart運行結(jié)果:鍵入A接著顯示B,鍵入K接著顯示L,例2.2編寫顯示“HELLO,WORLD!”程序。,datasegmentStringdbHELLO,WORLD!$dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovdx,offsetstringmovah,9int21hmovah,4chint21hcodeendsendstart,2.2工作環(huán)境及上機操作,2.2.1匯編語言的系統(tǒng)工作文件2.2.2進(jìn)入DOS命令行方式2.2.3編輯建立ASM源程序文件2.2.4匯編產(chǎn)生OBJ二進(jìn)制目標(biāo)文件2.2.5連接產(chǎn)生EXE可執(zhí)行文件2.2.6程序的運行和調(diào)試,2.2.1匯編語言的系統(tǒng)工作文件,使用編輯程序編輯源程序文件(.asm)使用匯編程序(MASM)將源程序文件(.asm)匯編成目標(biāo)文件(.obj)使用連接程序(LINK),將目標(biāo)文件(.obj)連接成可執(zhí)行文件(.EXE)使用調(diào)式程序(DEBUG),調(diào)式可執(zhí)行文件,運行匯編語言程序需要以下文件,編輯程序EDIT.COM匯編程序MASM.EXE連接程序LINK.EXE調(diào)試程序DEBUG.EXE,注意幾點,本書使用MicrosoftMasm6.0版本。EDIT.COM和DEBUG.EXE為系統(tǒng)自帶。MASM.EXE和LINK.EXE不是系統(tǒng)自帶。為方便操作,系統(tǒng)文件和用戶文件盡可能放在同一文件目錄下。,2.2.2進(jìn)入DOS命令行方式,程序-附件-命令提示符運行-CMD退出用EXIT,2.2.3編輯建立ASM源程序文件,利用EDIT編輯源文件:CEDITCEDIT文件名.ASM例如文件名為Hello.ASM在EDIT程序中,將我們編寫的匯編程序輸入到計算機中,并將Hello.ASM保存為源程序。然后退出EDIT程序,回到DOS狀態(tài)。,2.2.4匯編產(chǎn)生OBJ二進(jìn)制目標(biāo)文件,源程序建立后,就要用匯編程序?qū)υ闯绦騾R編,匯編后產(chǎn)生二進(jìn)制的目標(biāo)文件(OBJ文件),其操作與匯編程序回答如下:CMASMHello.ASMMicrosoft(R)MacroAssmblerVersion5.0Copyright(C)MicrosoftCorp1981-1985,1987,AllrightsreservedObjectfilenameHello.OBJ:SourcelistingNUL.LST:Cross-referenceNUL.CRF:51646+447778Bytessymbolspacefree0WarningErrors0SevereErrors說明:Hello.OBJ目標(biāo)文件,這是匯編的主要目的Hello.LST列表文件,可有可無Hello.CRF交叉引用表,可有可無0WarningErrors0個警告錯誤0SevereErrors0個嚴(yán)重錯誤,2.2.5連接產(chǎn)生EXE可執(zhí)行文件,匯編程序已產(chǎn)生出二進(jìn)制的目標(biāo)文件(OBJ),但OBJ文件并不是可執(zhí)行文件,還必須用連接程序(LINK)把OBJ文件轉(zhuǎn)換為可執(zhí)行的EXE文件。當(dāng)然,如果一程序由多個模塊組成時,也應(yīng)該通過LINK把它們連接在一起。操作如下:CLINKHello.OBJCLINKHello1+Hello2+Hello3RunfileHello.ASM.EXE:ListFileNUL.MAP:Libraries.LIB:LINK:WarningL4012:nostacksegment一般情況下,用戶只需要按回車使用默認(rèn)值就可以了。兩個輸入文件兩個輸出文件OBJ文件EXE文件LIB文件(庫文件)MAP文件(連接映像文件),2.2.6程序的運行和調(diào)試,建立了EXE文件后,就可以直接在DOS的提示符下,輸入EXE文件的文件名,如:CHello直接運行程序。對EXE文件無需擴展名就可執(zhí)行。真正的可執(zhí)行文件是生成的,不是用改名操作得到的。,調(diào)試程序DEBUG.EXE是WINDOWS系統(tǒng)自帶的。DEBUGHello.EXE“-”DEBUG命令提示符,2.3DEBUG主要命令,格式如下:C:DEBUG或C:DEBUG盤符路徑要調(diào)試的程序DEBUG中的數(shù)據(jù)顯示均為十六進(jìn)制。,1.反匯編命令U,格式1:U地址地址用偏移地址或者段地址:偏移地址表示。該命令從指定的地址開始,把機器語言反匯編為匯編語言。若省去指定地址,則以上一個U命令反匯編的最后一條指令地址的下一個單元作為起始地址。格式2:U范圍范圍用a1a2或者aLb表示。對指定范圍的內(nèi)存單元進(jìn)行反匯編,范圍可以由起始地址、結(jié)束地址或起始地址及長度來確定。,2.顯示內(nèi)存命令D,格式1:D地址從指定的地址開始,顯示內(nèi)存,便于用戶看數(shù)據(jù)。格式2:D范圍顯示指定范圍的內(nèi)存內(nèi)容。,3.運行程序命令G,格式:G=起始地址中止地址起始地址規(guī)定了執(zhí)行的起始地址。中止地址是斷點地址,讓程序暫停在某個位置=不能省掉。若省掉起始地址,則以當(dāng)前CS:IP作為起始地址。默認(rèn)段地址在段寄存器CS中。,4.寄存器顯示和修改命令R,格式1:R顯示所有寄存器內(nèi)容和全部標(biāo)志的狀態(tài)。格式2:R寄存器名顯示和修改寄存器內(nèi)容,若不修改其內(nèi)容,則按CR鍵;若要修改,可輸入修改后的14個16進(jìn)制字符值,再按CR鍵。格式3:RF顯示FLAGS寄存器并接受新值。,5.跟蹤程序命令TQ,格式1:T=起始地址單步執(zhí)行程序,在指令執(zhí)行中逐條進(jìn)行跟蹤,若省去地址,則從CS:IP現(xiàn)行值執(zhí)行。格式2:T=起始地址指令條數(shù)可對多條指令進(jìn)行跟蹤。注意:對于INT指令不能使用T命令跟蹤。,-A匯編命令(輸入程序)格式:A地址-N文件命名命令格式:N文件名-L裝入命令格式:L地址驅(qū)動器扇區(qū)號扇區(qū)數(shù)L地址,-W寫命令格式:W地址驅(qū)動器扇區(qū)號區(qū)段數(shù)W地址-E修改內(nèi)存單元內(nèi)容格式1:E地址內(nèi)容表用給定的內(nèi)容表去代替指定范圍的內(nèi)存單元的內(nèi)容格式2:E地址可連續(xù)逐個修改內(nèi)存單元的內(nèi)容。按CR鍵結(jié)束E命令-H十六進(jìn)制運算命令格式:Hval1val2輸出為val1+val2val1-val2,-M移動命令格式:Mrangeaddress-Q退出命令格式:-Q該命令退出DEBUG程序,并返回到DOS-?查看命令格式格式:-?顯示全部DEBUG命令格式,2.4常用的DOS命令,MD建立目錄E:>MDMASM建立MASM目錄CD顯示或改變當(dāng)前目錄E:>CD顯示當(dāng)前目錄E:>CDMASM進(jìn)入MASM目錄E:MASM>CD.退到上一目錄E:MASM>CD退到根目錄E:,RD刪除目錄E:>RDMASM刪除MASM目錄DIR顯示目錄或文件E:>DIR列出當(dāng)前目錄下的子目錄和文件E:>DIR*.ASM列出所有擴展名為ASM的文件,*為通配符E:>DIRHELLO.*列出所有名為HELLO而擴展名不限的文件E:>DIRHE*.?列出所有名前兩個字符為HE,而擴展名為三個字符的文件,REN改變文件名E:>RENH1.TXTH2.TXTCOPY復(fù)制文件E:>COPYH1.TXTH2.TXTE:>COPYA+BC.TXT,TYPE顯示文本文件的內(nèi)容E:>TYPYH1.TXTCLS清屏SETPATH設(shè)置或顯示可執(zhí)行文件的搜索路徑E:>PATH顯示可執(zhí)行文件的搜索路徑E:>SETPATH顯示可執(zhí)行文件的搜索路徑,HELP顯示命令格式和用法E:>HELP顯示所有命令的格式E:>HELPDIR顯示DIR命令的用法>輸出的重定向E:>DIR>C.TXT把DIR顯示結(jié)果輸出到文件C.TXT,2.5幾個常用的DOS系統(tǒng)功能調(diào)用,21H號中斷是DOS提供給用戶的用于調(diào)用系統(tǒng)功能的中斷,它有近百個功能供用戶選擇使用,主要包括設(shè)備管理、目錄管理和文件管理三個方面的功能。匯編語言程序設(shè)計需要采用系統(tǒng)的各種功能程序。,功能調(diào)用的格式,通常按照如下4個步驟進(jìn)行:在AH寄存器中設(shè)置系統(tǒng)功能調(diào)用號在指定寄存器中設(shè)置入口參數(shù)執(zhí)行指令I(lǐng)NT21H,實現(xiàn)中斷服務(wù)程序的功能調(diào)用根據(jù)出口參數(shù)分析功能調(diào)用執(zhí)行情況,1.鍵盤輸入一個字符并回顯,DOS功能調(diào)用INT21H功能號:AH01H出口參數(shù):AL輸入字符的ASCII碼功能:等待從鍵盤輸入一個字符,該字符的ASCII碼送AL,并送屏幕顯示。調(diào)用此功能時,若無輸入,則會一直等待,直到輸入后才繼續(xù)。,movah,01h;功能號:ah01hint21h;功能調(diào)用cmpal,Y;處理出口參數(shù)aljeyeskey;是“Y”cmpal,Njenokey;是“N”yeskey:.nokey:.,2.顯示一個字符,DOS功能調(diào)用INT21H功能號:AH02H入口參數(shù):DL輸出字符功能:在顯示器當(dāng)前光標(biāo)位置顯示給定的字符,光標(biāo)右移一個字符位置。,在當(dāng)前顯示器光標(biāo)位置顯示一個問號movah,02h;設(shè)置功能號:ah02hmovdl,?;提供入口參數(shù):dl?int21h;DOS功能調(diào)用:顯示問號,3.顯示字符串,DOS功能調(diào)用INT21H功能號:AH09H入口參數(shù):DS:DX欲顯示字符串在主存中的首地址;字符串應(yīng)以$(24H)結(jié)束功能:顯示由DS:DX指定的字符串,stringdbHello,Everybody!$;在數(shù)據(jù)段定義要顯示的字符串.movah,09h;設(shè)置功能號ah09hmovdx,offsetstring;提供入口參數(shù)dx字符串的偏移地址int21h;DOS功能調(diào)用字符串顯示,4.鍵盤輸入到緩沖區(qū),DOS功能調(diào)用INT21H功能號:AH0AH入口參數(shù):DS:DX緩沖區(qū)首地址(DS:DX)緩沖區(qū)字節(jié)數(shù)功能:輸入到緩沖區(qū),緩沖區(qū)的定義,第1字節(jié)事先填入最多欲接收的字符個數(shù)(包括回車字符,可以是1255)第2字節(jié)將存放實際輸入的字符個數(shù)(不包括回車符)第3字節(jié)開始將存放輸入的字符串實際輸入的字符數(shù)多于定義數(shù)時,多出的字符丟掉,且響鈴,bufferdb81;定義緩沖區(qū);第1個字節(jié)填入可能輸入的最大字符數(shù)db?;存放實際輸入的字符數(shù)db81dup(?);存放輸入的字符串.movdx,segbuffer;偽指令seg取得buffer的段地址movds,dx;設(shè)置數(shù)據(jù)段DSmovdx,offsetbuffermovah,0ahint21h,5.寫文件或設(shè)備,DOS功能調(diào)用INT21H功能號:AH40H入口參數(shù):DS:DX數(shù)據(jù)區(qū)首地址BX=文件代號CX=寫入的字節(jié)數(shù)功能:把數(shù)據(jù)區(qū)內(nèi)容輸出到文件或設(shè)備,MOVAH,40H;設(shè)置功能號AH40HLEADX,STR;設(shè)置數(shù)據(jù)區(qū)首地址MOVBX,1;文件代號1表示標(biāo)準(zhǔn)設(shè)備顯示器MOVCX,9;輸出9個字節(jié)INT21H;,6.結(jié)束程序返回DOS,DOS功能調(diào)用INT21H功能號:AH4CH入口參數(shù):AL返回碼功能:結(jié)束程序返回DOSMOVAH,4CHINT21H,第三章指令系統(tǒng)和尋址方式,3.1尋址方式3.2指令系統(tǒng)3.380386后繼機型的新增擴展指令和尋址方式,3.1尋址方式,3.1.1指令結(jié)構(gòu)3.1.2操作數(shù)的尋址方式,計算機中的指令由操作碼和操作數(shù)組成。操作數(shù)字段可以有一個、兩個或三個,通常稱為一地址、二地址或三地址指令。二地址指令中兩個操作數(shù)分別稱為源操作數(shù)和目的操作數(shù)。所謂尋址方式就是指令中尋找操作數(shù)的方式。,3.1.1指令結(jié)構(gòu),80 x86匯編語言指令的一般格式位:標(biāo)號:指令助記符操作數(shù);注釋中的內(nèi)容位可選項。,標(biāo)號:符號地址,表示指令在內(nèi)存中的位置。標(biāo)號后應(yīng)加冒號:。指令助記符:指令名稱,是指令功能的英文縮寫。操作數(shù):指令要操作的數(shù)據(jù)或數(shù)據(jù)所在的地址。寄存器,常量,變量,表達(dá)式。注釋:每行以分號“;”開頭,匯編程序不處理。,3.1.2操作數(shù)的尋址方式,立即尋址方式操作數(shù)就在指令中,緊跟在操作碼之后,操作數(shù)作為指令的一部分存放在代碼段。例MOVAL,5H執(zhí)行完此條指令后(AL)=05HMOVAX,3064H,注意:,執(zhí)行時無需去內(nèi)存取數(shù),因此稱為立即數(shù)。主要用于寄存器賦初值。立即數(shù)只能作為源操作數(shù),并且長度與目的操作數(shù)一致。,寄存器尋址方式操作數(shù)就是寄存器中的值。指令中給出寄存器名。例MOVAL,BLMOVAX,BXMOVAL,BX錯MOVAX,BL錯,注意:,以上兩種尋址方式都與存儲器無關(guān)。以下各種尋址方式的操作數(shù)都在存儲器中。偏移地址也稱為有效地址(EA)。,直接尋址方式操作數(shù)的有效地址EA就在指令中。機器默認(rèn)段地址在DS中。,例3.4例3.5例3.6,寄存器間接尋址方式操作數(shù)的有效地址在寄存器中,只允許使用BX、BP、SI和DI寄存器。物理地址=16dx(DS)+(BX)物理地址=16dx(DS)+(SI)物理地址=16dx(DS)+(DI)物理地址=16dx(SS)+(BP),例3.7,寄存器相對尋址方式操作數(shù)的有效地址是寄存器和位移量之和。位移量可以是8位/16位的常量,也可以是16位的符號地址。只允許使用BX、BP、SI和DI寄存器。默認(rèn)搭配和寄存器間接尋址方式一樣。例3.8,MOVAX,COUNTSIMOVAX,COUNT+SI當(dāng)COUNT為16位位移量的符號地址時:如DS=3000H,SI=2000H,COUNT=4000H;(36000H)=34H,(36001H)=12H物理地址=16dx(段值)+EA=30000H+2000H+4000H=36000H,基址變址尋址方式操作數(shù)的有效地址是一個基址寄存器和一個變址寄存器內(nèi)容之和。物理地址=16dx(DS)+(BX)+(SI)物理地址=16dx(DS)+(BX)+(DI)物理地址=16dx(SS)+(BP)+(SI)物理地址=16dx(SS)+(BP)+(DI),相對基址變址尋址方式操作數(shù)的有效地址是一個基址寄存器和一個變址寄存器以及一個位移量之和?;芳拇嫫鰾X和BP,變址寄存器SI和DI。默認(rèn)段寄存器搭配和寄存器間接尋址方式一樣。例3.10,注意,雙操作數(shù)指令的兩個操作數(shù)中,只能有一個使用存儲器尋址方式。雙操作數(shù)指令的兩個操作數(shù),長度須匹配。操作數(shù)的有效地址前可以加段跨越前綴,但在以下三種情況下不允許:串處理指令的目的串必須用ES段PUSH指令的目的和POP指令的源必須用SS段指令必須存放在CS段,3.2指令系統(tǒng),3.2.1數(shù)據(jù)傳送指令3.2.2類型擴展指令3.2.3算術(shù)運算指令3.2.4邏輯指令3.2.5移位指令3.2.6串操作指令3.2.7程序轉(zhuǎn)移指令3.2.8處理器控制指令,8086指令系統(tǒng)可以分為八組:(1)數(shù)據(jù)傳送指令(2)類型擴展指令(3)算術(shù)運算指令(4)邏輯指令(5)移位指令(6)串操作指令(7)程序轉(zhuǎn)移指令(8)處理機控制指令,3.2.1數(shù)據(jù)傳送指令,通用數(shù)據(jù)傳送指令累加器專用傳送指令地址傳送指令標(biāo)志寄存器傳送,1.通用數(shù)據(jù)傳送指令,MOV傳送PUSH進(jìn)棧POP出棧XCHG交換,(1)MOV傳送指令,格式:MOVDST,SRC操作:(DST)(SRC)DST表示目的操作數(shù),SRC表示源操作數(shù)。功能:將源操作數(shù)傳送到目的操作數(shù)。,雙操作數(shù)指令的規(guī)定,源操作數(shù)與目的操作數(shù)的長度必須一致。源操作數(shù)與目的操作數(shù)不能同時為存儲器。目的操作數(shù)不能為CS和IP,因為CS:IP是程序當(dāng)前地址。,例3.11例3.12例3.13例3.14例3.15例3.16,(2)PUSH進(jìn)棧指令,格式:PUSHSRC操作:(SP)(SP)-2(SP)+1,(SP)(SRC)堆棧:后進(jìn)先出內(nèi)存區(qū),以字為單位傳送,SS:SP總是指向棧頂。例3.17,(3)POP出棧指令,格式:POPDST操作:(DST)(SP)+1,(SP)(SP)(SP)+2例3.18,(4)XCHG交換指令,格式:XCHGOPR1,OPR2操作:(OPR1)(OPR2)功能:把兩個操作數(shù)互換位置。遵循雙操作數(shù)指令的規(guī)定,但操作數(shù)不能為立即數(shù)。例3.19,2.累加器專用傳送指令,IN;從I/O端口輸入OUT;向I/O端口輸出XLAT;換碼其中I/O端口是CPU與外設(shè)傳送數(shù)據(jù)的接口,單獨編址,不屬于內(nèi)存,端口地址范圍0000FFFFH.這組指令只限于AX,AL累加器。,(1)IN輸入指令,長格式:INAL,PORT(字節(jié));00FFHINAX,PORT(字)操作:AL(PORT)AX(PORT)功能:把端口PORT的數(shù)據(jù)輸入到累加器。,短格式:INAL,DX(字節(jié));PORT放入DXINAX,DX(字)操作:AL(DX)AX(DX)功能:把DX指向的端口的數(shù)據(jù)輸入到累加器。,例3.20例3.21,(2)OUT輸出指令,長格式:OUTPORT,AL(字節(jié));00-FFHOUTPORT,AX(字)操作:PORTALPORTAX功能:把累加器的數(shù)據(jù)輸出到端口PORT。,短格式:OUTDX,AL(字節(jié));0000-FFFFHOUTDX,AX(字)操作:(DX)AL(DX)AX功能:把累加器的數(shù)據(jù)輸出到DX指向的端口。例3.22,(3)XLAT換碼指令,格式:XLAT操作:AL(BX+AL)功能:把BX+AL的值作為有效地址,取出其中的一個字節(jié)送AL。例3.23,3.地址傳送指令,LEA有效地址送寄存器LDS指針?biāo)图拇嫫骱虳SLES指針?biāo)图拇嫫骱虴S,(1)LEA有效地址送寄存器指令,格式:LEAREG,SRC操作:REGSRC功能:把源操作數(shù)的有效地址EA送到指定的寄存器。例3.24例3.25,(2)LDS指針?biāo)图拇嫫骱虳S指令,格式:LDSREG,SRC操作:REG(SRC)DS(SRC+2)功能:把源操作數(shù)SRC所指向的內(nèi)存單元中的兩個字送到指定的寄存器REG和DS。例3.26,(3)LES指針?biāo)图拇嫫骱虴S指令,格式:LESREG,SRC操作:REG(SRC)ES(SRC+2)功能:把源操作數(shù)SRC所指向的內(nèi)存單元中的兩個字送到指定的寄存器REG和ES。例如LESDI,10HDS=C000H,(C0010H)=0180H,(C0012H)=2000H結(jié)果DI=0180H,ES=2000H,4.標(biāo)志寄存器傳送指令,LAHF標(biāo)志寄存器FLAGS的低字節(jié)送AHSAHFAH送FLAGS的低字節(jié)PUSHF標(biāo)志進(jìn)棧POPF標(biāo)志出棧以上傳送類指令均不影響標(biāo)志位,除SAHF,POPF外.,3.2.2類型擴展指令,CBW:AL擴展為AXCWD:AX擴展為DX,AX擴展方法為符號擴展。例3.28例3.29,3.2.3算術(shù)運算指令,加法指令減法指令乘法指令除法指令,1.加法指令,ADD加法ADC帶進(jìn)位加法INC加1,(1)ADD加法指令,格式:ADDDST,SRC操作:(DST)(DST)+(SRC)例3.30,溢出判斷,以8位二進(jìn)制數(shù)為例,綜上所述,CF=1為無符號數(shù)的溢出,OF=1為有符號數(shù)的溢出.OF位:若兩個操作數(shù)的符號相同,而結(jié)果的符號與之相反時OF=1,否則OF=0。CF位:有進(jìn)位/借位時CF=1,否則CF=0。,(2)ADC帶進(jìn)位加法指令,格式:ADCDST,SRC操作:(DST)(DST)+(SRC)+CF例3.31,(3)INC加1指令,格式:INCOPR操作:(OPR)(OPR)+1,除INC不影響CF,它們都影響條件標(biāo)志位.條件標(biāo)志位(條件碼)最主要有:進(jìn)位CF,零ZF,符號SF,溢出OF,2.減法指令,SUB減法SBB帶借位減法DEC減1NEG求補CMP比較,(1)SUB減法指令,格式:SUBDST,SRC操作:(DST)(DST)-(SRC),(2)SBB帶借位減法指令,格式:SBBDST,SRC操作:(DST)(DST)-(SRC)-CF,(3)DEC減1指令,格式:DECOPR操作:(OPR)(OPR)-1,(4)NEG求補指令,格式:NEGOPR操作:(OPR)-(OPR)功能:對OPR求補,求-OPR,即反碼+1.只有OPR為0時,CF=0。,(5)CMP比較指令,格式:CMPOPR1,OPR2操作:(OPR1)-(OPR2)不回送結(jié)果,只產(chǎn)生標(biāo)志位。,CF=1為無符號數(shù)溢出,OF=1為有符號數(shù)溢出.例3.32例3.33例3.34例3.35,3.乘法指令,MUL無符號數(shù)乘法IMUL有符號數(shù)乘法,(1)MUL無符號數(shù)乘法指令,格式:MULSRC操作:操作數(shù)為字節(jié)時:(AX)(AL)X(SRC)操作數(shù)為字時:(DX,AX)(AX)X(SRC),(2)IMUL帶符號數(shù)乘法指令,格式:IMULSRC操作:操作數(shù)為字節(jié)時:(AX)(AL)X(SRC)操作數(shù)為字時:(DX,AX)(AX)X(SRC),兩個相乘的數(shù)必須長度相同。SRC不能是立即數(shù)。例3.36,4.除法指令,DIV無符號數(shù)除法IDIV有符號數(shù)除法,(1)DIV無符號數(shù)除法指令,(2)IDIV帶符號數(shù)除法指令,格式:IDIVSRC操作與DIV相同余數(shù)和被除數(shù)同符號。被除數(shù)長度應(yīng)為除數(shù)長度的兩倍。SRC不能是立即數(shù)。例3.37例3.38,算術(shù)運算綜合舉例,例3.39,5.十進(jìn)制調(diào)整指令,前面提到的所有算術(shù)運算指令都是二進(jìn)制數(shù)的運算,為便于十進(jìn)制計算,計算機提供了十進(jìn)制調(diào)整指令,在二進(jìn)制數(shù)計算的基礎(chǔ)上,給予十進(jìn)制調(diào)整,直接得到十進(jìn)制結(jié)果。,BCD碼(BinaryCodedDecimal):用二進(jìn)制編碼表示十進(jìn)制數(shù).四位二進(jìn)制數(shù)表示一位十進(jìn)制數(shù),由于四位二進(jìn)制數(shù)的權(quán)分別為8,4,2,1,所以又稱為8421碼.,壓縮的BCD碼4位二進(jìn)制數(shù)表示一位十進(jìn)制數(shù)。非壓縮的BCD碼8位二進(jìn)制數(shù)表示一位十進(jìn)制數(shù),低4位為8421碼,高4位無意義。,(1)壓縮BCD碼調(diào)整指令,DAA;加法十進(jìn)制調(diào)整指令DAS;減法十進(jìn)制調(diào)整指令,DAA;加法十進(jìn)制調(diào)整指令格式:DAA操作:IFCF=1orAL高4位是AFTHENAL+60H.IFAF=1orAL低4位是AFTHENAL+6,例ADDAL,BL000010019DAA+0000010040000110113+011000010011BCD碼9+4的結(jié)果是(10011)BCD即13,?DAA使AL自動+6IF每位BCD碼值9THEN該位值加6例3.40BCD1=1834,BCD2=2789求:BCD331H,2->32H,3->33H,A->41H4.BX循環(huán)左移4位。,例5.5從鍵盤輸入一個四位的十六進(jìn)制數(shù)(其中字母為大寫),并將其轉(zhuǎn)換為二進(jìn)制數(shù)顯示輸出。算法分析1.輸入為數(shù)字09(ASCII碼3039H),減30H,為大寫字母AF(ASCII碼4146H),減37H,將四次的輸入拼裝成四位十六進(jìn)制數(shù)存放在BX中;2.循環(huán)利用16次移位從左到右顯示BX寄存器中的二進(jìn)制數(shù)。,例5.6從鍵盤接收八個英文字母,根據(jù)邏輯尺設(shè)立的標(biāo)志顯示輸出相鄰字符,標(biāo)志為0顯示其前驅(qū)字符,標(biāo)志為1顯示其后繼字符。算法分析1.循環(huán)次數(shù)已知,但每次循環(huán)所做的操作不同;2.設(shè)置標(biāo)志字,循環(huán)中依據(jù)標(biāo)志字中的標(biāo)志位選擇操作。,5.2.3條件循環(huán)程序,例5.7從鍵盤輸入一個單個字符,顯示該字符的ASCII碼(十六進(jìn)制),回車鍵退出循環(huán),終止程序。算法分析1.從鍵盤輸入一個單個字符,該字符的ASCII碼在AL中,為兩位十六進(jìn)制數(shù);2.把每位十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼,用2號功能輸出,高位為數(shù)字,低位為數(shù)字或AF。3.回車鍵退出循環(huán)。,5.2.4條件計數(shù)循環(huán)程序,例5.8設(shè)置鍵盤緩沖區(qū)為16個字節(jié),從鍵盤輸入一串字符,然后再從鍵盤輸入一個單個字符,查找這個字符是否在字符串中出現(xiàn),如果找到,顯示該字符串,否則顯示NOTFOUND。,5.2.5多重循環(huán)程序,例5.9顯示輸出20H7EH的ASCII碼字符表,每行16個字符。例5.10有一個首地址為A的5個字的數(shù)組,請編程使該數(shù)組中的數(shù)從大到小排序.,冒泡排序算法:KK=N-1DOWHILEKK>0;kkDI共比較遍數(shù)K=KKI=0DOWHILEK>0;KCX每遍比較次數(shù)IFAI=0)。遞歸定義:0!=1N!=N*(N-1)!計算N!的C語言遞歸程序:jc(intn)intc;if(n=0)c=1;elsec=n*jc(n-1);return(c);,第七章高級匯編語言技術(shù),宏匯編語言提供了類似于高級語言的某些復(fù)雜功能,如宏匯編、重復(fù)匯編與條件匯編,提高了使用匯編語言進(jìn)行程序設(shè)計的質(zhì)量和效率。,7.1宏匯編,宏是源程序中一段有獨立功能的程序代碼。它只需要在源程序中定義一次,就可以多次調(diào)用,調(diào)用時只需要用一個宏指令語句就可以了。宏功能既可以實現(xiàn)程序復(fù)用,又能方便的傳遞多個參數(shù)。,子程序優(yōu)點:省存儲空間優(yōu)化程序結(jié)構(gòu)便于調(diào)試和修改子程序缺點:調(diào)用、返回、保存、恢復(fù)需花開銷參數(shù)傳遞復(fù)雜因此,在程序較短,或需要傳送的參數(shù)較多的情況下,用宏匯編更加有利。,7.1.1宏定義、宏調(diào)用和宏展開,宏定義:宏指令名MACRO形參1,形參2,ENDM宏定義體是一組有獨立功能的程序代碼。宏指令名給出宏定義的名稱,調(diào)用時就使用宏指令名來調(diào)用宏定義。第一個符號必須是字符。啞元表給出了宏定義中所用到的形式參數(shù),每個啞元之間用逗號隔開。,宏調(diào)用:宏指令名實參1,實參2,宏指令被定義后,在源程序中就可以直接調(diào)用,稱為宏調(diào)用。一般說來,實參的個數(shù)應(yīng)和形參的個數(shù)相等,但匯編程序并不要求它們必須相等。若實參個數(shù)大于形參個數(shù),則多余的實參不予考慮,若實參個數(shù)小于形參個數(shù),則多余的形參取空值。例:multiply240,BX,SAVE,宏展開:在對源程序的匯編階段,匯編程序?qū)υ闯绦蛑械拿總€宏調(diào)用都進(jìn)行了宏展開,即用宏定義體取代源程序中宏指令名,用實參取代形參。應(yīng)該注意,用實參取代形參后,所得到的語句應(yīng)該是有效的,否則匯編程序?qū)甘境鲥e。,例:1pushdx1pushax1movax,2401imulBX1movSAVE,ax1movSAVE+2,dx1popax1popdx表示這些指令是由宏展開而得到的(早期用+),例7.1用宏指令實現(xiàn)兩個八位有符號數(shù)的乘法。宏定義:imultiplyMACROx,y,resultpushaxmoval,ximulymovresult,axpopaxENDM,宏展開:1pushax1moval,cl1imuldl1movbx,ax1popax1pushax1moval,ary1imulvar1movsave,ax1popax,宏調(diào)用:imultiplycl,dl,bximultiplyary,var,save,例7.2某工廠工人的周工資由計時工資和計件工資組成,計時工資按每小時工資率RATE乘以工作小時數(shù)計算;計件工資按超定額部分乘以SUP計算(超定額=實際完成的工件數(shù)MADE-定額工件數(shù)PART),工資總額放在WAGE中。宏定義如下:wagesmacrorate,hout,made,part,supwage=rate*hout+(made-part)*supendmrate=5part=100sup=4,宏調(diào)用:wagesrate,40,120,part,sup宏展開為:wage=rate*40+(120-part)*sup,從以上兩個例子可以看出,子程序和宏指令具有類似的功能,但又有以下區(qū)別:空間的區(qū)別:宏指令并不節(jié)省目標(biāo)程序的空間,而子程序在目標(biāo)程序中只有一段;時間的區(qū)別:宏指令在運行時不需要其他額外的CPU開銷,而子程序的調(diào)用、返回和保護現(xiàn)場、恢復(fù)現(xiàn)場需要占用時間;參數(shù)的區(qū)別:宏調(diào)用可實現(xiàn)多個參數(shù)的直接代換,方式簡單靈活,而子程序參數(shù)傳遞麻煩。,宏調(diào)用和子程序調(diào)用工作方式的區(qū)別,7.1.2宏定義的嵌套,這種嵌套結(jié)構(gòu)的特點是外層宏定義的宏體中又有宏定義,只有調(diào)用外層宏定義一次后,才能調(diào)用內(nèi)層宏指令。例7.3用嵌套的宏定義實現(xiàn)兩個八位數(shù)的算術(shù)運算。,宏定義:mathMACROmathname,action,nummathnameMACROx,y,resulepushaxmovnum,xactionymovresultaxpopaxENDMENDM,宏調(diào)用:mathimultiply,imul,al宏展開:imultiplyMACROx,y,resultpushaxmoval,ximulymovresult,axpopaxENDM,宏調(diào)用:mathdivide,div,ax宏展開:divideMACROx,y,resultpushaxmovax,xdivymovresult,axpopaxENDM,接下來可使用宏調(diào)用:divideary,var,save則宏展開如下:1pushax1movax,ary1divvar1movsave,ax1popax,7.1.3宏定義中使用宏調(diào)用,宏定義中使用的宏調(diào)用必須已經(jīng)定義。例7.4用嵌套的宏定義實現(xiàn)字符顯示。宏定義:INT21MACROFUNCTNMOVAH,F(xiàn)UNCTNINT21HENDMDISPCMACROCHARMOVDL,CHARINT212ENDM,宏調(diào)用:DISPCA宏展開:1MOVDL,A2MOVAH,22INT21H這里的2表示第二層展開結(jié)果。,7.1.4帶間隔符的實參,在宏調(diào)用中,有時實參使用的是字符串(不是單引號括起來的),而是字符串中包含間隔符(如空格、逗號等),為使間隔符成為實參的一部分,則要用尖括號將字符串括起來作為一個實參的整體來替換形參。例7.5在數(shù)據(jù)段中定義40個字節(jié)的存儲空間。defdbmacrobuf,xbufxendmdatasegmentdefdbarray,dataends宏展開為:1arraydb40dup(?),7.1.5連接操作符否則對進(jìn)行匯編。,條件匯編偽指令有八條:IF表達(dá)式;表達(dá)式不為0,則滿足條件IFE表達(dá)式;表達(dá)式為0,則滿足條件IFDEF符號;符號已定義或被說明為EXTRN,則滿足條件IFNDEF符號;符號未定義或未說明為EXTRN,則滿足條件IFB;變量為空,則滿足條件IFNB;變量不為空,則滿足條件IFIDN,;兩串相等,則滿足條件IFNIDN,;兩串不等,則滿足條件,表達(dá)式可以是用關(guān)系操作符EQ,NE,LT,LE,GT,GE和邏輯運算符AND,OR連接的布爾表達(dá)式。例7.16例7.17例7.18,例7.16用宏指令MAX把三個變元中最大值放在AX中。變元個數(shù)不同產(chǎn)生的程序段也不同。maxmacrok,a,b,clocalnext,out1movax,aif(kge2)and(kle3)ifkeq3cmpc,axjlenextmovax,cendifnext:cmpb,axjleout1movax,bendifout1:endm,宏調(diào)用:max1,xmax2,x,ymax3,x,y,z宏展開:max1,x1movax,x1?0001:max2,x,y1movax,x1?0002:1cmpy,ax1jle?00031movax,y1?0003:,max3,x,y,z1movax,x1cmpz,ax1jle?00041movax,z1?0004:1cmpy,ax1jle?00051movax,y1?0005:,例7.17求K的階乘,結(jié)果放在AX中。宏定義和子程序一樣,也可以遞歸調(diào)用。用條件偽操作可結(jié)束宏遞歸。powmacrokpopaxmovbl,kmulblpushaxk=k-1ifkge1powkendifendm,宏調(diào)用:movax,1pushaxn=4pown,宏展開:1popax1movbl,n1mulbl1pushax1n=n-12popdx2movbl,n2mulbl2pushax2n=n-1,3popax3movbl,n3mulbl3pushax3n=n-14popax4movbl,n4mulbl4pushax4n=n-1,例7.18比較兩個字符串是否相等,若相等則STR=1,否則STR=2。datasegmentstr1dbabcdefghstr2dbamkdefghifidn,str=1elsestr=2endifdataends經(jīng)匯編后產(chǎn)生的LST列表文件可以看出STR=2,據(jù)此可以顯示“不相等”,第八章輸入輸出和中斷,8.1I/O方式,程序直接控制I/O中斷DMA(直接內(nèi)存訪問)匯編使用系統(tǒng)提供的標(biāo)準(zhǔn)I/O程序,用dos系統(tǒng)功能調(diào)用int21h,8.1.1I/O端口,cpu與I/O設(shè)備通信有三種信息:控制,狀態(tài),數(shù)據(jù)(1)控制信息:從cpu輸出到I/O接口,用來控制設(shè)備動作(2)狀態(tài)信息:從I/O輸入到cpu,表示設(shè)備當(dāng)前狀態(tài)(3)數(shù)據(jù)信息:輸入I/Ocpu,輸出cpuI/O,三種寄存器I/O接口部件有三種寄存器:數(shù)據(jù),狀態(tài),控制命令包含在主機cpu中,通過訪問這些寄存器與外部設(shè)備交換數(shù)據(jù),把這些寄存器稱為端口port。,端口編址0000ffffh其中00ffh可直接指定,100hffffh須由dx間接尋址。,8.1.2I/O指令,(1)輸入(2)輸出,8.1.3I/O的數(shù)據(jù)傳送控制方式,無條件傳送外設(shè)的數(shù)據(jù)傳送隨時可以進(jìn)行,而不需要cpu查詢外設(shè)的狀態(tài),用IN/OUT指令實現(xiàn)cpu與指定的外設(shè)寄存器之間的信息傳送。,查詢傳送cpu不斷測試外設(shè)狀態(tài),等待與外設(shè)同步,當(dāng)多個設(shè)備要求傳送時,依次查詢,順序即為優(yōu)先級。,中斷傳送,直接存儲器傳送DMA成批交互,DMA控制器8237A過程見P175。,8.2中斷,8.2.1中斷的概念中斷與中斷源中斷:由于某種事件的發(fā)生,使得cpu停止(中斷)正在執(zhí)行的程序,轉(zhuǎn)而去執(zhí)行處理該事件的程序,結(jié)束后,再繼續(xù)執(zhí)行先前被中斷的程序。中斷源:引起中斷的事件,中斷源的分類:1.內(nèi)部中斷:軟件中斷,不需要外部硬件的支持,不受中斷標(biāo)志IF的限制。(1)中斷指令I(lǐng)NT(2)cpu錯誤(3)為調(diào)試程序而設(shè)置的中斷:斷點,2.外部中斷:來自cpu外部,硬件中斷(1)不可屏蔽中斷源NMI:硬件故障(2)可屏蔽中斷源INTR:允許程序員確定是否處理。,中斷類型號:INTn-是中斷類型號中斷優(yōu)先級和中斷嵌套:從高到低內(nèi)中斷不可屏蔽可屏蔽單步中斷(調(diào)試),8.2.2中斷向量表,中斷向量:中斷程序的入口地址cs:ip中斷向量表:所有中斷處理程序的入口地址表,8.2.3中斷過程,分為四步:請求,響應(yīng),處理,返回1.請求:中斷源滿足一定條件,向cpu發(fā)出請求2.中斷響應(yīng):,8.3中斷處理程序設(shè)計,分為主程序設(shè)計和中斷子程序設(shè)計,總復(fù)習(xí)1-7章,第一章基礎(chǔ)知識,常用的ascii碼表回車:0dh換行:0ah空格:20h09:30h39hAZ:41h5ahaz:61h7ah,Cpu寄存器:1.數(shù)據(jù):ax,bx,cx,dx2.指針:sp,bp3.變址寄存器:si,di4.段寄存器:cs,ds,ss,es5.控制寄存器:ip,flags(of,cf,zf,sf),存儲器1.編址:按字節(jié)編址2.字:高字節(jié)在高地址,低字節(jié)在低地址3.存儲器分段:20位地址物理地址=16d*段地址+偏移地址,外設(shè)接口:一組寄存器-狀態(tài),控制,數(shù)據(jù)編址:端口號大于0ffh,放入dx寄存器,第二章上機操作,工作環(huán)境編輯程序EDIT.EXE匯編程序MASM.EXE連接程序LINK.EXE調(diào)試程序DEBUG.EXE,DEBUG主要命令-u-d-g-t-r,常用dos功能調(diào)用P31,第三章PC機的指令系統(tǒng)和尋址方式,尋址方式1.立即尋址2.寄存器尋址3.直接尋址4.寄存器間接尋址5.寄存器相對尋址6.基址變址尋址7.相對基址變址尋址,指令,第四章偽指令與源程序格式,常用的偽指令1.數(shù)據(jù)定義:db,dw,dd,dq,dt,dup,ptr,label2.equ,=3.段定義:segment.Endsassume,過程定義procendpnear/far程序結(jié)束end$和org,表達(dá)式中常用的操作符1.算術(shù):+,-,/,*,mod2.邏輯:AND,OR,XOR,NOT3.關(guān)系:EQ,NE,LT,GT,LE,GE4.數(shù)據(jù)回送:TYPE,LENGTH,SIZE,OFFSET,SEG,匯編語言的一般格式返回控制臺的方法:pushdsmovah,4chsubax,axint21hpushaxret,第五章循環(huán),分支,跳轉(zhuǎn)指令循環(huán)指令,第六章子程序設(shè)計,格式調(diào)用和遞歸,第七章高級匯編技術(shù),宏定義格式macroendm宏調(diào)用local,%,&,

注意事項

本文(安徽大學(xué)匯編語言程序設(shè)計.ppt)為本站會員(tia****nde)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!