計算機(jī)接口技術(shù)實驗指導(dǎo)書_第1頁
計算機(jī)接口技術(shù)實驗指導(dǎo)書_第2頁
計算機(jī)接口技術(shù)實驗指導(dǎo)書_第3頁
計算機(jī)接口技術(shù)實驗指導(dǎo)書_第4頁
計算機(jī)接口技術(shù)實驗指導(dǎo)書_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《微機(jī)接口技術(shù)》實驗指導(dǎo)書

主編周光宇

寧波大紅鷹學(xué)院

信息工程學(xué)院

計算機(jī)接口技術(shù)實驗指導(dǎo)

1、前言

本實驗指導(dǎo)書適用于寧波大紅鷹學(xué)院計算機(jī)科學(xué)與技術(shù)專業(yè)嵌入

式方向的學(xué)生,實驗時間16學(xué)時,課內(nèi)實驗12學(xué)時。

主要學(xué)習(xí)內(nèi)容為80X86語言實驗環(huán)境配置、匯編源語言格式、輸

出字符、循環(huán)結(jié)構(gòu)、子程序調(diào)用、加減乘除等指令操作和微機(jī)接口實

驗。

學(xué)習(xí)結(jié)束后,要求學(xué)生能掌握基本匯編語言程序編寫、調(diào)試的方

法,初步掌握微機(jī)I/O接口芯片的編程應(yīng)用。

目錄

第一部分匯編語言程序設(shè)計4

實驗一熟悉微機(jī)模擬實驗環(huán)境4

實驗二DOS環(huán)境下的匯編語言編程環(huán)境使用(基礎(chǔ)與驗證型)12

實驗三發(fā)聲系統(tǒng)程序編程設(shè)計(綜合性實驗)19

附錄一8086指令系統(tǒng)一覽表25

附錄二8086指令對標(biāo)志位的影響32

附錄三8086宏匯編常用偽指令表32

附錄四ASCII碼表34

附錄五DOS系統(tǒng)功能調(diào)用(INT21H)35

附錄六BIOS系統(tǒng)功能調(diào)用40

附錄七Debug命令表43

附錄八匯編語言實驗報告參考格式44

第二部分EL-MUT-IH型微機(jī)接口實驗系統(tǒng)簡介45

一、硬件資源45

二、單元電路原理46

第三部分基本實驗(8086)54

一、軟件系統(tǒng)使用說明54

二、實驗系統(tǒng)概述54

三、實驗項目57

實驗一I/O端口實驗57

實驗二8253定時實驗59

實驗三DMA實驗62

實驗四8259中斷控制及中斷服務(wù)實驗63

補(bǔ)充1:DMA(8237A)實驗源程序69

補(bǔ)充2:8086上8259實驗調(diào)整說明70

實驗五8255并行口實驗73

實驗六8250串口實驗74

實驗七A/D轉(zhuǎn)換實驗77

實驗八D/A實驗80

實驗九8255A并行口實驗一交通燈實驗83

程序運行后,發(fā)光二極管的亮滅能反映交通燈的變化規(guī)律。83

實驗十8279顯示器接口實驗84

實驗H-8279鍵盤擴(kuò)展實驗87

實驗十二用戶CPLD譯碼實驗90

第一部分匯編語言程序設(shè)計

實驗一熟悉微機(jī)模擬實驗環(huán)境

一、實驗?zāi)康?/p>

1、熟悉微機(jī)模擬實驗環(huán)境

2、單步運行程序,通過觀察窗口觀察指令對寄存器中數(shù)據(jù)的影響

二、實驗步驟

1、Emu8086軟件及安裝:Emu8086-AssemblerandMicroprocessorEmulator是一個

可在Windows環(huán)境下運行的8086CPU匯編仿真軟件。它集成了文本編輯器、編譯器、反

編譯器、真調(diào)試、虛擬設(shè)備和驅(qū)動器為一體,并具有在線使用指南,這對剛開始學(xué)習(xí)匯

編語言的人是一個很有用的工具。您可以在真器中單步或連續(xù)執(zhí)行程序,其可視化的工

作環(huán)境讓使用者操作更容易。您可以在程序執(zhí)行中動態(tài)觀察各寄存器、標(biāo)記位以及存儲

