51465匯編語言程序設(shè)計第四章匯編語言程序格式_第1頁
51465匯編語言程序設(shè)計第四章匯編語言程序格式_第2頁
51465匯編語言程序設(shè)計第四章匯編語言程序格式_第3頁
51465匯編語言程序設(shè)計第四章匯編語言程序格式_第4頁
51465匯編語言程序設(shè)計第四章匯編語言程序格式_第5頁
已閱讀5頁,還剩147頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、ibm-pc匯編語言程序設(shè)計 第四章第四章 匯編語言程序格式匯編語言程序格式 任課教師:陶雪麗任課教師:陶雪麗 xueli_ ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院2 2021-5-8 硬指令和偽指令硬指令和偽指令 硬指令:硬指令:使使cpucpu產(chǎn)生動作、并在程序執(zhí)行時才處理的語句。產(chǎn)生動作、并在程序執(zhí)行時才處理的語句。 就是第就是第3 3章學習的處理器指令。章學習的處理器指令。 偽指令(偽操作:偽指令(偽操作:directivedirective):):不產(chǎn)生不產(chǎn)生cpucpu動作、在程序動作、在程序 執(zhí)行前由匯編程序處理的說明性語句

2、。執(zhí)行前由匯編程序處理的說明性語句。例如,處理器選擇、定例如,處理器選擇、定 義程序模式、定義數(shù)據(jù)、分配存儲區(qū)、指示程序結(jié)束等等。義程序模式、定義數(shù)據(jù)、分配存儲區(qū)、指示程序結(jié)束等等。 偽指令與具體的處理器類型無關(guān),但與匯編程序的版本有偽指令與具體的處理器類型無關(guān),但與匯編程序的版本有 關(guān)。關(guān)。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院3 2021-5-8 本章內(nèi)容提要本章內(nèi)容提要 匯編語言程序的開發(fā)匯編語言程序的開發(fā) 參數(shù)、變量、標號及相關(guān)偽操作參數(shù)、變量、標號及相關(guān)偽操作 程序段的定義及相關(guān)偽操作程序段的定義及相關(guān)偽操作 ibm-pc匯編

3、語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院4 2021-5-8 4.1 4.1 匯編語言程序的開發(fā)匯編語言程序的開發(fā) 匯編語言程序的語句格式匯編語言程序的語句格式 匯編程序功能匯編程序功能 匯編語言程序的程序格式匯編語言程序的程序格式 匯編語言程序的上機過程匯編語言程序的上機過程 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院5 2021-5-8 4.1.1 4.1.1 匯編程序功能匯編程序功能 匯編語言程序的建立及匯編過程匯編語言程序的建立及匯編過程 匯編程序的主要功能匯編程序的主要功能 常用的匯編程序常用的

4、匯編程序 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院6 2021-5-8 1. 1. 匯編語言程序的建立及匯編過程匯編語言程序的建立及匯編過程 在計算機上運行匯編語言程序的步驟是:在計算機上運行匯編語言程序的步驟是: 用用編輯程序編輯程序建立建立asmasm源文件源文件; 匯編語言程序的建立及匯編過程,匯編語言程序的建立及匯編過程,如圖如圖4.14.1所示所示。 用用masmmasm程序程序把把asmasm文件轉(zhuǎn)換成文件轉(zhuǎn)換成objobj文件文件; 用用linklink程序程序把把objobj文件轉(zhuǎn)換成文件轉(zhuǎn)換成exeexe文件文件; 用用d

5、osdos命令命令直接鍵入文件名就直接鍵入文件名就可執(zhí)行該程序可執(zhí)行該程序。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院7 2021-5-8 2. 2. 匯編程序的主要功能匯編程序的主要功能 檢查源程序。檢查源程序。 測出源程序中的語法錯誤,并給出出錯信息。測出源程序中的語法錯誤,并給出出錯信息。 產(chǎn)生源程序的目標程序,并可給出列表文件(同時列出匯編產(chǎn)生源程序的目標程序,并可給出列表文件(同時列出匯編 語言和機器語言的文件,稱為語言和機器語言的文件,稱為lstlst文件)。文件)。 展開宏指令。展開宏指令。 ibm-pc匯編語言程序設(shè)計 河南

6、師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院8 2021-5-8 3. 3. 常用的匯編程序常用的匯編程序 microsoft microsoft公司推出的宏匯編程序公司推出的宏匯編程序masmmasm(macro assemblermacro assembler);); borlandborland公司推出的公司推出的tasmtasm(turbo assemblerturbo assembler)。)。 本課程采用本課程采用masm6.11masm6.11。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院9 2021-5-8 4

7、.1.2 4.1.2 匯編語言程序的語句格式匯編語言程序的語句格式 匯編語言語句格式:匯編語言語句格式: 說明性語句說明性語句由偽指令構(gòu)成的語句,它通常指示匯編程序如由偽指令構(gòu)成的語句,它通常指示匯編程序如 何匯編源程序:何匯編源程序: 執(zhí)行性語句執(zhí)行性語句由硬指令構(gòu)成的語句,它通常對應(yīng)一條機器指由硬指令構(gòu)成的語句,它通常對應(yīng)一條機器指 令,出現(xiàn)在程序的代碼段中:令,出現(xiàn)在程序的代碼段中: namename operation operation operand operand ; comment ; comment 標號標號: : 硬指令助記符硬指令助記符 操作數(shù),操作數(shù)操作數(shù),操作數(shù);注釋

