資源描述:
《微機(jī)原理與接口技術(shù)(樓順天)-第4章6.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、本教案內(nèi)容第4章?匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)基礎(chǔ)源程序的匯編、連接與調(diào)試分支程序設(shè)計(jì)技術(shù)循環(huán)程序設(shè)計(jì)技術(shù)子程序設(shè)計(jì)技術(shù)綜合程序設(shè)計(jì)示例4.6.1匯編語言的語句格式由匯編語言編寫的源程序是由許多語句(也可稱為匯編指令)組成的。每個語句由1~4個部分組成,其格式是:[標(biāo)號]指令助記符[操作數(shù)][;注解]其中用方括號括起來的部分,可以有,也可以沒有。每個部分之間用空格(至少一個)分開,這些部分可以在一行的任意位置輸入,一行最多可有132個字符。1.標(biāo)號(也叫做名稱)標(biāo)號是給指令或某一存貯單元地址所起的名字,名稱可由下列字
2、符組成:字母:A~Z數(shù)字:0~9特殊字符:?、.、@、—、$當(dāng)名稱后不帶冒號時(shí),有可能是標(biāo)號,也可能是變量。偽指令前的名稱不加冒號,當(dāng)標(biāo)號用于段間調(diào)用時(shí),后面也不能跟冒號。例如:段內(nèi)調(diào)用OUTPUT:INAL,DX段間調(diào)用OUTPUT:INAL,DX2.指令助記符指令助記符表示不同操作的指令,可以是指令助記符,也可以是偽指令。如果指令帶有前綴(如LOCK、REP、REPE/REPZ、REPNE/REPNZ),則指令前綴和指令助記符要用空格分開。3.操作數(shù)依指令的要求,操作數(shù)可能有一個、兩個或者沒有,也可能有多個操作數(shù)。當(dāng)
3、操作數(shù)超過1個時(shí),操作數(shù)之間應(yīng)用逗號分開。操作數(shù)可以是常數(shù)、寄存器名、標(biāo)號、變量,也可以是表達(dá)式。4.注解注解項(xiàng)可有可無,是為源程序所加的注解,用于提高程序的可讀性。在注解前面要加分號,它可位于操作數(shù)之后,也可位于一行的開頭。匯編時(shí),對注解不作處理,僅在列源程序清單時(shí)列出,供編程人員閱讀。例如:;讀端口B數(shù)據(jù)INAL,PORTB;讀B口到AL中4.6.2常數(shù)匯編語言語句中出現(xiàn)的常數(shù)可以有以下7種。1.二進(jìn)制數(shù)二進(jìn)制數(shù)字后跟字母B,如01000001B。2.八進(jìn)制數(shù)八進(jìn)制數(shù)字后跟字母Q或O,如202Q或202O。3.十進(jìn)制
4、數(shù)十進(jìn)制數(shù)字后跟D或不跟字母,如85D或85。4.十六進(jìn)制數(shù)十六進(jìn)制數(shù)字后跟H,如56H,0FFH。注意,當(dāng)數(shù)字的第一個字符是A~F時(shí),在字符前應(yīng)添加一個數(shù)字0,以示和變量的區(qū)別。5.十進(jìn)制浮點(diǎn)數(shù)浮點(diǎn)十進(jìn)制數(shù)的一個例子是25E-2。6.十六進(jìn)制實(shí)數(shù)十六進(jìn)制實(shí)數(shù)后跟R,數(shù)字的位數(shù)必須是8,16或20。在第一位是0的情況下,數(shù)字的位數(shù)可以是9,17或21,如0FFFFFFFFR以上第5,6項(xiàng)中,兩種數(shù)字格式只允許在MASM中使用。7.字符和字符串字符和字符串要求用單引號括起來,如′BD′。4.6.3作為主模塊,下面幾個部分是
5、不可少的。①必須用ASSUME偽指令告訴匯編程序,哪一個段和哪一個段寄存器相對應(yīng),即某一段地址應(yīng)放入哪一個段寄存器。②DOS的裝入程序在裝入執(zhí)行時(shí),將把CS初始化為正確的代碼段地址,把SS初始化為正確的堆棧段地址,因此在源程序中不需要再對他們進(jìn)行初始化。③在DOS環(huán)境下,通常采用DOS的4CH號中斷功能調(diào)用使匯編語言返回DOS,即采用如下兩條指令:MOVAH,4CHINT21H4.6.4綜合程序設(shè)計(jì)示例本節(jié)介紹一些匯編語言設(shè)計(jì)的綜合示例,包括各種題型:選擇題、分析題和編程題。例4.16單項(xiàng)選擇題1.在偽指令BUFDB20
6、DUP(2,2DUP(8))定義的緩沖區(qū)中,數(shù)據(jù)字0208H的個數(shù)有:①20②40③0④192.將DX:AX構(gòu)成的雙字(有符號數(shù))除以2的指令為:①SARAX,1②SHRAX,1RCRDX,1RCRDX,1③SARDX,1④SARDX,1RORAX,1RCRAX,14.6.4綜合程序設(shè)計(jì)示例3.MOVBL,55HAND0F0H指令執(zhí)行后,(BL)的內(nèi)容為:①55H②0F0H③50H④05H解:答案依次為④④③。例4.17多項(xiàng)選擇題1.能使(AX)和CF同時(shí)清零的指令有①M(fèi)OVAX,0②SUBAX,AX③CMPAX,AX④
7、XORAX,AX⑤ANDAX,AX2.已有定義DATASEGMENTVAR1DW10DUP(?)DATAENDS則源操作數(shù)為立即尋址的指令有:①M(fèi)OVAX,DATA②MOVAX,VAR1③MOVAX,OFFSETVAR1④MOVAX,LENGTHVAR1⑤MOVAX,SIZEVAR14.6.4綜合程序設(shè)計(jì)示例3.使用AL寄存器的指令有:①SAHF②XALT③AAA④MOVSB⑤STOSB解:1.②④⑤2.①③④⑤3.②③⑤例4.18分析下列程序段完成的功能:MOVCX,100LEASI,F(xiàn)IRSTLEADI,SECOND
8、CLDREPMOVSB解:只要搞清楚MOVSB指令的用法,就容易分析出該程序段的功能:從緩沖區(qū)FIRST傳送100個字節(jié)到緩沖區(qū)SECOND。4.6.4綜合程序設(shè)計(jì)示例例4.19分析下列程序段:LEADI,STRINGMOVCX,200CLDMOVAL,20HREPZSCASBJNZFOUNDJMPNOT_FOUND