器中的變化情況。仿真器會在模擬的PC中執(zhí)行程序,以避免程序運行時到實際的硬盤或

內(nèi)存中存取數(shù)據(jù)。此外,該軟件完全兼容Intel新一代處理器,包括了PentiumllL

Pentium4的指令。

a、安裝emu8086V4.07,b、安裝補(bǔ)丁程序。

2、運行emu8086仿真軟件:

雙擊桌面emu8086圖標(biāo)一小

1)啟動界面如圖1所示,用戶可以選擇新建文本、程序?qū)嵗?、啟動指南、近期文檔。

圖1啟動界面

軟件提供的實例中包含了幾十種典型的程序代碼,其中包括:數(shù)值計算、邏輯運算、

屏幕顯示、鍵盤輸入、文件打印、馬達(dá)控制、溫度控制、交通燈控制等。

在軟件提供的快速指南中提供了多種在線幫助工具,包括:文件索引、8086CUP指

令使用指南、系統(tǒng)中斷調(diào)用列表以及用法等。用戶可以通過該工具快速地掌握8086CPU

指令體系和emu8086匯編真軟件的使用。

2)新建文件

單擊圖1中的“New”選項,軟件會彈出如圖2所示的選擇界面。

choosecodetespial:e

圖2新疆文本格式選擇

?COM模板——適用于簡單且不需分段的程序,所有內(nèi)容均放在代碼段中,程序代

碼默認(rèn)從ORG010011開始;

?EXE模板——適用于需分段的復(fù)雜程序,內(nèi)容按代碼段、數(shù)據(jù)段、堆棧段劃分。

需要注意的是采用該模板時,用戶不可將代碼段人為地設(shè)置為ORG0100H,而應(yīng)由編譯

器自動完成空間分配;

?BIN模板——二進(jìn)制文件,適用于所有用戶定義結(jié)構(gòu)類型:

?BOOT模板——適用于在軟盤中創(chuàng)建文件。

此外,若用戶希望打開一個完全空的文檔,則可選擇emptyworkspace的選項。

4)編譯和加載程序

用戶可根據(jù)上述選擇的模板中編寫程序,如圖3所示。該編輯界面集文檔編輯、指

令編譯、程序加載、系統(tǒng)工具、在線幫助為一體,其菜單功能如表1所示。

圖3文檔編輯界面

編寫完程序后,用戶只需單擊工具欄上的“compile”按鈕,即可完成程序的編譯工

作,并彈出如圖4所示的編譯狀態(tài)界面。若有錯誤則會在窗口中提示,若無錯誤則還會

彈出保存界面,讓用戶將編譯好的文件保存相應(yīng)的文件夾中。默認(rèn)文件夾

為…\emu8086\MyBuild\,但您可以通過菜單中assembler/setoutputdirectory對

默認(rèn)文件夾進(jìn)行修改。用戶保存的文件類型與第一階段所選擇的模板有關(guān)。

完成編譯和保存文件后,用戶可按下圖4中的“close”按鈕先關(guān)閉該窗體,再利用

工具欄上的“emulate”按鈕打開真器界面和原程序界面進(jìn)行真調(diào)試,也可以按下圖4

中的Run按鈕運行直接程序。

圖4編譯狀態(tài)界面

表1編譯器菜單功能

二級菜單三級菜

一級菜單名稱功能

名稱單名稱

file文件

new新建

com

com模板

template

exe

exe模板

template

bin

bin模板

template

boot

boot模板

template

example實例

open打開文件

save保存文件

saveas另存為

prints打印文件

exportto轉(zhuǎn)換為超文本

HTML文件

exit退出

edit編輯

undo取消

redo重復(fù)

cut剪切

cope復(fù)制

paste粘貼

selectall選擇全部

find查找

findnext查找下一個

replace代替

indent縮進(jìn)

outdent凸出

comment將被選塊變?yōu)?/p>

block注釋

uncomment將被注釋變?yōu)?/p>

block指令

advanced

高級宏匯編

editormacros

advanced高級設(shè)置

Showline

顯示行編號

numbers

tabitfy空格轉(zhuǎn)換為定

selection位字元