8、;注釋 名字名字 偽指令助記符偽指令助記符 參數(shù),參數(shù)參數(shù),參數(shù), ,;注釋;注釋 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院10 2021-5-8 1. 1. 名字(名字(namename)項)項 源程序中用下列字符來表示名字項(源程序中用下列字符來表示名字項(namename):): 注意:注意: 字母字母az 數(shù)字數(shù)字09 專用字符專用字符?,?, , , ,$ 名字不能以數(shù)字開頭。名字不能以數(shù)字開頭。 名字中如果用到名字中如果用到 ,則必須是第一個字符。,則必須是第一個字符。 匯編程序只識別名字的前匯編程序只識別名字的前3131個字符

9、。個字符。 默認情況下,匯編程序不區(qū)別標識符中的字母大小寫。默認情況下,匯編程序不區(qū)別標識符中的字母大小寫。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院11 2021-5-8 1. 1. 名字(名字(namename)項)項 name name可以是標號或變量。它們都用來表示本語句的符號地址,可以是標號或變量。它們都用來表示本語句的符號地址, 都是可有可無的,只有當需要用到符號地址來訪問該語句時,它才都是可有可無的,只有當需要用到符號地址來訪問該語句時,它才 需要出現(xiàn)。需要出現(xiàn)。 標號:標號: 在代碼段中定義,是反映硬指令位置(邏輯地址)的在

10、代碼段中定義,是反映硬指令位置(邏輯地址)的 標識符,后跟一個冒號分隔。標識符,后跟一個冒號分隔。 經(jīng)常在轉(zhuǎn)移指令或經(jīng)常在轉(zhuǎn)移指令或callcall指令的操作數(shù)字段出現(xiàn),用以指令的操作數(shù)字段出現(xiàn),用以 表示轉(zhuǎn)向地址。表示轉(zhuǎn)向地址。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院12 2021-5-8 1. 1. 名字(名字(namename)項)項 名字:名字: 標識符(標識符(identifieridentifier):): 每個標識符的定義是唯一的,還不能是匯編語言采用的保每個標識符的定義是唯一的,還不能是匯編語言采用的保 留字。留字。 是反

11、映偽指令位置(邏輯地址)和屬性的標識符,后是反映偽指令位置(邏輯地址)和屬性的標識符,后 跟空格或制表符分隔,沒有冒號。跟空格或制表符分隔,沒有冒號。 可用可用labellabel或或equequ偽操作來定義。偽操作來定義。 還可以作為過程名定義(第六章中介紹)。還可以作為過程名定義(第六章中介紹)。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院13 2021-5-8 2. 2. 保留字保留字 保留字(保留字(reserved wordreserved word)是匯編程序已經(jīng)利用的標識符,)是匯編程序已經(jīng)利用的標識符, 主要有:主要有: 硬指

12、令助記符硬指令助記符例如:例如:movmov、addadd 偽指令助記符偽指令助記符例如:例如:dbdb、equequ 操作符操作符例如:例如:offsetoffset、ptrptr 寄存器名寄存器名例如:例如:axax、cscs 預(yù)定義符號預(yù)定義符號例如:例如:datadata ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院14 2021-5-8 3. 3. 指令助記符指令助記符 硬指令助記符可以是任何一條處理器指令,也可以是一條硬指令助記符可以是任何一條處理器指令,也可以是一條 宏指令。宏指令。 偽指令助記符將在本章和下章學習。偽指令助記符將

13、在本章和下章學習。 前一章引入的定義字節(jié)數(shù)據(jù)和字符串的前一章引入的定義字節(jié)數(shù)據(jù)和字符串的dbdb就是偽指令。就是偽指令。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院15 2021-5-8 4. 4. 操作數(shù)與參數(shù)操作數(shù)與參數(shù) 處理器指令處理器指令的操作數(shù)可以是的操作數(shù)可以是立即數(shù)、寄存器和存儲單元立即數(shù)、寄存器和存儲單元。 偽指令偽指令的參數(shù)可以是的參數(shù)可以是常數(shù)、變量名、表達式等,可以有多常數(shù)、變量名、表達式等,可以有多 個,參數(shù)之間用逗號分隔個,參數(shù)之間用逗號分隔。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大

14、學計算機與信息技術(shù)學院16 2021-5-8 5. 5. 注釋(注釋(commentcomment)項)項 用來說明程序或語句的功能。用來說明程序或語句的功能。 匯編程序在翻譯源程序時將跳過該部分,不對它們做任何匯編程序在翻譯源程序時將跳過該部分,不對它們做任何 處理。處理。 ;為注釋的開始。為注釋的開始。 ;可以從一行的第一個字符開始,此時整行都是注釋,可以從一行的第一個字符開始,此時整行都是注釋, 常用來說明下面一段程序的功能。常用來說明下面一段程序的功能。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院17 2021-5-8 6. 6. 分

