版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 42125.18-2024測量、控制和實驗室用電氣設(shè)備的安全要求第18部分:控制設(shè)備的特殊要求
- 2024年鋅錠現(xiàn)貨交收與庫存管理服務(wù)合同3篇
- 2025版大型公共建筑換熱站節(jié)能減排合同3篇
- 生物醫(yī)藥招投標(biāo)操作指南
- 陶瓷業(yè)收款管理規(guī)范
- 2024年航空航天設(shè)備采購服務(wù)協(xié)議3篇
- 保險業(yè)數(shù)據(jù)中心:機(jī)房施工合同
- 建筑物給排水設(shè)備租賃合同
- 體育行業(yè)教練隊伍管理辦法
- 娛樂服務(wù)質(zhì)量管理辦法
- 穴位貼敷護(hù)理培訓(xùn)
- 腰椎間盤突出癥護(hù)理查房課件
- JJF(陜) 085-2022 全自動容量稀釋配標(biāo)儀校準(zhǔn)規(guī)范
- DB45T 2866-2024 靈芝菌種制備技術(shù)規(guī)程
- 2024年度區(qū)塊鏈軟件產(chǎn)品知識產(chǎn)權(quán)共享協(xié)議3篇
- 人教版九年級上學(xué)期物理期末復(fù)習(xí)(壓軸60題28大考點)
- 粉末銷售合同范例
- 齊魯名家 談方論藥知到智慧樹章節(jié)測試課后答案2024年秋山東中醫(yī)藥大學(xué)
- 人教版(2024版)七年級上冊英語期末模擬測試卷(含答案)
- 2024年度企業(yè)環(huán)境、社會及治理(ESG)咨詢合同6篇
- 山東省濟(jì)南市2023-2024學(xué)年高一上學(xué)期1月期末考試 物理 含答案
評論
0/150
提交評論