untabitfy定位字元轉(zhuǎn)換

selection為空格

lowercase用小寫字母表

selection示

uppercase用大寫字母表

selection示

display顯示出空格出

whitespace空間

bookmark書簽

toggle在光標(biāo)處放置

bookmark標(biāo)簽

previous跳到上一個標(biāo)

bookmark簽處

next跳到下一個標(biāo)

bookmark簽處

jumpto跳到第一個標(biāo)

first簽處

jumpto跳到最后一個

last標(biāo)簽處

clearall

清除所有標(biāo)簽

bookmark

assembler匯編

compile編譯

compile編譯并加載到

andloadin真器中

theemulation

fasmFasm匯編

set

設(shè)置輸出文件

output

directory

emulator真器

show

顯示真窗口

emulator

assemble

編譯并加載到

andloadin

真器中

theemulator

math數(shù)學(xué)計算

multi

多進(jìn)制基本計

base

算器

calculator

base

基本轉(zhuǎn)換器

converter

asciicodeASCII碼表

help幫助

documenta

tionand文檔及指南

tutorials

check

軟件更新檢查

foranupdate

about關(guān)于軟件

四.仿真調(diào)試

當(dāng)用戶完成程序編譯后,利用工具欄中的“emulate”按鈕可將編譯好的文件加載到

仿真器進(jìn)行真調(diào)試。除使用“emulate”按鈕外,用戶也可以用菜單欄中的

assemb1er/compi1eandloadintheemulationemulator/assembleandloadinthe

emulator打開仿真器。仿真器界面如圖5所示。

exlerrteJ.vix'devicesviIx-dx_1vekIelpr'—-.-

_I__________________|ricgl?!纓op]________rue]stepdelayms:O

070001OOH弋g指廿A

工84MOV>;h

03003.INT

000^090NlMOV

01MOVh

07工04:18INT0B

?

07105:00MOVAX

t

0-7106:01MOV100QNhm

E

0-710-7:18MOVX000I04hn

0710B:00MOVXE0006hn

07109:00MOV1C000I08hn

0710A:20MOVXC000Ahn

E00I0n

0T10B:02MOVS。Ch

0710c:18MOV

0I0

0710D:0.

0710E:011.

Q710F:180I

2。.

0T111:1

居拜es區(qū)],______?_______1c_____,XZ,//:,_z_,

|cfe似屏乖I腳程評界而1卜呈可篁位I/俄加西口I/降極西口I際記位用曰

可打開存外?T寄存《t、治諄停止joebug飛過畝

圖5仿真舞界面

當(dāng)用戶將程序加載到仿真器后,會同時打開仿真器界面和源程序界面,用戶在仿真

器界面中也可以同時看到源代碼和編譯后的機(jī)器碼。點擊的任意i條源程序指令,則對

應(yīng)的機(jī)器代碼顯示為被選顯示狀態(tài),與此同時,上面的代碼指針也會相應(yīng)變化。用戶也

可以通過這種操作了解,數(shù)據(jù)段和堆棧段中各變量或數(shù)據(jù)在存儲器中的情況。

用戶可以利用工具欄中的“singlestep”按鈕進(jìn)行單步跟蹤調(diào)試,以便仔細(xì)觀察各

寄存器、存儲器、變量、標(biāo)記位等情況,這對于程序初始調(diào)試時十分有用;當(dāng)程序調(diào)試

完畢,或需要連續(xù)運行觀察時,則可以使用“run”按鈕;當(dāng)希望返回上一步操作時,則

可以使用“stepback”按鈕;若單擊“reload”按鈕,則真器會重新加載程序,并將指

令指針指向程序的第一條指令;您也可以利用“l(fā)oad”按鈕,從您保存的文件夾中加載

其它程序。用戶除使用上述工具欄中的按鈕進(jìn)行仿真調(diào)試外,還可以利用其菜單中的其

它功能進(jìn)行更高級的調(diào)試和設(shè)置。菜單的詳細(xì)功能見表2所示。

表2真器菜單功能

一級菜單名稱二級菜單名稱功能

file文件

loadexecutable***加載要執(zhí)行的程序

reload重新加載程序

examples打開實例

resetemulatorandram復(fù)位真器和RAM