15、隔符分隔符 語句的語句的4 4個組成部分要用分隔符分開。個組成部分要用分隔符分開。 其他部分通常采用空格或制表符。其他部分通常采用空格或制表符。 標號后用冒號,注釋前用分號。標號后用冒號,注釋前用分號。 操作數(shù)之間和參數(shù)之間使用逗號分隔。操作數(shù)之間和參數(shù)之間使用逗號分隔。 多個空格和與一個制表符的作用相同。多個空格和與一個制表符的作用相同。 masmmasm支持續(xù)行符支持續(xù)行符 “ “”。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院18 2021-5-8 4.1.3 4.1.3 匯編語言程序的程序格式匯編語言程序的程序格式 完整的匯編語言源程

16、序由段組成。完整的匯編語言源程序由段組成。 一個匯編語言源程序可以包含若干個代碼段、數(shù)據(jù)段、附加段一個匯編語言源程序可以包含若干個代碼段、數(shù)據(jù)段、附加段 或堆棧段,段與段之間的順序可隨意排列。或堆棧段,段與段之間的順序可隨意排列。 需獨立運行的程序必須包含一個代碼段,并指示程序執(zhí)行的起需獨立運行的程序必須包含一個代碼段,并指示程序執(zhí)行的起 始點,一個程序只有一個起始點。始點,一個程序只有一個起始點。 所有的可執(zhí)行性語句必須位于某一個代碼段內(nèi),說明性語句可所有的可執(zhí)行性語句必須位于某一個代碼段內(nèi),說明性語句可 根據(jù)需要位于任一段內(nèi)。根據(jù)需要位于任一段內(nèi)。 通常,程序還需要一個堆棧段。通常,程序還

17、需要一個堆棧段。 匯編語言源程序段定義格式有兩種:匯編語言源程序段定義格式有兩種: 簡化段定義格式簡化段定義格式從從masm 5.0masm 5.0開始支持開始支持 完整段定義格式完整段定義格式masm 5.0masm 5.0以前就具有以前就具有 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院19 2021-5-8 4.1.3 4.1.3 匯編語言程序的程序格式匯編語言程序的程序格式 mainmainprocprocfarfar assumeassume cs: program , ds: datareacs: program , ds: dat

18、area start:start: push dspush ds sub ax , axsub ax , ax push axpush ax mov ax , datareamov ax , datarea mov dsmov ds , ax , ax retret mainmainendpendp 首先把首先把dsds的內(nèi)容和的內(nèi)容和0 0作為段地址和偏作為段地址和偏 移地址入棧,以便在程序結(jié)束時用移地址入棧,以便在程序結(jié)束時用 retret指令返回指令返回dosdos,這是一種工作方式。,這是一種工作方式。 movmov ax , 4c00h ax , 4c00h intint 21h 2

19、1h 如果在主程序開始時沒有這三條指令在如果在主程序開始時沒有這三條指令在 堆棧段建立返回信息,則在程序結(jié)束時堆棧段建立返回信息,則在程序結(jié)束時 就不能直接用就不能直接用retret返回指令,而應(yīng)該用返回指令,而應(yīng)該用 dosdos功能調(diào)用功能調(diào)用4ch4ch: ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院20 2021-5-8 4.1.4 4.1.4 匯編語言程序的上機過程匯編語言程序的上機過程 1.1.建立匯編語言的工作環(huán)境建立匯編語言的工作環(huán)境 2.2.建立建立asmasm文件;文件; 3.3.用用masmmasm程序產(chǎn)生程序產(chǎn)生objo

20、bj文件;文件; 4.4.用用linklink程序產(chǎn)生程序產(chǎn)生exeexe文件;文件; 5.5.程序的執(zhí)行。程序的執(zhí)行。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院21 2021-5-8 1. 1. 建立匯編語言的工作環(huán)境建立匯編語言的工作環(huán)境 為運行匯編語言程序至少要在磁盤上建立以下文件:為運行匯編語言程序至少要在磁盤上建立以下文件: 必要時,還可建立如必要時,還可建立如cref.execref.exe,exe2bin.exeexe2bin.exe等文件。等文件。 編輯程序,編輯程序,如如edit.exeedit.exe 匯編程序,匯編程序

21、,如如masm.exemasm.exe 連接程序,連接程序,如如link.exelink.exe 調(diào)試程序,調(diào)試程序,如如debug.comdebug.com ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院22 2021-5-8 2. 2. 建立建立asmasm文件文件 用編輯程序用編輯程序editedit在磁盤上建立如下的源程序在磁盤上建立如下的源程序ex_movs.asmex_movs.asm。 例例4.304.30 把把4040個字母個字母a a的字符串從源緩沖區(qū)傳送到目的緩沖區(qū)。的字符串從源緩沖區(qū)傳送到目的緩沖區(qū)。 ibm-pc匯編語言程

22、序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院23 2021-5-8 3. 3. 用用masmmasm程序產(chǎn)生程序產(chǎn)生objobj文件文件 用匯編程序?qū)υ闯绦蛭募R編,產(chǎn)生二進制的目標文件(用匯編程序?qū)υ闯绦蛭募R編,產(chǎn)生二進制的目標文件(.obj.obj文件文件 ),其操作與匯編程序回答如下:),其操作與匯編程序回答如下: cmasm ex_movscmasm ex_movs microsoft ( r ) macro assembler version 5.00microsoft ( r ) macro assembler version 5.00 copyrit

