資源描述:
《微機原理與接口》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第四章匯編語言程序設(shè)計4.1匯編語言的語句格式4.2MASM中的表達式4.3偽指令語句4.4常用DOS系統(tǒng)功能調(diào)用和BIOS中斷調(diào)用4.5程序設(shè)計方法第四章匯編語言程序設(shè)計匯編語言:用指令的助記符、標(biāo)號、偽指令等書寫程序的語言。匯編語言源程序:用匯編語言書寫的程序。匯編:把匯編語言源程序翻譯成在機器上能執(zhí)行的機器語言程序(稱目標(biāo)程序)的過程。匯編程序:完成匯編過程的程序。匯編語言是面向計算機硬件的語言,和機器密切相關(guān),采用不同CPU的計算機,通常有不同的匯編語言。第四章匯編語言程序設(shè)計一個匯編語言實例:DATASEGMENTBLOCKDB
2、43H,0ABH,…PDATADB20DUP(?)NDATADB20DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AXLEASI,BLOCKLEADI,PDATALEABX,NDATACLDMOVCX,PDATA-BLOCKGOON:LODSBTESTAL,80HJNZMINUSSTOSBJMPAGAINMINUS:XCHGBX,DISTOSBXCHGBX,DIAGAIN:LOOPGOONCODE
3、ENDSENDSTART4.1匯編語言的語句格式[名字]操作碼/偽指令[操作數(shù)][;注釋]各部分之間至少要用一個空格作為間隔,其中名字是一個符號,它可以是標(biāo)號或變量,由英文字母、數(shù)字及專用字符組成,最大長度不能超過31個,且不能由數(shù)字打頭,不能用保留字(如寄存器名,指令助記符,偽指令)。操作碼:是一個助記符,它可以是指令、偽指令(又叫偽操作)或宏指令。操作數(shù):參加本指令運算的數(shù)據(jù)??梢允浅?shù)、變量、標(biāo)號(統(tǒng)稱數(shù)據(jù)項P127)、寄存器名、表達式。4.1匯編語言的語句格式[名字]操作碼/偽指令[操作數(shù)][;注釋]匯編語言源程序中的語句主要有兩
4、種類型:指令性語句(P127):其格式為指示性語句(P127),又叫偽指令,其格式為:指令性語句是計算機可執(zhí)行的。而指示性語句不能執(zhí)行,只用來定義變量,分配存儲單元,指示程序開始和結(jié)束等,為計算機提供必要的信息。這兩種語句的差別:匯編時能否形成對應(yīng)的機器碼。[標(biāo)號:][前綴]指令助記符[操作數(shù)][;注釋]變量偽指令指示符操作數(shù)[,,];注釋表達式是常數(shù)、寄存器、標(biāo)號、變量與一些運算符組合的序列。4.2MASM中的表達式匯編時按一定的優(yōu)先規(guī)則對表達式進行計算后可得到一個數(shù)值或一個地址。算術(shù)運算符(ArithmeticOperators)邏輯
5、運算符(LogicalOperators)關(guān)系運算符(RelationalOperators)數(shù)值返回運算符(Value-ReturningOperators)修改屬性運算符(ModifingattributeOperators)其它運算符(OtherOperators)教材P129表4-1給出了MASM中可采用的運算符號。一、算術(shù)運算符有+、-、*、/,MOD,SHL、SHR。其中MOD表示除法運算后得到的余數(shù)。例:19/7的商是2;19MOD7則結(jié)果為5(余數(shù))算術(shù)運算符可以用于數(shù)字表達式。例:MOVAL,2*7匯編后為B0H,0EH
6、算術(shù)運算符也可以用于地址表達式,但對地址運算的結(jié)果應(yīng)有明確的物理意義。例如,兩個地址的乘或除無意義,而加或減則可以。例:LEASI,SUM+3表示變量SUM的地址加上3得到的和作為新的存儲器地址。AND、OR、XOR和NOT,它們只能用于數(shù)字表達式中。二、邏輯運算符例:MOVCL,36HAND0FH經(jīng)匯編后結(jié)果等同于:MOVCL,06H這些邏輯運算符也是8086/8088的指令助記符,但不會造成混亂,前者在匯編時進行,而后者在指令執(zhí)行時進行的。例:ANDDX,PORT_VARAND0FEH后一個邏輯運算符AND在匯編時進行,若PORT_V
7、AR為81H,則匯編后表達式算出為80H.執(zhí)行前一個指令助記符AND時,將(DX)與80H相與,結(jié)果在DX中。共有6個:EQ、NE、LT、LE、GT、GE。三、關(guān)系運算符關(guān)系運算符的兩個操作數(shù)必須都是數(shù)字或者是同一段內(nèi)的兩個存儲器地址。例:MOVBX,PORT_VALGE5若PORT_VAL的值大于等于5,則匯編后結(jié)果等效為:MOVBX,0FFFFH若PORT_VAL的值小于5,則匯編后結(jié)果等效為:MOVBX,0關(guān)系為真,結(jié)果為0FFFFH,或0FFH關(guān)系為假,結(jié)果為0它可以把存儲器一些特征作為數(shù)值送回。四、數(shù)值返回運算符(分析運算符)O
8、FFSET、SEG、TYPE、LENGTH、SIZE。1.OFFSET注意與MOVSI,STRI1的差別。但它與LEASI,STRI1類似。SEG運算符用來取存儲單元的段值。例:MOVAX,S