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