23、htcopyritht ( c ) microsoft corp 1981-1985, 1987 , all rights ( c ) microsoft corp 1981-1985, 1987 , all rights reserved.reserved. object filename ex_movs , objobject filename ex_movs , obj : : source listing nul. lst :ex_movssource listing nul. lst :ex_movs cross-reference nul . crf :ex_movscross-r

24、eference nul . crf :ex_movs 51646+447778 bytes symbol space free51646+447778 bytes symbol space free 0 warning errors0 warning errors 0 severe errors0 severe errors objobj文件文件 列表文件(列表文件(.lst.lst) 段名表和符號表文件段名表和符號表文件 (.crf.crf文件)文件) ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院24 2021-5-8 3. 3. 用用ma

25、smmasm程序產(chǎn)生程序產(chǎn)生objobj文件文件 例例4.304.30的列表文件的列表文件ex_movs.lstex_movs.lst。 這個文件同時列出了源程序和機器語言程序清單,并給出符號表,這個文件同時列出了源程序和機器語言程序清單,并給出符號表, 方便程序調(diào)試。方便程序調(diào)試。 這個文件可有可無,如果不需要,則直接在這個文件可有可無,如果不需要,則直接在 nul . lst : nul . lst :后敲后敲 回車;否則,可回答文件名,這里是回車;否則,可回答文件名,這里是ex_movsex_movs。 程序請看教材程序請看教材p148-151p148-151。 ibm-pc匯編語言程序

26、設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院25 2021-5-8 4. 4. 用用linklink程序產(chǎn)生程序產(chǎn)生exeexe文件文件 obj obj文件不是可執(zhí)行文件,還需要用連接程序文件不是可執(zhí)行文件,還需要用連接程序linklink把把objobj文件轉(zhuǎn)換為文件轉(zhuǎn)換為 可執(zhí)行的可執(zhí)行的exeexe文件。文件。 clink ex_movsclink ex_movs microsoft ( r ) macro assembler version 5.00microsoft ( r ) macro assembler version 5.00 copyrithtco

27、pyritht ( c ) microsoft corp 1981-1985, 1987 , all rights ( c ) microsoft corp 1981-1985, 1987 , all rights reserved.reserved. run file ex_movs.exe :run file ex_movs.exe : list file nul. map :ex_movslist file nul. map :ex_movs libraries. lib:libraries. lib: link:link:warning l4021:no stack segmentwa

28、rning l4021:no stack segment 如果一個程序是由多個模塊組成時,也要通過連接程序如果一個程序是由多個模塊組成時,也要通過連接程序linklink把它把它 們連接在一起,操作方法及機器回答如下:們連接在一起,操作方法及機器回答如下: exeexe文件文件 列表文件(列表文件(.map.map) 庫文件庫文件liblib ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院26 2021-5-8 4. 4. 用用linklink程序產(chǎn)生程序產(chǎn)生exeexe文件文件 linklink程序有兩個輸入文件程序有兩個輸入文件objobj和

29、和liblib。 linklink程序有兩個輸出文件程序有兩個輸出文件exeexe和和mapmap。 objobj是需要連接的目標文件;是需要連接的目標文件; liblib是程序中要用到的庫文件,如無需要,則直接敲回車。是程序中要用到的庫文件,如無需要,則直接敲回車。 exe exe是最后得到的可執(zhí)行文件;直接敲回車。是最后得到的可執(zhí)行文件;直接敲回車。 mapmap是連接程序的列表文件,又稱為連接映像(是連接程序的列表文件,又稱為連接映像(link maplink map),它),它 給處每個段在存儲器中的分配情況。給處每個段在存儲器中的分配情況。 例例4.304.30的連接映像的連接映像e

30、x_movs.mapex_movs.map文件文件 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院27 2021-5-8 5. 5. 程序的執(zhí)行程序的執(zhí)行 在建立了在建立了exeexe文件后,就可以直接從文件后,就可以直接從dosdos執(zhí)行程序,如下所示:執(zhí)行程序,如下所示: 如果用戶程序中,有在終端顯示結(jié)果的語句,則程序運行結(jié)束,可如果用戶程序中,有在終端顯示結(jié)果的語句,則程序運行結(jié)束,可 在終端看到運行結(jié)果。在終端看到運行結(jié)果。 程序運行結(jié)束并返回程序運行結(jié)束并返回dosdos。 ex_movs ex_movs程序沒有顯示結(jié)果的語句,則可通過

31、調(diào)試程序程序沒有顯示結(jié)果的語句,則可通過調(diào)試程序debugdebug的的d d命命 令來檢查附加段是否已得到了從源緩沖區(qū)傳來的令來檢查附加段是否已得到了從源緩沖區(qū)傳來的4040個字母個字母a a。 cex_movscex_movs cc ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院28 2021-5-8 4.2 4.2 參數(shù)、變量、標號及相關(guān)偽操作參數(shù)、變量、標號及相關(guān)偽操作 數(shù)值型參數(shù)數(shù)值型參數(shù) 數(shù)據(jù)定義及分配偽操作數(shù)據(jù)定義及分配偽操作 地址計數(shù)器及對準偽操作地址計數(shù)器及對準偽操作 變量和標號的屬性變量和標號的屬性 ibm-pc匯編語言程序設(shè)

32、計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院29 2021-5-8 4.2.1 4.2.1 數(shù)值型參數(shù)數(shù)值型參數(shù) 參數(shù)是指令的操作對象(在學習硬指令時被稱為操作數(shù)),由參數(shù)是指令的操作對象(在學習硬指令時被稱為操作數(shù)),由 一個或多個表達式組成,參數(shù)之間用逗號分隔。一個或多個表達式組成,參數(shù)之間用逗號分隔。 參數(shù)根據(jù)指令不同可以沒有,可以有參數(shù)根據(jù)指令不同可以沒有,可以有1 1個、個、2 2個或多個。個或多個。 匯編語言程序中,匯編語言程序中,參數(shù)可以是常數(shù)、寄存器、標號、變量或由參數(shù)可以是常數(shù)、寄存器、標號、變量或由 表達式組成。表達式組成。 指令參數(shù)有數(shù)值型,它的主

33、要形式是常數(shù)和數(shù)值表達式。指令參數(shù)有數(shù)值型,它的主要形式是常數(shù)和數(shù)值表達式。 硬指令的操作數(shù)有立即數(shù);立即數(shù)就要用數(shù)值型參數(shù)表達。硬指令的操作數(shù)有立即數(shù);立即數(shù)就要用數(shù)值型參數(shù)表達。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院30 2021-5-8 4.2.1 4.2.1 數(shù)值型參數(shù)數(shù)值型參數(shù) 常數(shù)常數(shù) 數(shù)值型表達式數(shù)值型表達式 運算符的優(yōu)先級運算符的優(yōu)先級 地址型參數(shù)地址型參數(shù) ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院31 2021-5-8 1.1.常數(shù)常數(shù) 常數(shù)(常量)表示一個固定的數(shù)

34、值。常數(shù)(常量)表示一個固定的數(shù)值。 它又分成多種形式:它又分成多種形式: 十進制常數(shù)十進制常數(shù) 表達式賦值偽操作表達式賦值偽操作equequ 十六進制常數(shù)十六進制常數(shù) 二進制常數(shù)二進制常數(shù)字符串常數(shù)字符串常數(shù) 符號常數(shù)符號常數(shù) 基數(shù)控制偽操作基數(shù)控制偽操作 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院32 2021-5-8 (1 1)十進制常數(shù))十進制常數(shù) 由由0 0 9 9數(shù)字組成,以字母數(shù)字組成,以字母d d或或d d結(jié)尾。結(jié)尾。 缺省情況下,后綴缺省情況下,后綴d d或或d d可以省略??梢允÷?。 匯編語言大小寫不敏感,匯編語言大小寫不