setcommandlineparameter設(shè)置命令行參數(shù)

settheemulatorsstate保存真器設(shè)置

loadformpreviousstate載入原先保存的設(shè)置

math數(shù)學(xué)計算

multibasecalculator多進(jìn)制基本計算器

baseconverter基本轉(zhuǎn)換器

debugsinglestep單步跟蹤

singleover單步

stepback單步返回

stoponcondition設(shè)置停止運行的條件

rununtil運行到光標(biāo)處

run連續(xù)運行

setbreakpoint在光標(biāo)處設(shè)置斷點

clearbreakpoint清除所有斷點

showcurrentbreakpoint顯示當(dāng)前斷點指令

showcurrentinstruction(at

顯示當(dāng)前指令

CS:IP)

setCS:IPtoselectedposition將被選指令設(shè)定為當(dāng)前指令

view觀察

loganddebug,exeemulation打開debug.調(diào)試窗口

extendvalueviewer打開擴(kuò)展數(shù)值觀察器

stack打開堆棧窗口

variables打開變量窗口

symboltable打開標(biāo)記表

listing顯示源程序及目標(biāo)文件內(nèi)容

originalsourcecode打開源程序代碼窗口

軟件高級設(shè)置,可對字體、顏色、

option

文本格式、鍵盤輸入等進(jìn)行設(shè)置

選擇打開存儲器、寄存器等單元,

arithmetic&logicalunit

與AUX按鈕功能相同

flag打開標(biāo)記位窗口

lexicalflaganalyser打開文本說明格式的標(biāo)記位窗口

asciicode打開ASCII碼表

emulatorscreen打開模擬屏幕窗口

external外部真器

startdebug,exe啟動windows的debug真調(diào)試器

commandprompt打開DOS命令窗口

run在DOS環(huán)境下運行程序

Virtual

虛擬設(shè)備

devices

LED-Disply.exeLED顯示器

printer,exe打印機(jī)

robit.exe機(jī)器人

simple,exe讀寫端口

simplest,exe在屏幕上讀寫端口

stepper_motor.exe步進(jìn)馬達(dá)

thermometer,exe溫度控制

tranffic_lights交通燈控制

VGA_STATE.exe顯示屏控制

Virtualdrive虛擬驅(qū)動盤

bootformvirtualfloppy(floppy_0)從虛擬的軟盤中導(dǎo)入程序

write512byteat0000:7C00toboot將存儲器中07c存單元開始的512

sector(floppy_0)(個字節(jié)寫到軟盤中

write".bin"filetofloppy將bin文件寫到軟盤中

createnewfloppydrive創(chuàng)建一個新的軟盤

3、顯示數(shù)字或字符

輸入以下代碼,進(jìn)行編譯和運行(分別采用單步運行方式和連續(xù)運行方式)

datasegment;ds數(shù)據(jù)段

xdb3

dataends

stacksegment;ss堆棧段

stackends

codesegment;cs代碼段

assumecs:code,ds:data,ss:stack

main:

movax,data

movds,ax

movdl,1

adddl,30h;0~9的數(shù)字與相應(yīng)的ASCII碼相差30H

movah,2

int21h

movah,4ch;程序結(jié)束,返回DOS

int21h

codeends

endmain

保存源程序

注意:保存源程序的文件名不能太長(包括路徑);

注意:保存源程序的文件名的后綴為.asm

運行中錄數(shù)據(jù)寄存器、標(biāo)志寄存器、IP寄存器的數(shù)據(jù)變化,并進(jìn)行簡要說明。

實驗二DOS環(huán)境下的匯編語言編程環(huán)境使用(基礎(chǔ)與驗證型)

一、實驗要求和目的

1、掌握匯編語言程序設(shè)計的基本方法和技能;

2、熟練掌握使用全屏幕編輯程序EDIT編輯匯編語言源程序;

3、熟練掌握宏匯編程序MASM的使用;

4、熟練掌握連接程序LINK的使用。

二、軟硬件環(huán)境

1、硬件環(huán)境:微機(jī);

2、軟件環(huán)境:裝有MASM、DEBUG、LINK、EDIT、CREF.EXE和EXR2BIN.EXE等應(yīng)用程

序。

三、實驗涉及的主要知識單元

1、匯編語言源程序的匯編過程

匯編語言源程序的匯編過程是是利用匯編程序(MASM)對己編輯好的源程序文件(.ASM)

進(jìn)行匯編,將源程序文件中以ASCII碼表示的助記符指令逐條翻譯成機(jī)器碼指令,并完成源

程序中的偽指令所指出的各種操作,最后可以建立3個文件:擴(kuò)展名為.OBJ的目標(biāo)文件、

擴(kuò)展名為.LST的列表文件和擴(kuò)展名為.CRF的交叉索引文件。目標(biāo)文件是必須建立的,它

包含了程序中所有的機(jī)器碼指令和偽指令指出的各種有關(guān)信息,但該文件U'的操作數(shù)地址還

不是內(nèi)存的絕對地址,只是一個可浮動的相對地址。列表文件(.LST)中包含了源程序的全

部信息(包括注釋)和匯編后的目標(biāo)程序,列表文件可以打印輸出,可供調(diào)試檢查用。交叉索

引文件(.CRF)是用來了解源程序中各符號的定義和引用情況的。.LST和.CRF兩個文件不是

必須建立的,可有有無,可以通過匯編時的命令加以選擇。

在對源程序文件(ASM文件)匯編時,匯編程序?qū)SM文件進(jìn)行兩遍掃描,若程序文

