資源描述:
《偽指令及匯編程序結(jié)構(gòu)和上機(jī)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、微機(jī)原理與匯編語(yǔ)言程序設(shè)計(jì)第五講偽指令及匯編程序結(jié)構(gòu)陳梅主講華東交通大學(xué)信息工程學(xué)院本講教學(xué)重點(diǎn)及要求匯編語(yǔ)言及匯編程序的基本概念匯編語(yǔ)言的書(shū)寫(xiě)規(guī)則、語(yǔ)句格式及程序結(jié)構(gòu)偽指令的格式、功能及應(yīng)用上機(jī)調(diào)試過(guò)程匯編程序和匯編語(yǔ)言源程序是兩回事。匯編程序是將匯編語(yǔ)言源程序翻譯成機(jī)器能夠識(shí)別和執(zhí)行的目標(biāo)程序的一種系統(tǒng)程序。編輯程序匯編程序program.asmprogram.obj(匯編語(yǔ)言源程序)連接程序匯編程序的主要功能:program.exe?檢查源程序,給出出錯(cuò)信息?產(chǎn)生目標(biāo)文件(.obj)和列表文件(.lst)?展開(kāi)宏指令匯編語(yǔ)言語(yǔ)句種類(lèi)1)指令語(yǔ)句:是計(jì)算機(jī)可以執(zhí)行的,它與機(jī)器指令相對(duì)
2、應(yīng),能夠產(chǎn)生目標(biāo)代碼。2)偽指令語(yǔ)句:不是在程序運(yùn)行期間由計(jì)算機(jī)來(lái)執(zhí)行,而是在匯編程序?qū)υ闯绦騾R編期間由匯編程序處理的操作,不能產(chǎn)生目標(biāo)代碼。3)宏指令語(yǔ)句:是匯編語(yǔ)言為簡(jiǎn)化程序設(shè)計(jì),使用一條宏指令代替一段程序,凡是在程序中需要使用該程序的地方,均可使用宏指令語(yǔ)句來(lái)代替。匯編語(yǔ)言語(yǔ)句格式源程序的每條語(yǔ)句可表示為:[名字]操作碼項(xiàng)[操作數(shù)項(xiàng)][;注釋]標(biāo)號(hào)指令常數(shù)說(shuō)明程序或語(yǔ)句的功能變量偽指令寄存器宏指令標(biāo)號(hào)變量表達(dá)式匯編語(yǔ)言語(yǔ)句格——名字項(xiàng)1、組成名字的字符及規(guī)則:由下列字符組成的,由字母打頭的字符串.字母A~Z和a~z數(shù)字0~9專(zhuān)用字符?.@-$除數(shù)字0~9外其他字符都可以放在名字項(xiàng)首
3、位;專(zhuān)用字符'.'只能出現(xiàn)在名字的第一位置;名字最長(zhǎng)由31個(gè)字符組成.2、標(biāo)號(hào)和變量的區(qū)別標(biāo)號(hào)是某條指令所存放單元的符號(hào)地址。變量是某操作數(shù)所存放單元的符號(hào)地址。指令語(yǔ)句中的名字采用標(biāo)號(hào),可以任選,可以不寫(xiě);指令語(yǔ)句的標(biāo)號(hào)出現(xiàn)在代碼段,后面跟冒號(hào)?°:?±。偽指令語(yǔ)句中的名字可以是變量名、段名、過(guò)程名、符號(hào)名等,可以是規(guī)定必寫(xiě)、任選或省略;偽指令語(yǔ)句中的名字之后不要用冒號(hào)?°:?±。一個(gè)標(biāo)號(hào)與一條指令的地址相聯(lián)系,因此,標(biāo)號(hào)可以作為JMP和CALL指令的操作數(shù).例如:LAB1:MOVAX,2050H這是指令語(yǔ)句,標(biāo)號(hào)LAB1是名字,后跟?°:?±,LAB1也是這條指令第一字節(jié)的符號(hào)地址。
4、VAR1DW1200H這是偽指令,變量VAR1是名字,后不跟?°:?±,VAR1也是符號(hào)地址。同一程序中,同樣的標(biāo)號(hào)或變量的定義只允許出現(xiàn)一次.3、標(biāo)號(hào)和變量的屬性??段段屬屬性性定義了標(biāo)號(hào)和變量的段起始地址,其值必須在一個(gè)段寄存器中。?偏偏移移屬屬性性表示標(biāo)號(hào)和變量相距段起始地址的字節(jié)數(shù),是一個(gè)16位無(wú)符號(hào)數(shù)。??類(lèi)類(lèi)型型屬屬性性?對(duì)于標(biāo)號(hào):指出該標(biāo)號(hào)是在本段內(nèi)引用還是在其他段中引用.本段內(nèi)引用為NEAR,段外引用為FAR?對(duì)于變量:說(shuō)明變量有幾個(gè)字節(jié)長(zhǎng)度。這一屬性由偽指令DB、DW、DD等確定。匯編語(yǔ)言語(yǔ)句格——操作碼項(xiàng)1)指令:指CPU指令系統(tǒng)的指令,匯編程序?qū)⑵浞g成對(duì)應(yīng)的機(jī)器語(yǔ)
5、言指令。2)偽指令:不能翻譯成對(duì)應(yīng)的機(jī)器碼,只在匯編過(guò)程中完成相應(yīng)的控制操作。3)宏指令:有限的一組指令定義的代號(hào),匯編時(shí)將根據(jù)其定義展開(kāi)成相應(yīng)的指令。匯編語(yǔ)言語(yǔ)句格——操作數(shù)項(xiàng)v常數(shù)指操作數(shù)位置出現(xiàn)的數(shù)值數(shù)據(jù)或字符數(shù)據(jù),其值在匯編時(shí)已完全確定,程序運(yùn)行過(guò)程中不會(huì)發(fā)生變化。二進(jìn)制(以B結(jié)尾)、八進(jìn)制(以O(shè)結(jié)尾)十進(jìn)制(以D結(jié)尾或省略)、十六進(jìn)制(以H結(jié)尾)字符串常數(shù)(以單引號(hào)括起來(lái)的字符或字符串)常數(shù)主要以立即數(shù)、位移量的形式出現(xiàn)在指令語(yǔ)句或偽指令語(yǔ)句中。v表達(dá)式和運(yùn)算符由運(yùn)算對(duì)象和運(yùn)算符組成的合法式子叫表達(dá)式。表達(dá)式的運(yùn)算結(jié)果在匯編過(guò)程中計(jì)算出來(lái)。數(shù)值表達(dá)式:其運(yùn)算結(jié)果是一個(gè)數(shù)地址表達(dá)
6、式:其運(yùn)算結(jié)果是一個(gè)存儲(chǔ)單元的地址。運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符關(guān)系運(yùn)算符分析運(yùn)算符綜合運(yùn)算符(1)算術(shù)運(yùn)算符:+、-、*、¤、MOD、SHL、SHR注意:?加、減、乘、除運(yùn)算都是整數(shù)運(yùn)算,結(jié)果也是整數(shù).?除法運(yùn)算所得是商的整數(shù)部分,求余運(yùn)算是兩數(shù)整除后的余數(shù).?算術(shù)運(yùn)算符適用于數(shù)值和地址表達(dá)式,但用于地址表達(dá)式時(shí),只有結(jié)果有明確的物理意義才有效.且表達(dá)式中的地址要在同一段內(nèi)。?‘地址±數(shù)字量’表示在原地址基礎(chǔ)上偏移若干個(gè)單元;?‘地址-地址’表示兩個(gè)單元間的距離。?‘地址+地址’、‘地址*地址(或數(shù)字量)’、‘地址/地址(或數(shù)字量)’都無(wú)意義;例:MOVDX,BLOCK+(6-1)*2;
7、把首地址為BLOCK的字?jǐn)?shù)組的第6個(gè)字傳送到DX(2)邏輯運(yùn)算符:AND、OR、XOR、NOT注意:?邏輯運(yùn)算符是對(duì)其操作數(shù)進(jìn)行按位操作;?只能用于數(shù)值表達(dá)式,不能對(duì)地址進(jìn)行邏輯運(yùn)算;?邏輯運(yùn)算是在匯編時(shí)完成的;?運(yùn)算后產(chǎn)生一個(gè)邏輯運(yùn)算值供指令操作數(shù)使用,不影響標(biāo)志位。例:OPR1EQU25OPR2EQU7ANDAX,OPR1ANDOPR2;等價(jià)于ANDAX,1說(shuō)明:邏輯運(yùn)算符與邏輯指令不同。邏輯指令是在程序執(zhí)行時(shí)完成.(3)關(guān)系操