35、敏感,d d和和d d通用。通用。 例如:例如:100100、255d255d ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院33 2021-5-8 (2 2)十六進制常數(shù))十六進制常數(shù) 由由0 09 9、a af f組成,以字母組成,以字母h h或或h h結(jié)尾。結(jié)尾。 以字母以字母a af f開頭的十六進制數(shù),前面要用開頭的十六進制數(shù),前面要用0 0表達,以避免與其他表達,以避免與其他 符號混淆。符號混淆。 匯編語言大小寫不敏感,匯編語言大小寫不敏感, h h和和h h 通用通用 例如:例如:64h64h、0ffh0ffh、0b800h0b80

36、0h ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院34 2021-5-8 (3 3)二進制常數(shù))二進制常數(shù) 由由0 0或或1 1兩個數(shù)字組成,以字母兩個數(shù)字組成,以字母b b或或b b結(jié)尾。結(jié)尾。 匯編語言大小寫不敏感,匯編語言大小寫不敏感,b b和和b b通用。通用。 例如:例如:01101100b01101100b ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院35 2021-5-8 (4 4)八進制常數(shù))八進制常數(shù) 由由0 0 7 7數(shù)字組成,以字母數(shù)字組成,以字母q q或或q q結(jié)尾。結(jié)尾

37、。 匯編語言大小寫不敏感,匯編語言大小寫不敏感,q q和和 q q 通用。通用。 例如:例如:144q144q 各種進制的數(shù)據(jù)以后綴字母區(qū)分,默認不加后綴字母的是十進制各種進制的數(shù)據(jù)以后綴字母區(qū)分,默認不加后綴字母的是十進制 數(shù)。數(shù)。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院36 2021-5-8 (5 5)基數(shù)控制偽操作)基數(shù)控制偽操作 masmmasm提供基數(shù)控制提供基數(shù)控制.radix.radix偽指令可以改變默認進制,其格式是:偽指令可以改變默認進制,其格式是: .radix n .radix n 其中,其中,n n用來表示基數(shù)值(

38、用十進制數(shù)表示)。用來表示基數(shù)值(用十進制數(shù)表示)。 例如:例如: movmovbx , 0ffhbx , 0ffh.radix.radix 1616 與與 mov mov bx , 178bx , 178movmovbx , 0ffhbx , 0ffh movmovbx , 178dbx , 178d 是等價的。是等價的。 .radix 16.radix 16把基數(shù)定位十六進制后,把基數(shù)定位十六進制后, 十進制數(shù)后面都應(yīng)跟字母十進制數(shù)后面都應(yīng)跟字母d d。 如果某個十六進制數(shù)的末字符為如果某個十六進制數(shù)的末字符為d d, 則應(yīng)在其后跟字母則應(yīng)在其后跟字母h h,以免與十進,以免與十進 制數(shù)發(fā)