件中有語法錯誤,則結(jié)束匯編,匯編程序?qū)⒅赋鲈闯绦蛑写嬖诘腻e誤,這時應(yīng)返回編輯環(huán)境

修改源程序中的錯誤,再經(jīng)過匯編,直到最后得到無錯誤的目標(biāo)程序,即OBJ文件。因此,

匯編程序的主要功能可以概括為以下三點:(1)檢查源程序中的語法錯誤,并給出錯誤信息;

(2)產(chǎn)生目標(biāo)程序文件(OBJ文件),并可給出列表文件(.LST文件);(3)展開宏指令。

匯編程序是系統(tǒng)提供的用于匯編的系統(tǒng)軟件,目前常用的匯編程序有Microsoft公司推

出的宏匯編程MASM(MACROASSEMBLER)和BORLAND公司推出的TASM(TURBOASSEMBLER)兩種。

Microsoft公司推出有宏匯編程序MASM和小匯編程序ASM兩種,二者的區(qū)別在于:MASM有

宏處理功能,而ASM沒有宏處理功能,因此,MASM比ASM的功能強(qiáng)大,但MASM需要

占據(jù)較大的內(nèi)存空間,當(dāng)內(nèi)存空間較小時(如64KB),只能使用ASM。

2、目標(biāo)程序的連接過程

匯編后產(chǎn)生的目標(biāo)程序(OBJ文件)并不是可執(zhí)行程序文件(EXE文件),還不能直接運行,

它必須通過連接程序(LINK)連接成一個可執(zhí)行程序后才能運行。連接程序進(jìn)行連接時,其輸

入有兩個部分:一是目標(biāo)文件(.OBJ),目標(biāo)文件可以是一個也可以是多個,可以是匯編語言

經(jīng)匯編后產(chǎn)生的目標(biāo)文件,也可以是高級語言(例如C語言)經(jīng)編譯后產(chǎn)生的目標(biāo)文件;另一

是庫文件(.LIB),庫文件是系統(tǒng)中已經(jīng)建立的,主要是為高級語言提供的。連接后輸出兩個

文件,一是擴(kuò)展名為.EXE的可執(zhí)行文件,另一個是擴(kuò)展名為.MAP的內(nèi)存分配文件,它是

連接程序的列表文件,又稱為連接映像(LinkM叩),它給出每個段在存儲器中的分配情況,

該文件可有可無?連接程序給出的“無堆棧段的警告性錯誤”并不影響程序的運行。所以,

到此為止,連接過程已經(jīng)結(jié)束,可以在操作系統(tǒng)下執(zhí)行該.EXE程序了。

3、匯編語言和DOS操作系統(tǒng)的接口

編寫的匯編語言源程序是在DOS環(huán)境下運行時,必須了解匯編語言是如何同DOS操作

系統(tǒng)接口的。

