版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、關(guān)于匯編語(yǔ)言,.,2,匯編語(yǔ)言(Assemble Language),一種面向機(jī)器的程序設(shè)計(jì)語(yǔ)言,是一種用符號(hào)表示的低級(jí)程序設(shè)計(jì)語(yǔ)言(機(jī)器語(yǔ)言的符號(hào)化描述),通常是為特定計(jì)算機(jī)或計(jì)算機(jī)系列專門設(shè)計(jì)的。,.,3,匯編語(yǔ)言(Assemble Language),用匯編語(yǔ)言編寫(xiě)的程序不能由機(jī)器直接執(zhí)行,而必須經(jīng)匯編程序翻譯成機(jī)器語(yǔ)言程序。,.,4,采用匯編語(yǔ)言進(jìn)行程序設(shè)計(jì)的優(yōu)點(diǎn):,可以充分利用機(jī)器的硬件功能和結(jié)構(gòu)特點(diǎn),加快程序的執(zhí)行速度,減少目標(biāo)程序所占用的存儲(chǔ)空間。 常用來(lái)編寫(xiě)實(shí)時(shí)控制程序、實(shí)時(shí)通信程序,有時(shí)也用來(lái)編制某些系統(tǒng)軟件程序。,.,5,缺點(diǎn):,編程效率低(與人們描述計(jì)算過(guò)程的需要差距大)
2、 與機(jī)器硬件的具體結(jié)構(gòu)聯(lián)系過(guò)于緊密在一種結(jié)構(gòu)的機(jī)器上開(kāi)發(fā)的程序極難移植到另一種不同結(jié)構(gòu)的機(jī)器上去。,.,6,匯編源程序的匯編過(guò)程,.,7,一、匯編源程序文件的編輯,利用編輯軟件Edit.exe或8086實(shí)驗(yàn)系統(tǒng)、SCM進(jìn)行匯編語(yǔ)言源程序文件(.ASM)的編制。 注意: 1、靜態(tài)檢查(認(rèn)真細(xì)致,養(yǎng)成習(xí)慣); 2、修改后存盤。,.,8,二、源程序文件的匯編,匯編程序分兩種: 基本匯編(ASM.EXE) 宏匯編(MASM.EXE),宏匯編功能比較強(qiáng)。,.,9,主要功能: 檢查源程序(.ASM) ; 測(cè)出源程序中的語(yǔ)法錯(cuò)誤,并給出出錯(cuò)信息;(不能檢查其算法錯(cuò)誤) 產(chǎn)生目標(biāo)文件(.OBJ),并可給出列表
3、文件(同時(shí)列出匯編語(yǔ)言源程序和機(jī)器語(yǔ)言目標(biāo)程序的文件,稱之為.LST文件)和交叉索引文件(列出程序中使用的符號(hào)、變量和標(biāo)號(hào)以及引用情況,稱之為.CRF文件)。 展開(kāi)宏指令。,.,10,匯編示意圖,.,11,三、程序的連接,匯編之后生成的OBJ文件必須經(jīng)過(guò)鏈接過(guò)程,才能成為擴(kuò)展名.EXE的可執(zhí)行文件。 鏈接的過(guò)程: 調(diào)用連接程序(LINK.EXE),對(duì)OBJ文件進(jìn)行定位、鏈接,最后生成擴(kuò)展名為EXE的可執(zhí)行文件。如果需要,也可生成內(nèi)存映象文件(MAP)和庫(kù)文件(LIB)。,.,12,連接示意圖:,.,13,四、程序的調(diào)試 (DEBUG.COM),DEBUG PROG.EXE - U 起始地址 結(jié)
4、束地址 (反匯編) - G =起始地址 斷點(diǎn)地址(執(zhí)行) - T = 地址 (單步中斷跟蹤調(diào)試) - D (顯示存儲(chǔ)單元的內(nèi)容) - E (修改存儲(chǔ)單元的內(nèi)容) - Q (退出 DEBUG),.,14,2.4 匯編源程序的編輯,.,15,2.4.1 匯編源程序的格式 一個(gè)基本的匯編語(yǔ)言程序框架如下: stack SEGMENT STACK STACK DW 32 DUP(?) stack ENDS data SEGMENT data ENDS code SEGMENT ASSUME SS:stack,CS:code, DS:data, ES:data start: MOV AX, data M
5、OV DS, AX MOV ES, AX MOV AL, 4CH INT 21H code ENDS END start,堆棧段,數(shù)據(jù)段,代碼段,.,16,2.4.2 段的定義,段的定義通過(guò)SEGMENT和ENDS偽指令進(jìn)行。 定義一個(gè)段的格式是: 段名 SEGMENT 定位方式 組合方式 類別名 段名 ENDS SEGMENT和ENDS必須成對(duì)出現(xiàn),它們的 前面需有相同的名字,該名字為段名。 偽指令SEGMENT有3個(gè)可選擇的操作數(shù):定位 方式,組合方式和類別名。,.,17,例: STACK SEGMENT STACK DW 20DUP(?) STACK ENDS,.,18,1.段名 可以用
6、來(lái)表示段地址,如取段名為DATA的段地址送AX的指令: MOV AX,DATA 2. 組合方式 有NONE、STACK等6種。 (1) NONE即無(wú)組合方式,表示本段與其他段邏輯 上不發(fā)生關(guān)連,這是隱含的組合方式。,.,19,(2) STACK 表示本段與其他模塊中的STACK組合方式的同名段組合成一個(gè)段。模塊中至少有一個(gè)STACK段,否則在連接時(shí)會(huì)有一個(gè)錯(cuò)誤。定義堆棧段時(shí),必須有組合方式STACK。 例: 定義一個(gè)長(zhǎng)度為32個(gè)字的堆棧 stack segment stack dw 32 dup(?) stack ends,.,20,3.定位方式有PARA、BYTE、WORD、和PAGE 4種
7、。 PARA表示本段要從16的整數(shù)倍地址開(kāi)始,即段 首址的最低四位必須為0,這是隱含的定位方式。 BYTE表示本段可從任何地址開(kāi)始。 WORD表示本段要從偶地址開(kāi)始。 PAGE表示本段要從256的整數(shù)倍地址開(kāi)始。 4. 類別名是用單引號(hào)括起來(lái)的字符串,它是任意的 一個(gè)名字。 連接時(shí)LINK將把類別名相同的所有段存放在連續(xù)的存儲(chǔ)區(qū)域中。,.,21,2.4.3 匯編地址計(jì)數(shù)器($),$用于記錄正在被匯編程序翻譯的指令的地址,即它的內(nèi)容標(biāo)出了匯編程序當(dāng)前的工作位置。如: DATA SEGMENT BUF DB 0123456789ABCDEF CONT EQU $ - BUF ;$=16 DATA
8、ENDS $的值可以用ORG來(lái)設(shè)置,其格式: ORG 數(shù)值表達(dá)式 也叫地址定位偽指令,告訴匯編程序把以下的程序或數(shù)據(jù)從表達(dá)式指定的偏移地址開(kāi)始存放. 例: ORG 100H,.,22,2.4.4 段寄存器的假定,存儲(chǔ)單元的段地址來(lái)自某個(gè)段寄存器。源程序在 代碼段的開(kāi)始就要對(duì)段寄存器與段之間的關(guān)系作假定, 以便宏匯編程序MASM匯編時(shí)根據(jù)指令給定的偏移地 址和段寄存器中的段地址計(jì)算出正確的物理地址。 段寄存器與段的關(guān)系,由偽指令A(yù)SSUME設(shè)定, 設(shè)定格式是: ASSUME 段寄存器: 段名, 其中段寄存器可以是CS、SS、DS、ES中的任一個(gè),段名是用戶自定義的名字。,.,23,需要說(shuō)明的是,
9、偽指令A(yù)SSUME只是將段寄存器 與段間的對(duì)應(yīng)關(guān)系告訴匯編程序,它并沒(méi)有將段首址 置入對(duì)應(yīng)的段寄存器中,這一工作要到程序最后投入 運(yùn)行時(shí)才能完成。 那時(shí)系統(tǒng)自動(dòng)將代碼段和堆棧段的段首址分別置 入CS和SS,將程序段前綴PSP (program segment prefix)的段首址同時(shí)置入DS和ES。因此CS和SS不用程序處理;但對(duì)DS和ES,則必須由程序?qū)⑵涠问字贩謩e置入。,.,24,例如: CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK MOV AX,DATA MOV DS,AX CODE ENDS,.,25,2.4.5 源程序的結(jié)束,源程序的結(jié)束
10、要用偽指令END,其格式是: END表達(dá)式 該偽指令用在源程序的最后,用以表示整個(gè)源程 序的結(jié)束,即告訴匯編程序,匯編工作到此結(jié)束。 其中可選項(xiàng)表達(dá)式的值必須是該程序的啟動(dòng)地址,亦就是程序的第一條可執(zhí)行指令的地址。,.,26,2.5 常用系統(tǒng)功能調(diào)用,IBM PC微機(jī)系統(tǒng)為匯編用戶提供了兩個(gè)程序接 口。一個(gè)是DOS系統(tǒng)功能調(diào)用,另一個(gè)是ROM中的 BIOS(basic input/output system)。系統(tǒng)功能調(diào)用和 BIOS由一系列的服務(wù)子程序構(gòu)成,但調(diào)用與返回不 是使用子程序調(diào)用指令CALL和返回指令RET,而是 通過(guò)軟中斷指令I(lǐng)NT N和中斷返回指令I(lǐng)RET調(diào)用和返 回。 我們僅
11、介紹DOS系統(tǒng)功能調(diào)用。,.,27,2.5.1 系統(tǒng)功能調(diào)用,系統(tǒng)功能調(diào)用是IBM PC微機(jī)系統(tǒng)為匯編用戶提 供的一個(gè)程序接口。系統(tǒng)功能調(diào)用共有4類。我們僅 介紹設(shè)備管理系統(tǒng)功能調(diào)用中基本的I/O管理功能。 使用系統(tǒng)功能調(diào)用的一般過(guò)程為:把調(diào)用號(hào)放入 AH中,設(shè)置入口參數(shù),然后執(zhí)行INT 21H指令,最后 分析處理出口參數(shù)。 鍵盤和顯示器的DOS功能調(diào)用如表2-3所列。 本節(jié)僅介紹常用的1、2、9、10等4個(gè)系統(tǒng)功能調(diào) 用。,.,28,調(diào)用方法,.,29,1. 1號(hào)功能調(diào)用(單個(gè)字符的輸入并回顯) MOV AH,1 INT 21H 執(zhí)行該調(diào)用時(shí)將等待鍵入,一旦有鍵按下就將該按鍵字符的ASCII
12、碼讀入AL,并同時(shí)顯示該字符。 2 . 2號(hào)功能調(diào)用(單個(gè)字符的顯示) MOV DL,待顯示字符的ASCII碼 MOV AH,2 INT 21H 本調(diào)用執(zhí)行后,顯示器顯示待顯示的字符。,.,30,3. 9號(hào)功能調(diào)用(字符串的顯示) MOV DX,待顯示字符串的首偏移地址 MOV AH,9 INT 21H 本調(diào)用執(zhí)行后,顯示器顯示待顯示的字符串。執(zhí) 行前要在DS數(shù)據(jù)段定義一以$結(jié)尾的字符串。 當(dāng)需要輸出數(shù)據(jù)區(qū)中某一字符串時(shí),若該字符串 的尾部無(wú) $,一定要在其尾部置入一個(gè) $。,.,31,4. 10號(hào)功能調(diào)用 MOV DX,數(shù)據(jù)區(qū)的首偏移地址 MOV AH,10 INT 21H 這一功能調(diào)用從鍵
13、盤輸入字符串到指定的內(nèi)存區(qū)域,該內(nèi)存區(qū)域稱為緩沖區(qū),因此調(diào)用此功能必須在數(shù)據(jù)段中定義一個(gè)緩沖區(qū),其中第一個(gè)字節(jié)用于定義緩沖區(qū)可存放的字符個(gè)數(shù),第二個(gè)字節(jié)是保留給系統(tǒng)填入實(shí)際輸入的字符個(gè)數(shù),第三個(gè)字節(jié)開(kāi)始用來(lái)存放鍵盤輸入的字符。例如從鍵盤輸入3F個(gè)以內(nèi)的字符到內(nèi)存單元中,緩沖區(qū)定義和系統(tǒng)功能調(diào)用如下: BUFF1 DB 3FH ;緩沖區(qū)容量為3F個(gè)字節(jié) DB ? ;實(shí)際輸入的字符個(gè)數(shù) DB 3FH DUP (?) ;輸入字符的存儲(chǔ)區(qū)域 ,.,32,LEA DX, BUFF1 ;入口參數(shù),把緩沖區(qū)首地址送DX MOV AH, 0AH ;功能號(hào)送AH INT 21H ;調(diào)用系統(tǒng)功能子程序 以上程序中
14、,由變量定義語(yǔ)句定義了一個(gè)可以存放3F個(gè)字符的緩沖區(qū),當(dāng)程序執(zhí)行到最后一條指令時(shí),系統(tǒng)等待用戶鍵入一個(gè)字符,其相應(yīng)的ASCII碼值被寫(xiě)入緩沖區(qū)中,直至鍵入回車鍵。由于回車鍵的ASCII碼也被寫(xiě)入緩沖區(qū),所以緩沖區(qū)實(shí)際可以寫(xiě)入的字符長(zhǎng)度為3E個(gè)字節(jié),當(dāng)輸入第3E個(gè)字符后,系統(tǒng)不再接受其他字符,鍵入回車后,系統(tǒng)把實(shí)際鍵入的字符數(shù)寫(xiě)入緩沖區(qū)的第二個(gè)字節(jié),此時(shí),系統(tǒng)調(diào)用功能結(jié)束。,.,33,最后,要特別強(qiáng)調(diào)的是:2號(hào)功能調(diào)用、9號(hào)功能 調(diào)用和10號(hào)功能調(diào)用雖然未使用AL,但調(diào)用后也會(huì)破 壞AL中原來(lái)的內(nèi)容。為防止AL中原來(lái)的內(nèi)容被破壞, 在調(diào)用前應(yīng)先保護(hù)AL,調(diào)用后再恢復(fù)。,.,34,2.5.2 功能
15、調(diào)用應(yīng)用舉例,例2 .5 編寫(xiě)匯編語(yǔ)言源程序,在顯示器上顯示 wish you success!。 只需將欲顯示字符串的ASCII碼存放到字節(jié)變量 數(shù)據(jù)區(qū)中(字節(jié)變量數(shù)據(jù)區(qū)一定要以 $ 結(jié)束),用9 號(hào)功能調(diào)用即可顯示該字符串。程序如下: OBF DB wish you success!$ MOV DX, OFFSET OBF MOV AH, 9 INT 21H,.,35,例2 .6 將鍵入的4位十進(jìn)制數(shù)(如5,則鍵入0005)以壓縮BCD數(shù)形式存入字變量SW中。 程序如下:,.,36,IBUF DB 5, 0, 5 DUP (?) SW DW 0 MOV DX, OFFSET IBUF ;1
16、0號(hào)功能調(diào)用 MOV AH, 10 INT 21H MOV AX, WORD PTR IBUF+4 ;鍵入的個(gè)位和十位送AX AND AX, 0F0FH ; ASCII碼變非壓縮BCD數(shù) MOV CL, 4 SHL AL ,CL ;將10位移至AL的高4位 OR AL, AH ;將10位和個(gè)位拼合在AL中 MOV BYTE PTR SW,AL ;存BCD數(shù)字的十位和個(gè)位,.,37,MOV AX, WORD PTR IBUF+2 ;鍵入數(shù)的百位和千位送AX AND AX, 0F0FH ; ASCII碼變非壓縮BCD數(shù) SHL AL ,CL ;將千位移至AL的高4位 OR AL, AH ;千位和百
17、位拼合在AL中 MOV BYTE PTR SW+1,AL;存千位和百位,.,38,例2 .7 鏡子程序。 “鏡子”程序的功能是接收并回顯鍵盤輸入的一 串字符,然后在下一行再將該串字符顯示出來(lái)??梢?jiàn) 該功能主要由10號(hào)功能調(diào)用和9號(hào)功能調(diào)用來(lái)完成。 根據(jù)10號(hào)功能調(diào)用的入口參數(shù),在數(shù)據(jù)段定義了字節(jié) 變量IBUF。第1個(gè)單元是允許鍵入字符數(shù)FFH,即最 多可接收除回車外的254個(gè)任意字符和一個(gè)回車;第2 單元是預(yù)留裝載實(shí)際鍵入字符個(gè)數(shù)的;從第3單元開(kāi) 始是預(yù)留裝載鍵入字符的。,.,39,10號(hào)功能調(diào)用結(jié)束后,只要把字符 $放入存放回 車的單元 ,即可使用9號(hào)功能調(diào)用把自IBUF+2單元開(kāi)始的字符送顯示器顯示。 鏡子程序如下: OBUF DB , 0DH, 0AH, $ IBUF DB 0FFH, 0,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)社會(huì)體育指導(dǎo)與管理(社會(huì)體育學(xué))試題及答案
- 2025年中職播音與主持(播音基礎(chǔ)技巧)試題及答案
- 2025年高職教育學(xué)(教育管理學(xué))試題及答案
- 2026年蹦床用品營(yíng)銷(營(yíng)銷規(guī)范)試題及答案
- 2025年大學(xué)水產(chǎn)養(yǎng)殖技術(shù)(水產(chǎn)養(yǎng)殖學(xué))試題及答案
- 2025年大學(xué)食品科學(xué)與工程(餅干生產(chǎn)技術(shù))試題及答案
- 2025年高職(藥學(xué))藥學(xué)基礎(chǔ)階段測(cè)試試題及答案
- 2025年高職檢驗(yàn)檢測(cè)技術(shù)與管理(檢測(cè)報(bào)告編制)試題及答案
- 2025年高職(藥品注冊(cè)管理實(shí)務(wù))資料準(zhǔn)備專項(xiàng)測(cè)試試題及答案
- 2025年大學(xué)云計(jì)算(云計(jì)算架構(gòu)設(shè)計(jì))試題及答案
- 生態(tài)環(huán)境監(jiān)測(cè)數(shù)據(jù)分析報(bào)告
- 金融機(jī)構(gòu)衍生品交易操作規(guī)范
- 醫(yī)院檢查、檢驗(yàn)結(jié)果互認(rèn)制度
- 2025年醫(yī)院物價(jià)科工作總結(jié)及2026年工作計(jì)劃
- 2025-2026學(xué)年上學(xué)期成都小學(xué)數(shù)學(xué)四年級(jí)期末典型卷1
- 2026年江西應(yīng)用技術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試必刷測(cè)試卷必考題
- 統(tǒng)編版語(yǔ)文二年級(jí)上冊(cè)知識(shí)點(diǎn)
- 北京師范大學(xué)介紹
- 售后技術(shù)服務(wù)流程規(guī)范
- 六性分析報(bào)告標(biāo)準(zhǔn)格式與范例
- 供水管網(wǎng)施工期間居民供水保障方案
評(píng)論
0/150
提交評(píng)論