39、生混淆。制數(shù)發(fā)生混淆。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院37 2021-5-8 (6 6)字符串常數(shù))字符串常數(shù) 用單引號或雙引號括起來的單個字符或多個字符,其數(shù)值是每個用單引號或雙引號括起來的單個字符或多個字符,其數(shù)值是每個 字符對應(yīng)的字符對應(yīng)的asciiascii碼的值。碼的值。 例如:例如: d = 64hd = 64h ab= 4142hab= 4142h hello, everybody !hello, everybody ! ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院3

40、8 2021-5-8 (7 7)符號常數(shù))符號常數(shù) 利用一個標識符表達的一個數(shù)值。利用一個標識符表達的一個數(shù)值。 masmmasm提供等價機制,用于常量定義。提供等價機制,用于常量定義。 符號定義偽指令:符號定義偽指令: 常數(shù)若使用有意義的符號名來表示,可以提高程序的可讀性,常數(shù)若使用有意義的符號名來表示,可以提高程序的可讀性, 同時更具有通用性。同時更具有通用性。 等價等價equequ偽指令偽指令 等號等號= =偽指令偽指令 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院39 2021-5-8 (8 8)表達式賦值偽操作)表達式賦值偽操作equ

41、equ 符號定義偽指令:用于常量定義,利用一個標識符表達的一個數(shù)值。符號定義偽指令:用于常量定義,利用一個標識符表達的一個數(shù)值。 等價等價equequ偽指令:偽指令:expression_nameexpression_name equ expression equ expression 符號名符號名 equ equ 數(shù)值表達式數(shù)值表達式 符號名符號名 equ equ 其中符號名不允許重復(fù)定義。其中符號名不允許重復(fù)定義。 等號等號= =偽指令偽指令 符號名符號名 = = 數(shù)值表達式數(shù)值表達式 符號名允許重復(fù)定義。符號名允許重復(fù)定義。 常數(shù)若使用有意義的符號名來表示,可以提高程序的可讀性,同時常數(shù)

42、若使用有意義的符號名來表示,可以提高程序的可讀性,同時 更具有通用性。更具有通用性。 二者區(qū)別二者區(qū)別 示例示例2 2 示例示例1 1 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院40 2021-5-8 2. 2. 數(shù)值型表達式數(shù)值型表達式 數(shù)值表達式一般是指由運算符連接的各種常數(shù)所構(gòu)成的表達式。數(shù)值表達式一般是指由運算符連接的各種常數(shù)所構(gòu)成的表達式。 masmmasm對除偽指令外各種匯編時處理的指令統(tǒng)稱為操作符對除偽指令外各種匯編時處理的指令統(tǒng)稱為操作符 (operatoroperator)。)。 程序運行之前,就已經(jīng)計算出了表達式;所以,程

43、序運行速度沒程序運行之前,就已經(jīng)計算出了表達式;所以,程序運行速度沒 有變慢,但增強程序的可讀性。有變慢,但增強程序的可讀性。 匯編程序在匯編過程中計算表達式,最終得到一個數(shù)值。匯編程序在匯編過程中計算表達式,最終得到一個數(shù)值。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院41 2021-5-8 運算符運算符 算術(shù)運算符算術(shù)運算符 + - + - * * / mod / mod 邏輯運算符邏輯運算符 and or xor notand or xor not 移位運算符移位運算符 shl shrshl shr 關(guān)系運算符關(guān)系運算符 eq ne g

44、t lt ge leeq ne gt lt ge le 高低分離符高低分離符 high low highword lowwordhigh low highword lowword ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院42 2021-5-8 (1 1)算術(shù)運算符)算術(shù)運算符 實現(xiàn)加、減、乘、除、取余的算術(shù)運算實現(xiàn)加、減、乘、除、取余的算術(shù)運算 movmov ax , 3 ax , 3 * * 4 + 5 4 + 5; ;等價于等價于 movmov ax,17 ax,17 其中其中modmod也稱為取模,它產(chǎn)生除法之后的余數(shù),如也稱為取模,

45、它產(chǎn)生除法之后的余數(shù),如 19 mod 7 = 519 mod 7 = 5 加加+ +和減和減- -運算符還可以用于地址表達式。運算符還可以用于地址表達式。 示例示例1 1 除加、減外,其他運算符的參數(shù)必須是整數(shù)。除加、減外,其他運算符的參數(shù)必須是整數(shù)。 兩個地址相乘、相除是無意義的;兩個地址相乘、相除是無意義的; 兩個不同段的地址相加也是無意義的。兩個不同段的地址相加也是無意義的。 經(jīng)常使用的是地址經(jīng)常使用的是地址數(shù)字量,它是有意義的。數(shù)字量,它是有意義的。 示例示例2 2 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院43 2021-5-8