用編輯程序把源程序輸入到機(jī)器中,用匯編程序把它轉(zhuǎn)換為目標(biāo)程序,用連接程序?qū)ζ?/p>

進(jìn)行連接和定位時,操作系統(tǒng)為每一個用戶程序建立了一個程序段前綴區(qū)PSP,其長度為256

個字節(jié),主要用于存放所要執(zhí)行程序的有關(guān)信息,同時也提供了程序和操作系統(tǒng)的接口。操

作系統(tǒng)在程序段前綴的開始處(偏移地址0000H)安排了一條INT20H軟中斷指令。INT20H

中斷服務(wù)程序由DOS提供,執(zhí)行該服務(wù)程序后,控制就轉(zhuǎn)移到DOS,即返回到DOS管理的

狀態(tài)。因此,用戶在組織程序時,必須使程序執(zhí)行完后能去執(zhí)行存放于PSP開始處的INT20H

指令,這樣便返回到DOS,否則就無法繼續(xù)鍵入命令和程序。

DOS在建立了程序段前綴區(qū)PSP之后,將要執(zhí)行的程序從磁盤裝入內(nèi)存。在定位程序時,

DOS將代碼段置于PSP下方,代碼段之后是數(shù)據(jù)段,最后放置堆棧段。內(nèi)存分配好之后,

DOS就設(shè)置段寄存器DS和ES的值,以使它們指向PSP的開始處,即INT20H的存放地址,

同時將CS設(shè)置為PSP后面代碼段的段地址,IP設(shè)置為指向代碼段中第一條要執(zhí)行的指令位

置把SS設(shè)置為指向堆棧的段地址,讓SP指向堆棧段的棧底,然后系統(tǒng)開始執(zhí)行用戶程序。

為了保證用戶程序執(zhí)行完后能返回到DOS狀態(tài),可使用如下兩種方法。

(-)標(biāo)準(zhǔn)方法

首先將用戶程序的主程序定義成一個FAR過程,其最后一條指令為RET。然后在代碼

段的主程序(即FAR過程)的開始部分用如下三條指令將PSP中INT20H指令的段地址及偏

移地址壓入堆棧:

PUSHDS;保護(hù)PSP段地址

MOVAX,0;保護(hù)偏移地址0

PUSHAX

這樣,當(dāng)程序執(zhí)行到主程序的最后一條指令RET時,由于該過程具有FAR屬性,故存

在堆棧內(nèi)的兩個字就分別彈出到CS和IP,從而執(zhí)行INT20H指令,使控制返回到DOS狀

態(tài)。返回DOS的標(biāo)志就是程序運行完后出現(xiàn)一個DOS的標(biāo)識符,如C:\>o

(二)非標(biāo)準(zhǔn)方法

也可在用戶的程序中不定義過程段,只在代碼段結(jié)束之前(即CODEENDS之前)增加兩

條語句:

MOVAH,4CH

INT21H

則程序執(zhí)行完后也會自動返回DOS狀態(tài)。

此外,由于開始執(zhí)行用戶程序時,DS并不設(shè)置在用戶的數(shù)據(jù)段的起始處,ES同樣也不

設(shè)置在用戶的附加段起始處,因而在程序開始處使用以下方法重新裝填DS和ES的值使其指

向用戶的數(shù)據(jù)段:

MOVAX,段名

MOV段寄存器名,AX:段寄存器名可以是DS、ES、SS之一

四、實驗內(nèi)容與步驟

1、實驗內(nèi)容

編寫程序,判斷一個年份是否是閏年。

2、實驗步驟

匯編語言程序設(shè)計上機(jī)過程如圖1.1所示。

圖1.1匯編語言程序上機(jī)過程

(-)用編輯程序EDIT建立匯編語言源程序文件(ASM文件)

例如,編寫程序,判斷一個年份是否是閏年的匯編語言源程序,可以在DOS模式下用

編輯程序EDIT.EXE建立匯編語言源程序文件ABC.ASM,注意文件名的擴(kuò)展名必須是.ASM。

也可以在Windows2000或者在WindowsXP環(huán)境下鼠標(biāo)單擊“開始”-“運行”,在“運行”

