freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[計算機軟件及應用]第5章匯編語言程序設計(編輯修改稿)

2024-11-12 23:20 本頁面
 

【文章內(nèi)容簡介】 ed. Run File []: List File []: MBA Libraries [.LIB]: 由此可知 , 在連接程序調(diào)入后 , 首先顯示版本號 , 然后出現(xiàn)三個提示行 。 第一個提示行為: Run File []: 這是詢問要產(chǎn)生的可執(zhí)行文件的文件名 。 一般直接回車采用方括號內(nèi)規(guī)定的隱含文件名 。 第二個提示行為: List File []: 這是詢問是否要建立連接映象文件。若不建立,則直接回車;若要建立,則輸入文件名再回車。我們這里是要建立該文件,則輸入文件名 MBA。 第三個提示行為: Libraries [.LIB]: 這是詢問是否用到庫文件 。 若無特殊需要 , 則直接回車即可 。 上述提示行回答后,連接程序開始連接。若連接過程中有錯,則顯示錯誤信息,錯誤分析清楚后,要重新調(diào)入編輯程序進行修改,然后重新匯編,再經(jīng)過連接,直至無錯為止。連接以后,便產(chǎn)生了可執(zhí)行程序文件 (EXE文件 )。 程序的執(zhí)行 當我們建立了可執(zhí)行文件 , 就可直接在 DOS下執(zhí)行該程序: C:\MBA C:\ 程序運行結(jié)束并返回 DOS。這里我們并未看到運行結(jié)果。怎么知道程序運行已經(jīng)結(jié)束?又怎么知道程序已返回 DOS?下面我們來討論這些問題。 匯編語言和 DOS操作系統(tǒng)的接口 當編寫的匯編語言源程序是在 DOS環(huán)境下運行時 , 必須了解匯編語言是如何同 DOS操作系統(tǒng)接口的 。 當我們用編輯程序把源程序輸入到機器中,用匯編程序把它轉(zhuǎn)換為目標程序,用連接程序?qū)ζ溥M行連接和定位時,操作系統(tǒng)為每一個用戶程序建立了一個 程序段前綴區(qū) PSP,其長度為 256個字節(jié),主要用于存放所要執(zhí)行程序的有關信息,同時也提供了程序和操作系統(tǒng)的接口。操作系統(tǒng)在程序段前綴的開始處 (偏移地址 0000H)安排了一條 INT 20H軟中斷指令。 INT 20H中斷服務程序由 DOS提供,執(zhí)行該服務程序后,控制就轉(zhuǎn)移到 DOS,即返回到 DOS管理的狀態(tài)。因此, 用戶在組織程序時,必須使程序執(zhí)行完后能去執(zhí)行存放于 PSP開始處的 INT 20H指令,這樣便返回到 DOS,否則就無法繼續(xù)鍵入命令和程序。 DOS在建立了程序段前綴區(qū) PSP之后 , 就將要執(zhí)行的程序從磁盤裝入內(nèi)存 。 在定位程序時 , DOS將代碼段置于 PSP下方 ,代碼段之后是數(shù)據(jù)段 , 最后放置堆棧段 。 內(nèi)存分配好之后 ,DOS就設置段寄存器 DS和 ES的值 , 以使它們指向 PSP的開始處 , 即 INT 20H的存放地址 , 同時將 CS設置為 PSP后面代碼段的段地址 , IP設置為指向代碼段中第一條要執(zhí)行的指令位置 ,把 SS設置為指向堆棧的段地址 , 讓 SP指向堆棧段的棧底 (取決于堆棧的長度 ), 然后系統(tǒng)開始執(zhí)行用戶程序 。 為了保證用戶程序執(zhí)行完后能返回到 DOS狀態(tài),可使用如下兩種方法。 1. 標準方法 首先將用戶程序的主程序定義成一個 FAR過程 , 其最后一條指令為 RET。 然后在代碼段的主程序 (即 FAR過程 )的開始部分用如下三條指令將 PSP中 INT 20H 指令的段地址及偏移地址壓入堆棧: PUSH DS ;保護 PSP段地址 MOV AX, 0 ;保護偏移地址 0 PUSH AX 這樣,當程序執(zhí)行到主程序的最后一條指令 RET時,由于該過程具有 FAR屬性,故存在堆棧內(nèi)的兩個字就分別彈出到 CS和 IP,從而執(zhí)行 INT 20H指令,使控制返回到 DOS狀態(tài)。返回 DOS的標志就是程序運行完后出現(xiàn)一個 DOS的標識符,如 C> )。 2. 非標準方法 在用戶的程序中不定義過程段 , 只在代碼段結(jié)束之前 (即CODE ENDS之前 )增加兩條語句: MOV AH, 4CH INT 21H 則程序執(zhí)行完后也會自動返回 DOS狀態(tài)。 說明: 由于開始執(zhí)行用戶程序時 , DS并不設置在用戶的數(shù)據(jù)段的起始處 , ES同樣也不設置在用戶的附加段起始處 , 因而在程序開始處 (或在保護了 PSP段地址和偏移地址 0以后 ), 應該使用以下方法重新裝填 DS和 ES的值使其指向用戶的數(shù)據(jù)段: MOV AX, 段名 MOV 段寄存器名, AX ;段寄存器名可以是 DS、 ES、 SS之一 . 常用系統(tǒng)功能調(diào)用和 BIOS中斷調(diào)用 微型計算機系統(tǒng)為匯編用戶提供了兩個程序接口 , 一個是DOS系統(tǒng)功能調(diào)用 , 另一個是 ROM中的 BIOS(Basic Input/Output System)。 系統(tǒng)功能調(diào)用和 BIOS由一系列的服務子程序構(gòu)成 , 但調(diào)用與返回不是使用子程序調(diào)用指令 CALL和返回指令 RET, 而是通過軟中斷指令 INT n 和中斷返回指令 IRET調(diào)用和返回的 。 DOS系統(tǒng)功能調(diào)用和 BIOS的服務子程序,使得程序設計人員不必涉及硬件就可以使用系統(tǒng)的硬件,尤其是 I/O的使用與管理。 1. 系統(tǒng)功能調(diào)用 系統(tǒng)功能調(diào)用是微機的磁盤操作系統(tǒng) DOS為用戶提供的一組例行子程序 , 因而又稱為 DOS系統(tǒng)功能調(diào)用 。 這些子程序可分為以下四個主要方面: (1) 磁盤的讀 /寫及控制管理 。 (2) 內(nèi)存管理 。 (3) 基本輸入 /輸出管理 (如鍵盤 、 打印機 、 顯示器等 )。 (4) 其他管理 (如時間、日期等 )。 為了使用方便 , 系統(tǒng)已將所有子程序按順序編號 , 稱為調(diào)用號 。 其調(diào)用號為 0~ 75H, 如表 。 表中只列出了基本輸入 /輸出管理中部分鍵盤和顯示器 DOS功能調(diào)用 。 對于所有的功能調(diào)用 , 使用時一般需要經(jīng)過以下三個步驟: (1) 子程序的入口參數(shù)送相應的寄存器 。 (2) 子程序編號送 AH。 (3) 發(fā)出中斷請求: INT 21H(系統(tǒng)功能調(diào)用指令 )。 表 鍵盤和顯示器的 DOS調(diào)用 調(diào)用號 功 能 入 口 參 數(shù) 出 口 參 數(shù) 1 鍵入并顯示一個字符 鍵入字符的 ASCII碼在 AL中 2 顯示器顯示一個字符 DL中置輸出字符的 ASCII碼 5 打印機打印一個字符 DL中置輸出字符的 ASCII碼 8 鍵盤輸入一個字符 鍵入字符的 ASCII碼在 AL中 9 顯示器顯示一個字符串 DS: DX置字符串首址,字符串以 39。$39。結(jié)束 10(0AH) 鍵入并顯示字符串 DS: DX置字符串首址,第 1單元置允許鍵入的字符數(shù) (含一個回車符 ) 鍵入的實際字符數(shù)在第 2單元中,鍵入的字符從第 3單元開始存放 11(0BH) 檢測有無鍵入 有鍵入 AL= FFH,無鍵入 AL= 0 例如 , 顯示一個字符串 39。Good morning!39。的程序如下: MSG DB 39。Good morning! $39。 MOV DX, OFFSET MSG ;字符串首字符的偏移地址送 DX MOV AH, 9 ;功能號 9送 AH INT 21H ;系統(tǒng)功能調(diào)用 有的子程序不需要入口參數(shù) , 這時步驟 (1)可以略去 。 例如: MOV AH, 4CH ;功能號 4CH送 AH(返回 DOS子程序 ) INT 21H … 1) 1號功能調(diào)用 調(diào)用格式: MOV AH, 1 INT 21H 系統(tǒng)執(zhí)行該功能時將掃描鍵盤,等待鍵入。一旦有鍵按下,就將鍵值 (相應字符的 ASCII碼值 )讀入,先檢查是否是 Ctrl–Break。若是,則退出命令執(zhí)行;否則將鍵值送入 AL寄存器,同時將這個字符顯示在屏幕上。 2) 2號功能調(diào)用 調(diào)用格式: MOV DL, 待顯示字符的 ASCII碼 MOV AH, 2 INT 21H 本調(diào)用執(zhí)行后,顯示器顯示其 ASCII碼值放入 DL中的字符。 3) 9號功能調(diào)用 調(diào)用格式: MOV DX, 待顯示字符串首字符的偏移地址 MOV AH, 9 INT 21H 本調(diào)用執(zhí)行后,顯示器顯示待顯示的字符串。調(diào)用時,要求DS: DX必須指向內(nèi)存中一個以“ $”作為結(jié)束標志的字符串。例如: DATA SEGMENT BUF DB 39。HOW DO YOU DO? $39。 DATA ENDS CODE SEGMENT MOV AX, DATA MOV DS, AX MOV DX, OFFSET BUF MOV AH, 9 INT 21H CODE ENDS … … … 4) 10號功能調(diào)用 調(diào)用格式: MOV DX, 數(shù)據(jù)區(qū)的首偏移地址 MOV AH, 10 INT 21H 該功能調(diào)用將從鍵盤接收的字符串送到內(nèi)存數(shù)據(jù)區(qū)。 要求事先定義一個數(shù)據(jù)區(qū),數(shù)據(jù)區(qū)內(nèi)第一個字節(jié)指出數(shù)據(jù)區(qū)能容納的字符個數(shù),不能為零;第二個字節(jié)保留,以用做填寫實際輸入的字符個數(shù);從第三個字節(jié)開始存放從鍵盤上接收的字符串。實際輸入的字符數(shù)少于定義的字節(jié)數(shù),數(shù)據(jù)區(qū)內(nèi)其余字節(jié)填零;若多于定義的字節(jié)數(shù),則后來輸入的字符丟掉,且響鈴。調(diào)用時,要求DS: DX指向數(shù)據(jù)區(qū)首地址。例如: DATA SEGMENT BUF DB 50 ;數(shù)據(jù)區(qū)長度 DB ? ;保留,填入實際輸入的字符個數(shù) DB 50 DUP(?) ;定義 50個字節(jié)存儲空間 DATA ENDS CODE SEGMENT MOV DX, OFFSET BUF MOV AH, 10 INT 21H CODE ENDS … … 2. 常用系統(tǒng)功能調(diào)用應用舉例 例 利用 DOS系統(tǒng)功能調(diào)用實現(xiàn)人機對話 。 下述程序可以在屏幕上顯示一行提示信息,然后接收用戶從鍵盤輸入的信息并將其存入內(nèi)存數(shù)據(jù)區(qū)。 DATA SEGMENT PARS DB 100 ;定義輸入緩沖區(qū) DB ? DB 100 DUP(?) MESG DB 39。WHAT IS YOUR NAME ?39。 ;要顯示的提示信息 DB ‘$’ ;提示信息結(jié)束標志 DATA ENDS STACK SEGMENT PARA STACK 39。STACK39。 DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STACK START PROC FAR BEGIN: PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX DISP: MOV DX, OFFSET MESG MOV AH, 9 ;利用 9號功能調(diào)用顯示提示 INT 21H KEYBD: MOV DX, OFFSET PARS MOV AH, 10 ;利用 10號功能調(diào)用接收鍵盤輸入 INT 21H RET ;返回 DOS START ENDP CODE
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1