46、(2 2)邏輯運算符)邏輯運算符 實現(xiàn)按位相與、相或、異或、求反的邏輯運算。實現(xiàn)按位相與、相或、異或、求反的邏輯運算。 or al , 03h and 45hor al , 03h and 45h ; ; 等價于等價于 or al , 01hor al , 01h 示例示例 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院44 2021-5-8 (3 3)移位運算符)移位運算符 實現(xiàn)對數(shù)值的左移、右移的邏輯操作;移入低位或高位的是實現(xiàn)對數(shù)值的左移、右移的邏輯操作;移入低位或高位的是0 0。 格式為:格式為: 數(shù)值表達式數(shù)值表達式 shl/shr s

47、hl/shr 移位次數(shù)移位次數(shù) 若移位次數(shù)大于若移位次數(shù)大于1515,則結(jié)果為,則結(jié)果為0 0。 例如:例如: movmov al , 0101b shl (2 al , 0101b shl (2* *2)2) ; ;等價于等價于 movmov al,01010000bal,01010000b ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院45 2021-5-8 (4 4)關(guān)系運算符)關(guān)系運算符 用于比較和測試符號數(shù)值。用于比較和測試符號數(shù)值。 關(guān)系運算符的兩個操作數(shù)必須是數(shù)字,或是同一段內(nèi)的兩個存關(guān)系運算符的兩個操作數(shù)必須是數(shù)字,或是同一段內(nèi)的

48、兩個存 儲器地址。儲器地址。 masmmasm用用0ffffh0ffffh(補碼(補碼 -1-1)表示條件為真。)表示條件為真。 masmmasm用用0000h0000h表示條件為假。表示條件為假。 示例示例 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院46 2021-5-8 (5 5)高低分離符)高低分離符 取數(shù)值的高半部分或低半部分。取數(shù)值的高半部分或低半部分。 high high、lowlow字節(jié)分離符:從一個字數(shù)值或符號常量中得到高、字節(jié)分離符:從一個字數(shù)值或符號常量中得到高、 低字節(jié)。低字節(jié)。 highword highword、lo

49、wwordlowword字分離符:從字分離符:從masm 6.0masm 6.0引入的,取一個符引入的,取一個符 號常量(不能是其他常數(shù))的高字或低字部分。號常量(不能是其他常數(shù))的高字或低字部分。 示例示例 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院47 2021-5-8 3.3.運算符的優(yōu)先級運算符的優(yōu)先級 1 1() () length size width mask length size width mask 2 2ptr offset seg tpye this :ptr offset seg tpye this : 3 3hig

50、e lowhige low 4 4* * / mod shl shr / mod shl shr 5 5+ -+ - 6 6eq ne gt lt ge leeq ne gt lt ge le 7 7notnot 8 8andand 9 9or xoror xor 1010shortshort 建議采用圓括號建議采用圓括號“()()” 顯式表達,它可以極大顯式表達,它可以極大 地提高程序的可閱讀性。地提高程序的可閱讀性。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院48 2021-5-8 4.4.地址型參數(shù)地址型參數(shù) 匯編語言程序中,指令參數(shù)還

51、有地址型,它的主要形式是標匯編語言程序中,指令參數(shù)還有地址型,它的主要形式是標 號和名字(變量名、段名、過程名等)。號和名字(變量名、段名、過程名等)。 硬指令的操作數(shù)有存儲單元;存儲單元就應(yīng)該用地址型參數(shù)硬指令的操作數(shù)有存儲單元;存儲單元就應(yīng)該用地址型參數(shù) (存儲器操作數(shù))表達。(存儲器操作數(shù))表達。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院49 2021-5-8 4.2.2 4.2.2 數(shù)據(jù)定義及存儲器分配偽操作數(shù)據(jù)定義及存儲器分配偽操作 該類偽操作又稱變量定義偽指令。該類偽操作又稱變量定義偽指令。 變量定義(變量定義(definede

52、fine)偽指令為變量申請固定長度的存儲空間,)偽指令為變量申請固定長度的存儲空間, 并可同時將相應(yīng)的存儲單元初始化。并可同時將相應(yīng)的存儲單元初始化。 變量名變量名 偽指令助記符偽指令助記符 初值表初值表 格式:格式: variable mnemonic operand , variable mnemonic operand , , operand ;commnet , operand ;commnet ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院50 2021-5-8 變量名(變量名(variablevariable) 變量名為用戶自定義標識

53、符,變量名為用戶自定義標識符,表示初值表首元素的邏輯地址;表示初值表首元素的邏輯地址; 用這個符號表示地址,常稱為符號地址。用這個符號表示地址,常稱為符號地址。 變量名可以沒有。這種情況,匯編程序?qū)⒅苯訛槌踔当矸峙渥兞棵梢詻]有。這種情況,匯編程序?qū)⒅苯訛槌踔当矸峙?空間,無符號地址??臻g,無符號地址。 設(shè)置變量名是為了方便存取它指示的存儲單元。設(shè)置變量名是為了方便存取它指示的存儲單元。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院51 2021-5-8 初值表初值表 初值表是用逗號分隔的參數(shù)。初值表是用逗號分隔的參數(shù)。 主要由數(shù)值常數(shù)、表達式