中輸入“CMD”進(jìn)入DOS模式,運行EDIT軟件,例如:

C>EDITABC.ASM

進(jìn)入EDIT的程序編輯畫面時,輸入?yún)R編語言源程序如下:

DATASEGMENT

INFONDBODH,OAH,*Pleaseinputayear:$'

YDBODII,OAH,,Thisisaleapyear!$'

NDBODH,OAH,JThisisnotaleapyear!$'

WDW0

BUFDB8

DB?

DB8DUP(?)

DATAENDS

STACKSEGMENT'stack'

DB200DUP(O)

STACKENDS

CODESEGMENT

ASSUMEDS:DATA,SS:STACK,CS:CODE

START:MOVAX,DATA

MOVDS,AX

LEADX,INFON

MOVAH,9

INT21H

LEADX,BUF

MOVAH,10

INT21H

MOVCL,[BUF+1]

LEADI,BUF+2

CALLDATACATE

CALLIFYEARS

JCAl

LEADX,N

MOVAH,9

INT21H

JMPEXIT

Al:LEADX,Y

MOVAH,9

INT21H

EXIT:MOVAH,4CH

INT21H

DATACATEPROCNEAR

LEASI,BUF+2

MOVBX,0

X3:

MOVAL,[SI]

SUBAL,30H

MOVAH,0

XCHGAX,BX

MOVDX,10D

MULDX

XCHGAX,BX

ADDBX,AX

INCSI

LOOPX3

MOVW,BX

RET

DATACATEENDP

IFYEARSPROCNEAR

PUSHBX

PUSHCX

PUSHDX

MOVAX,W

MOVCX,AX

MOVDX,0

MOVBX,4

DIVBX

CMPDX,0

JNZLABI

MOVAX,CX

MOVBX,100

DIVBX

CMPDX,0

JNZLAB2

MOVAX,CX

MOVBX,400

DIVBX

CMPDX,0

JZLAB2

LABI:CLC

JMPLAB3

LAB2:STC

LAB3:POPDX

POPCX

POPBX

RET

IFYEARSENDP

CODEENDS

ENDSTART

(二)用匯編程序MASM將ASM文件匯編成目標(biāo)程序文件(OBJ文件)

當(dāng)源程序建立以后,仍以ABC.ASM程序為例,我們用匯編程序MASM對ABC.ASM源

程序文件進(jìn)行匯編,以便產(chǎn)生機(jī)器碼的目標(biāo)程序文件ABC.OBJ,其操作步驟如下:

C>MASMABC

Microsoft(R)MacroAssemblerVersion5.00

Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.

Objectfilename[ABC.OBJ]:

Sourcelisting[NUL.LST]:ABC

Cross-reference[NUL.CRF]:ABC

50674+450574Bytessymbolspacefree

0WarningErrors

0SevereErrors

由此可知,匯編程序調(diào)入后,首先顯示版本號,然后出現(xiàn)三個提示行。

第一個提示行為:Objectfilename[ABC.OBJ]:

這是詢問目標(biāo)程序文件名,方括號內(nèi)為機(jī)器規(guī)定的默認(rèn)的文件名,通常直接按回車鍵,

表示采用默認(rèn)的文件名(如上所示),這是我們匯編的主要目的。

第二個提示行為:Sourcelisting[NUL.LST1:

這是詢問是否建立列表文件。若不建立,直接回車;若要建立,可以輸入文件名ABC

再回車,表示要建立名為ABC的列表文件。列表文件中同時列出源程序和機(jī)器語言程序清

單,并給出符號表,有利于程序調(diào)試。

第三個提示行為:Cross-reference[NUL.CRF]:

這是詢問是否要建立交叉索引文件。若不建立,則直接回車;若要建立,可以輸入文件

名ABC,表示要建立ABC.CRF文件。由于.CRF是非文本文件,為了建立交叉索引文件,還

必須調(diào)用CREF.EXE程序,即輸入:

C>CREFABC

Microsoft(R)Cross-ReferenceUtilityVersion5.00

Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.

listing[ABC.REF]:

17Symbols

這時首先顯示版本號,然后出現(xiàn)一個提示行:Listing[ABC.REFJ

溫馨提示

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

評論

0/150

提交評論