《微機原理與應(yīng)用》PPT課件.ppt_第1頁
《微機原理與應(yīng)用》PPT課件.ppt_第2頁
《微機原理與應(yīng)用》PPT課件.ppt_第3頁
《微機原理與應(yīng)用》PPT課件.ppt_第4頁
《微機原理與應(yīng)用》PPT課件.ppt_第5頁
已閱讀5頁,還剩60頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

子程序調(diào)用指令CALL,CALL指令用在主程序中,實現(xiàn)子程序的調(diào)用 分成段內(nèi)調(diào)用(近調(diào)用)和段間調(diào)用(遠調(diào)用) 目標地址采用相對尋址、直接尋址或間接尋址 入棧返回地址:將CALL下一條指令的地址壓入堆棧 16位段段內(nèi):16位偏移地址,段間:再加16位段地址 32位段段內(nèi):32位偏移地址,段間:再將16位段選擇器零位擴展為32位保存到堆棧,CALL label ;調(diào)用標號指定的子程序 CALL reg16/reg32 ;調(diào)用寄存器指定地址的子程序 CALL mem16/mem32 ;調(diào)用存儲單元指定地址的子程序,子程序返回指令RET,RET指令用在子程序結(jié)束,實現(xiàn)返回主程序 RET ;無參數(shù)返回:出棧返回地址 RET i16 ;有參數(shù)返回:出棧返回地址,ESPESPi16,過程定義,過程定義偽指令獲得子程序信息 過程名 PROC ;過程體 過程名 ENDP ;過程名為符合語法的標識符 PROC后面可加參數(shù):NEAR或FAR,CSEG SEGMENT ASSUME CS:CSEG START: . CALL SUBT . MOV AH,4CH INT 21H SUBT PROC (NEAR) . RET SUBT ENDP CSEG ENDS END START,子程序設(shè)計,利用過程定義,獲得子程序名和調(diào)用屬性 RET指令返回主程序,CALL指令調(diào)用子程序 壓入和彈出操作要成對使用,保持堆棧平衡 開始保護寄存器,返回前相應(yīng)恢復(fù) 安排在代碼段的主程序之外 子程序允許嵌套和遞歸 可共用一個數(shù)據(jù)段,也可具有獨立數(shù)據(jù)段,最好有完整的注釋,難點是參數(shù)傳遞,子程序的參數(shù)傳遞,主程序與子程序間通過參數(shù)傳遞建立聯(lián)系 入口參數(shù)(輸入?yún)?shù)):主程序子程序 出口參數(shù)(輸出參數(shù)):子程序主程序 傳遞參數(shù)的多少反映程序模塊間的耦合程度 參數(shù)的具體內(nèi)容 數(shù)據(jù)本身(傳遞數(shù)值) 數(shù)據(jù)的存儲地址(傳遞地址,傳遞引用) 參數(shù)傳遞方法:寄存器、變量或堆棧,寄存器傳遞參數(shù)(例5-16),最簡單和常用的參數(shù)傳遞方法 把參數(shù)存于約定的寄存器 少量數(shù)據(jù)直接傳遞數(shù)值 大量數(shù)據(jù)只能傳遞地址 帶有出口參數(shù)的寄存器不保護 帶有入口參數(shù)的寄存器可以保護、也可以不保護,但最好能夠保持一致,例題5-16字符串顯示程序-1,;數(shù)據(jù)段 msg db Well, I made it !,0 ;代碼段(主程序) mov si,offset msg ;主程序提供顯示字符串 call dpstri ;調(diào)用子程序 mov ah,4ch int 21h,寄存器 地址參數(shù)傳遞,例題5-16字符串顯示程序-2,;代碼段(子程序) dpstri proc ;子程序:顯示字符串 push ax ;寄存器保護 dps1: mov al,si ;取顯示字符 cmp al,0 ;是結(jié)尾,則顯示結(jié)束 jz dps2 call dpchar ;調(diào)用字符顯示子程序 inc si jmp dps1 dps2: pop ax ;寄存器恢復(fù) ret dpstri endp,寄存器 數(shù)值參數(shù)傳遞,例題5-16字符串顯示程序-3,dpchar proc ;子程序顯示字符 push ax ;順序入棧,保護寄存器 push dx mov ah,2 mov dl,al ;顯示一個字符 int 21h pop dx ;逆序出棧,恢復(fù)寄存器 pop ax ret dpchar endp,共享變量傳遞參數(shù),子程序和主程序使用同一個變量名存取數(shù)據(jù) 變量定義和使用不在同一個源程序中,需要利用PUBLIC、EXTREN聲明 共享變量傳遞參數(shù),子程序的通用性較差 特別適合在多個程序段間、尤其在不同的程序模塊間傳遞數(shù)據(jù),例題5-19有符號十進制數(shù)輸出程序-1,算法如下: 首先判斷數(shù)據(jù)是零、正數(shù)或負數(shù),是零顯示“0”退出; 是負數(shù),顯示“”,求數(shù)據(jù)的絕對值; 接著數(shù)據(jù)除以10,余數(shù)加30H轉(zhuǎn)換為ASCII碼壓入堆棧; 重復(fù)第3步,直到商為0結(jié)束; 依次從堆棧彈出各位數(shù)字,進行顯示,例題5-19有符號十進制數(shù)輸出程序-2,mov ecx,count mov ebx,0 again: mov eax,arrayebx*4 mov dtemp,eax ;入口參數(shù)存放到共享變量 call dispsid ;調(diào)用子程序顯示一個數(shù)據(jù) inc ebx call dpcrlf ;光標回車換行 loop again,例題5-19有符號十進制數(shù)輸出程序-3,dispsid proc ;顯示有符號十進制數(shù)子程序 push eax ;入口參數(shù):共享變量DTEMP push ebx push edx mov eax,dtemp ;取出顯示數(shù)據(jù) test eax,eax ;判斷數(shù)據(jù)是零、正數(shù)或負數(shù) jnz dsid1 mov dl,0 ;是零,顯示“0”后退出 mov ah,2 int 21h jmp dsid5,例題5-19有符號十進制數(shù)輸出程序-4,dsid1: jns dsid2 ;是負數(shù),顯示“-” mov ebx,eax ;EAX數(shù)據(jù)暫存于EBX mov dl,- mov ah,2 int 21h mov eax,ebx neg eax ;數(shù)據(jù)求補(絕對值),例題5-19有符號十進制數(shù)輸出程序-5,dsid2: mov ebx,10 push bx ;10壓入堆棧,作為退出標志 dsid3: cmp eax,0 ;數(shù)據(jù)(商)為零,轉(zhuǎn)向顯示 jz dsid4 sub edx,edx ;擴展被除數(shù)EDX.EAX div ebx ;數(shù)據(jù)除以10:EDX.EAX10 add dl,30h ;余數(shù)(09)轉(zhuǎn)換為ASCII碼 push dx ;數(shù)據(jù)先低位后高位壓入堆棧 jmp dsid3,例題5-19有符號十進制數(shù)輸出程序-6,dsid4: pop dx ;數(shù)據(jù)先高位后低位彈出堆棧 cmp dl,10 ;是結(jié)束標志10,則退出 je dsid5 mov ah,2 ;進行顯示 int 21h jmp dsid4 dsid5: pop edx pop ebx pop eax ret ;子程序返回 dispsid endp,字符串輸入功能,例題5-12輸入字符串大小寫轉(zhuǎn)換程序-1,;數(shù)據(jù)段 keynum = 255 keybuf db keynum ;鍵盤輸入緩沖區(qū) db 0 db keynum dup(0) ;代碼段 mov dx,offset keybuf ;設(shè)置入口參數(shù)DX mov ah,0ah int 21h ;用戶用回車鍵結(jié)束 mov dl,0ah ;回車后再進行換行 mov ah,2 int 21h,輸入“Hi”,回車,緩沖區(qū): FF 02 48 69 0D 00 ,例題5-12輸入字符串大小寫轉(zhuǎn)換程序-2,mov bx,offset keybuf+1 ;輸入字符個數(shù) mov cl,bx mov ch,0 ;作為循環(huán)的次數(shù) again: inc bx ;BX指向輸入字符 mov dl,bx ;取出一個字符 cmp dl,a ;小于小寫字母“a” jb disp cmp dl,z ;大于小寫字母“z” ja disp ;直接去顯示 sub dl,20h ;小寫字母轉(zhuǎn)換為大寫字母 disp: mov ah,2 ;顯示一個字符 int 21h loop again ;循環(huán),計數(shù)控制循環(huán),堆棧傳遞參數(shù),主程序?qū)⑷肟趨?shù)壓入堆棧,子程序從堆棧中取出參數(shù) 子程序?qū)⒊隹趨?shù)壓入堆棧,主程序彈出堆棧取得它們 采用堆棧傳遞參數(shù)是程式化的,它是編譯程序處理參數(shù)傳遞、以及匯編語言與高級語言混合編程時的常規(guī)方法,例題5-20計算有符號數(shù)平均值程序-1,算法如下: 被加數(shù)進行符號擴展 求和 除以數(shù)據(jù)個數(shù)得到平均值 32位有符號數(shù)擴展到64位,32位表示數(shù)據(jù)個數(shù)(最大232 ) ,不會溢出,例題5-20計算有符號數(shù)平均值程序-2,mov eax,count push eax ;壓入數(shù)據(jù)個數(shù)(0表示232個) mov ebx,offset array push ebx ;壓入緩沖區(qū)的偏移地址 call mean ;調(diào)用子程序,求平均值 add esp,8 ;平衡堆棧 mov dmed,eax ;保存出口參數(shù),例題5-20計算有符號數(shù)平均值程序-3,mean proc ;計算有符號數(shù)平均值 push ebp mov ebp,esp push ebx ;保護寄存器 push ecx push edx push esi push edi mov ebx,ebp+6 ;從堆棧取偏移地址 mov ecx,ebp+10 ;從堆棧取數(shù)據(jù)個數(shù),例題5-20計算有符號數(shù)平均值程序-4,xor esi,esi ;ESI保存求和的低32位值 mov edi,esi ;EDI保存求和的高32位值 mean1: mov eax,ebx ;取出一個數(shù)據(jù)EAX cdq ;符號擴展EDX.EAX add esi,eax ;求和低32位 adc edi,edx ;求和高32位 add ebx,4 ;指向下一個數(shù)據(jù) loop mean1 ;循環(huán) mov eax,esi ;累加和在EDX.EAX mov edx,edi,例題5-20計算有符號數(shù)平均值程序-5,mov ecx,ebp+10 ;數(shù)據(jù)個數(shù)在CX idiv ecx ;有符號數(shù)除法,EAX平均值(EDX余數(shù)) pop edi ;恢復(fù)寄存器 pop esi pop edx pop ecx pop ebx pop ebp ret mean endp,第6章 微處理器外部特性,6.1 8086的引腳信號 6.1.1 地址/數(shù)據(jù)信號 6.1.2 讀寫控制信號 6.1.3 其他控制信號 6.2 8086的總線時序 6.2.1 寫總線周期 6.2.2 讀總線周期 6.3 奔騰微處理器引腳和時序 6.3.1 引腳定義 6.3.2 總線周期 6.4 微機系統(tǒng)總線 6.4.1 微機總線技術(shù) 6.4.2 ISA總線 6.4.3 PCI總線,CPU,外設(shè)、存儲器,地址,數(shù)據(jù),控制,運算單元,控制單元,微型計算機系統(tǒng)硬件結(jié)構(gòu),1. 微處理器 2. 存儲器 3. I/O接口和I/O設(shè)備 4. 系統(tǒng)總線,控制總線CB,數(shù)據(jù)總線DB,地址總線AB,微處理器,I/O設(shè)備,I/O接口,存儲器,系統(tǒng)總線BUS,處理器總線,數(shù)據(jù)總線(DB:Data Bus) 處理器與存儲器或外設(shè)交換信息的通道 個數(shù)(條數(shù))是一次能夠傳送數(shù)據(jù)的二進制位數(shù) 地址總線(AB:Address Bus) 指定存儲器或外設(shè)的具體單元 個數(shù)反映訪問的主存儲器容量或外設(shè)范圍 控制總線(CB:Control Bus) 控制處理器數(shù)據(jù)傳送等操作,一個信號兩種狀態(tài)(高或低)兩種編碼(1或0),引腳信號,信號的功能 用英文單詞或英文縮寫表示引腳名稱 信號的流向 微處理器輸出到外部,從外部輸入到微處理器內(nèi)部 有效方式 低電平有效,高電平有效,上升沿或下降沿有效 高電平和低電平都有效 三態(tài)能力 高阻狀態(tài)放棄對引腳的控制 其他設(shè)備控制該引腳,總線信號圖形表示,單一信號 用單線表示,實線高低表示電平高低,虛線表示狀態(tài)任意; 成組信號 用高低雙線表示,兩線交叉表示成組信號改變。雙線變?yōu)橐粭l居中橫線表示輸出高阻狀態(tài)。,總線復(fù)用,同一引腳在不同時刻具有不同功能,最常復(fù)用:地址引腳數(shù)據(jù)引腳 目的:減少引腳個數(shù),8086的數(shù)據(jù)總線和地址總線,AD15AD0(Address/Data) 地址/數(shù)據(jù)分時復(fù)用引腳,共16個引腳 單向輸出地址總線,雙向數(shù)據(jù)總線,三態(tài)輸出,8086的數(shù)據(jù)總線和地址總線,AD15AD0(Address/Data) 地址/數(shù)據(jù)分時復(fù)用引腳,共16個引腳 單向輸出地址總線,雙向數(shù)據(jù)總線,三態(tài)輸出 A19/S6A16/S3(Address/Status) 地址/狀態(tài)分時復(fù)用引腳,4個三態(tài)輸出信號 輸出高4位地址,輸出狀態(tài)信號,8086的數(shù)據(jù)總線和地址總線,AD15AD0(Address/Data) 地址/數(shù)據(jù)分時復(fù)用引腳,共16個引腳 單向輸出地址總線,雙向數(shù)據(jù)總線,三態(tài)輸出 A19/S6A16/S3(Address/Status) 地址/狀態(tài)分時復(fù)用引腳,4個三態(tài)輸出信號 輸出高4位地址,輸出狀態(tài)信號 ALE(Address Latch Enable) 地址鎖存允許,三態(tài)、輸出、高電平有效 有效時,表示復(fù)用引腳正在傳送地址信號,8086的基本讀寫引腳,WR*(Write) 寫控制,三態(tài)、輸出、低電平有效 有效時,表示微處理器正將數(shù)據(jù)寫到存儲單元或I/O端口 RD*(Read) 讀控制,三態(tài)、輸出、低電平有效 有效時,表示微處理器正從存儲單元或I/O端口讀取數(shù)據(jù) M/IO*(Memory/Input and Output) 訪問存儲器或者I/O,三態(tài)、輸出、高低電平均有效 高電平(M),表示微處理器訪問存儲器 低電平時(IO*),表示微處理器訪問I/O端口,基本總線操作,存儲器讀(Memory Read) 微處理器從存儲器讀取代碼或讀取操作數(shù) 每條指令執(zhí)行前都需從主存取指 以存儲單元為源操作數(shù)的指令在執(zhí)行時 存儲器寫(Memory Write) 微處理器向存儲器寫入操作數(shù) 以存儲單元為目的操作數(shù)的指令在執(zhí)行時,CPU,地址,數(shù)據(jù),控制,專用寄存器,通用寄存器,地址就是號碼,CPU,A0A19地址,AD0AD15數(shù)據(jù),ALE,RD/WR,M/IO*,總線時序,總線時序(Timing) 描述總線信號隨時間變化的規(guī)律以及總線信號間的相互關(guān)系 采用時序圖形象化地表現(xiàn)時序 指令周期 一條指令從取指、譯碼到最終執(zhí)行完成的過程 總線周期或機器周期 伴隨有數(shù)據(jù)交換的總線操作 T狀態(tài) 微處理器的基本工作節(jié)拍,對應(yīng)時鐘周期,8086的寫總線周期,完成對存儲器或I/O端口的一次寫操作 T1狀態(tài) 輸出20位存儲器地址A19A0 M/IO*輸出高電平,表示存儲器操作 或者M/IO*輸出低電平,表示I/O操作 ALE輸出正脈沖,表示復(fù)用總線輸出地址 T2狀態(tài) 輸出控制信號WR*和數(shù)據(jù)D15D0 T3狀態(tài) 檢測數(shù)據(jù)傳送是否能夠完成 T4狀態(tài) 完成數(shù)據(jù)傳送,MOV mem, imm/reg,M/IO*為高,8086的讀總線周期,完成對存儲器或I/O端口的一次讀操作 T1狀態(tài) 輸出20位存儲器地址A19A0 M/IO*輸出高電平,表示存儲器操作 或者M/IO*輸出低電平,表示I/O操作 ALE輸出正脈沖,表示復(fù)用總線輸出地址 T2狀態(tài) 輸出控制信號RD*,存儲器或I/O端口發(fā)送數(shù)據(jù) T3狀態(tài)和Tw狀態(tài) 檢測數(shù)據(jù)傳送是否能夠完成 T4狀態(tài) 獲取數(shù)據(jù),完成傳送,MOV reg, mem,M/IO*為高,BHE*/S7(Byte High Enable/Status) 高字節(jié)允許/狀態(tài)分時復(fù)用引腳,三態(tài)輸出信號 輸出低有效表示傳送高字節(jié)數(shù)據(jù),輸出狀態(tài)信號,I/O讀(Input/Output Read) 只有執(zhí)行輸入指令I(lǐng)N時才有 微處理器從外設(shè)讀取操作數(shù) I/O寫(Input/Output Write) 微處理器向外設(shè)寫出操作數(shù) 只有執(zhí)行輸出指令OUT時才有,基本總線操作,OUT DX/i8, AL/AX/EAX,M/IO*為低,IN AL/AX/EAX, DX/i8,M/IO*為低,等待狀態(tài),微處理器運行速度遠遠快于存儲器和I/O端口 控制READY信號為低無效,不進入T4狀態(tài),插入等待狀態(tài)Tw Tw狀態(tài):引腳信號延續(xù)T3時的狀態(tài) 一個Tw狀態(tài)的長度是一個時鐘周期 在Tw的前沿,繼續(xù)對READY進行測試 無效繼續(xù)插入Tw;有效時轉(zhuǎn)入T4狀態(tài),同步操作引腳,同步操作 讀寫操作要保證存儲器或外設(shè)與微處理器速度一致 否則,慢速的I/O或存儲器發(fā)出一個信號 讓快速的微處理器等待 READY 就緒(準備好) 輸入信號,

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論