54、或?、主要由數(shù)值常數(shù)、表達式或?、dupdup組成組成 ?表示初值不確定,即未賦初值;表示初值不確定,即未賦初值; dupdup表示重復(fù)初值。表示重復(fù)初值。 dupdup的格式為:的格式為: 重復(fù)次數(shù)重復(fù)次數(shù) dup(dup(重復(fù)參數(shù)重復(fù)參數(shù)) ) repeat_countrepeat_count dup dup (operand , operand , , opreand , opreand) 其中其中repeat_countrepeat_count可以是一個表達式,它的值應(yīng)該是一個正整可以是一個表達式,它的值應(yīng)該是一個正整 數(shù),用來指定括號中的操作數(shù)的重復(fù)次數(shù)。數(shù),用來指定括號中的操作數(shù)的

55、重復(fù)次數(shù)。 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院52 2021-5-8 變量定義偽指令助記符(變量定義偽指令助記符(mnemonicmnemonic) 變量定義偽指令根據(jù)申請的主存空間單位分類,說明所定義變量定義偽指令根據(jù)申請的主存空間單位分類,說明所定義 的數(shù)據(jù)類型。的數(shù)據(jù)類型。 dbdb定義字節(jié)偽指令定義字節(jié)偽指令 dwdw定義字偽指令定義字偽指令 dddd定義雙字偽指令定義雙字偽指令 dfdf定義定義3 3字偽指令字偽指令 dqdq定義定義4 4字偽指令字偽指令 dtdt定義定義1010字節(jié)偽指令字節(jié)偽指令 這些偽操作可以把其后跟

56、著的數(shù)據(jù)存入指定的存儲單元,形成這些偽操作可以把其后跟著的數(shù)據(jù)存入指定的存儲單元,形成 初始化數(shù)據(jù);或者只分配存儲空間而并不存入確定的數(shù)值,形成未初始化數(shù)據(jù);或者只分配存儲空間而并不存入確定的數(shù)值,形成未 初始化數(shù)據(jù)。初始化數(shù)據(jù)。 可存儲由可存儲由1616位段地址及位段地址及3232 位偏移地址組成的遠地址指針。位偏移地址組成的遠地址指針。 可存儲地址可存儲地址 形成壓縮形成壓縮bcdbcd碼碼 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院53 2021-5-8 1. 1. 定義字節(jié)單元偽指令定義字節(jié)單元偽指令dbdb db db偽指令用于分配

57、一個或多個字節(jié)單元,并可以將它們初始化為偽指令用于分配一個或多個字節(jié)單元,并可以將它們初始化為 指定值。指定值。 初值表中每個數(shù)據(jù)一定是字節(jié)量(初值表中每個數(shù)據(jù)一定是字節(jié)量(bytebyte),存放一個),存放一個8 8位數(shù)據(jù):位數(shù)據(jù): 可以是可以是0 0255255的無符號數(shù)的無符號數(shù) 或是或是128128127127帶符號數(shù)帶符號數(shù) 也可以是字符串常數(shù)也可以是字符串常數(shù) 示例示例1 1 示例示例2 2 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院54 2021-5-8 2. 2. 定義字單元偽指令定義字單元偽指令dwdw dwdw偽指令用于

58、分配一個或多個字單元,并可以將它們初始化為指偽指令用于分配一個或多個字單元,并可以將它們初始化為指 定值。定值。 初值表中每個數(shù)據(jù)一定是字量(初值表中每個數(shù)據(jù)一定是字量(wordword),一個字單元可用于),一個字單元可用于 存放任何存放任何1616位數(shù)據(jù):位數(shù)據(jù): 一個段地址一個段地址 一個偏移地址一個偏移地址 兩個字符兩個字符 0 06553565535之間的無符號數(shù)之間的無符號數(shù) 32768327683276732767之間的帶符號數(shù)之間的帶符號數(shù) ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院55 2021-5-8 3. 3. 定義雙字

59、單元偽指令定義雙字單元偽指令dddd dd dd偽指令用于分配一個或多個雙字單元,并可以將它們初始化偽指令用于分配一個或多個雙字單元,并可以將它們初始化 為指定值。為指定值。 初值表中每個數(shù)據(jù)是一個初值表中每個數(shù)據(jù)是一個3232位的雙字量(位的雙字量(double worddouble word):): 可以是有符號或無符號的可以是有符號或無符號的3232位整數(shù)位整數(shù) 也可以用來表達也可以用來表達1616位段地址(高位字)和位段地址(高位字)和1616位的偏移位的偏移 地址(低位字)的遠指針地址(低位字)的遠指針 varddvardddd dd 0,?,12345678h0,?,1234567

60、8h farpointfarpointdd dd 00400078h00400078h 示例示例1 1示例示例2 2示例示例3 3示例示例4 4 ibm-pc匯編語言程序設(shè)計 河南師范大學計算機與信息技術(shù)學院河南師范大學計算機與信息技術(shù)學院56 2021-5-8 4. 4. 其他數(shù)據(jù)單元定義偽指令其他數(shù)據(jù)單元定義偽指令 定義定義3 3字偽指令字偽指令dfdf用于為一個或多個用于為一個或多個6 6字節(jié)變量分配空間及初字節(jié)變量分配空間及初 始化。始化。 6 6字節(jié)常用在字節(jié)常用在3232位位cpucpu中表示一個中表示一個4848位遠指針(位遠指針(1616位位 段選擇器段選擇器:32:32位偏移

溫馨提示

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

最新文檔

評論

0/150

提交評論