《微機(jī)原理》第四章匯編語(yǔ)言程序設(shè)計(jì)(過(guò)控和機(jī)械).ppt
《《微機(jī)原理》第四章匯編語(yǔ)言程序設(shè)計(jì)(過(guò)控和機(jī)械).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《微機(jī)原理》第四章匯編語(yǔ)言程序設(shè)計(jì)(過(guò)控和機(jī)械).ppt(36頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第四章8086匯編語(yǔ)言程序設(shè)計(jì),4.1匯編語(yǔ)言程序結(jié)構(gòu),4.1.1匯編語(yǔ)言的語(yǔ)句格式,指令語(yǔ)句的一般格式如下:標(biāo)號(hào):指令助記符(操作碼)操作數(shù);注釋,偽指令語(yǔ)句格式,偽指令語(yǔ)句格式如下:名字偽指令符操作數(shù);注釋,指令語(yǔ)句格式,4.2常數(shù)、變量、表達(dá)式,常數(shù),數(shù)值常數(shù),表各種形式數(shù)字常量格式對(duì)照表,字符串常量是用單引號(hào)引起來(lái)的一個(gè)或多個(gè)字符。字符串常量是以各字符的ASC碼表示的。如A用41H表示,A1B2用41H,31H,42H,32H表示。,字符串常數(shù),變量(或標(biāo)號(hào)),變量(或標(biāo)號(hào))有三個(gè)屬性:段地址屬性、偏移地址屬性、類型屬性。,表達(dá)式,算術(shù)運(yùn)算符(了解),算術(shù)運(yùn)算符包括:(加)、(減)、*(乘)、(除)、MOD(求模)等。,【例】用算術(shù)運(yùn)算符進(jìn)行數(shù)值表達(dá)式運(yùn)算。,MOVAL,25*450;AL=50=32HMOVBL,50/7;NUM2=7MOVDL,50MOD7;DL=1,邏輯運(yùn)算符包括:AND、OR、XOR、NOT四種運(yùn)算?!纠坑眠壿嬤\(yùn)算符進(jìn)行運(yùn)算。MOVAL,34HAND0FH;04HALMOVBL,05HOR30H;35HBLMOVCX,NOT00FFH;0FF00HCXMOVDX,789AHXOR000FH;7895HDX,邏輯運(yùn)算符(了解),關(guān)系運(yùn)算符(了解),關(guān)系運(yùn)算符包括:相等(EQ),不等(NE),小于(LT),大于(GT),小于等于(LE)及大于等于(GE)?!纠坑藐P(guān)系運(yùn)算符進(jìn)行數(shù)值表達(dá)式運(yùn)算。MOVDH,10LT5;DH=0MOVCL,0AAHGT7FH;CL=0FFHMOVAX,AEQ41H;0FFFFHAXADDB,LT0101;B,PTR運(yùn)算符格式:類型PTR地址表達(dá)式PTR用來(lái)對(duì)存儲(chǔ)單元(重新)規(guī)定類型。,屬性運(yùn)算符,例如:MOVBYTEPTR1000,0;1000清零MOVWORDPTR1000,0;1000、1001清零,SEG運(yùn)算符格式:SEG變量或標(biāo)號(hào)功能:分離出其后變量或標(biāo)號(hào)所在段的段基址。例如:MOVAX,SEGARRMOVDS,AXOFFSET運(yùn)算符格式:OFFSET變量或標(biāo)號(hào)功能:分離出其后變量或標(biāo)號(hào)的偏移地址。例如:MOVBX,OFFSETBUF,數(shù)值返回運(yùn)算符,TYPE運(yùn)算符(了解)格式:TYPE變量或標(biāo)號(hào),4.1.3偽指令,數(shù)據(jù)定義偽指令,常用的數(shù)據(jù)定義偽指令有DB,DW,DD,DQ,DT。格式:變量名數(shù)據(jù)定義偽指令表達(dá)式,,段定義偽指令SEGMENT/ENDS,段名SEGMENT本段程序內(nèi)容段名ENDS,【例】為數(shù)據(jù)段分配存儲(chǔ)單元。DATASEGMENTADB11H,12H,13HBDW1122H,3344HCDD12345678HDATAENDS,【例】為字符串分配存儲(chǔ)單元。DATASEGMENTSTR1DB1234STR2DWAB,CD,ASTR3DDABDATAENDS,NUM1EQU25*450;NUM1=50NUM2EQUNUM1/7;NUM2=7NUM3DBNUM1MOD7;(NUM3)=1VAR1DB1,2,3,4,5VAR2DB12345NUM4EQUVAR2-VAR1;NUM4=5NUM5EQU0FH,【例】,符號(hào)定義偽指令,格式:符號(hào)名EQ表達(dá)式,段分配偽指令A(yù)SSUME,格式:ASSUME段寄存器:段名,段寄存器:段名【例】用ASSUME偽指令建立代碼段、堆棧段與CS和SS的對(duì)應(yīng)關(guān)系。DATA1SEGMENTADB1,2,3DATA1ENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSDATA2SEGMENTBDB123ABCDATA2ENDSDATA3SEGMENTCDB?,?,?DATA3ENDSCODESEGMENTASSUMEDS:DATA1,ES:DATA3,CS:CODE,SS:STACK,START:MOVAX,DATA1MOVDS,AX;DATA1DSMOVAX,DATA3MOVES,AX;DATA3ESCODEENDSENDSTART,源程序結(jié)束偽指令,格式:END標(biāo)號(hào),置匯編地址計(jì)數(shù)器偽指令ORG,格式:ORG數(shù)值表達(dá)式【例】給匯編地址計(jì)數(shù)器賦值。DATASEGMENTORG10;置值為10VAR1DW100H,200HORG+5;置的值為14+5,即為19VAR2DB1,2,+1,+2NEQU-VAR2;()=23,N=4DATAENDS,4.2常用的DOS系統(tǒng)功能調(diào)用,單字符輸入(1號(hào)調(diào)用)格式:MOVAH,1INT21H功能:從鍵盤(pán)輸入字符的ASCII碼送入寄存器AL中,并顯示。,單字符顯示(2號(hào)調(diào)用)格式:MOVDL,待顯示字符的ASCII碼MOVAH,2INT21H功能:將DL寄存器中的字符送顯示器顯示。,結(jié)束調(diào)用(4CH號(hào)調(diào)用)格式:MOVAH,4CHINT21H功能:終止當(dāng)前程序并返回調(diào)用程序。,顯示字符串(9號(hào)調(diào)用)格式:LEADX,待顯示字符串首偏移地址MOVAH,9INT21H功能:將當(dāng)前數(shù)據(jù)區(qū)中以結(jié)尾的字符串送顯示器顯示。,DATASEGMENTSTRDB0DH,0AH,Exampleofstringdisplay!$DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODEBEGIN:MOVAX,DATAMOVDS,AXLEADX,STRMOVAH,9INT21HMOVAH,4CHINT21HCODEENDSENDBEGIN,【例】若要在屏幕上顯示字符串“Exampleofstringdisplay!”,則程序如下:,綜合舉例,【例】已知一數(shù)據(jù)段中的數(shù)據(jù)為:DATASEGMENTADW0CHBUFDBAB,0DH,0AHCEQU500HBDW0FFAAHDDDBUFMDB2DUP(1),2DUP(2,B)DATAENDS請(qǐng)畫(huà)出該數(shù)據(jù)段數(shù)據(jù)存儲(chǔ)的形式。,匯編語(yǔ)言程序設(shè)計(jì)一般有以下幾個(gè)步驟:步驟1:分析問(wèn)題,確定算法步驟2:繪制流程圖步驟3:根據(jù)流程圖編制程序步驟4:調(diào)試程序,4.3順序程序設(shè)計(jì),匯編語(yǔ)言程序設(shè)計(jì)的一般步驟,起止框,流程圖,判斷框,處理框,指向線,連接框,順序程序設(shè)計(jì)舉例,【例】試編寫(xiě)一程序,將兩個(gè)一位十進(jìn)制數(shù)相加,要求算術(shù)式以字符串的形式存放在DATA1為首的單元中,結(jié)果存放在DATA2單元中。,CODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AX;DATAAXXORAX,AXMOVAL,DATA1ADDAL,DATA1+2AAAORAL,30HMOVDATA2+1,ALORAH,30HMOVDATA2,AHLEADX,DATA1MOVAH,9INT21HMOVAH,4CHINT21HCODEENDS;退出DOS狀態(tài)ENDSTART,開(kāi)始,被加數(shù)AL,用ADD完成兩個(gè)數(shù)相加,AAA調(diào)整,結(jié)果送DATA2,顯示算術(shù)式和顯示結(jié)果,返回DOS,結(jié)束,DATASEGMENTDATA1DB6+8=DATA2DB?,?,$DATAENDS,4.4分支程序設(shè)計(jì),無(wú)條件轉(zhuǎn)移指令,轉(zhuǎn)移指令,JMP標(biāo)號(hào)(MEM/REG),條件轉(zhuǎn)移指令,根據(jù)單個(gè)標(biāo)志位的條件轉(zhuǎn)移指令,無(wú)符號(hào)數(shù)條件轉(zhuǎn)移指令,【例】比較無(wú)符號(hào)數(shù)大小,將較大的數(shù)存放AX寄存器。CMPAX,BX;(AX)(BX)JNBNEXT;若AX=BX,轉(zhuǎn)移到NEXTXCHGAX,BX;若AX=BX,轉(zhuǎn)移到NEXTXCHGAX,BX;若AXBX,交換NEXT:,分支程序的設(shè)計(jì),【例】試編一程序,求三個(gè)無(wú)符號(hào)字?jǐn)?shù)據(jù)中的最大值,并將最大值存入MAX字單元中。三個(gè)數(shù)分別在三個(gè)字變量X、Y、Z中存儲(chǔ)。,程序如下:DATASEGMENTXDW00ABHYDW5ZDW200MAXDW?DATAENDS,CODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVAX,XCMPAX,Y;XY?JAL1MOVAX,YL1:CMPAX,Z;XZ?JAEXITMOVAX,ZEXIT:MOVMAX,AXMOVAH,4CHINT21HCODEENDSENDSTART,4.5循環(huán)程序設(shè)計(jì),重復(fù)控制指令,循環(huán)指令LOOP語(yǔ)句格式:LOOP短標(biāo)號(hào)功能:(CX)10,則程序轉(zhuǎn)移(循環(huán));否則,順序執(zhí)行。說(shuō)明:使用LOOP指令可代替兩條指令:DECCXJNE短標(biāo)號(hào),相等/為零循環(huán)指令LOOPE(自學(xué))語(yǔ)句格式:LOOPE(LOOPZ)短標(biāo)號(hào)功能:(CX)10且ZF=1,則程序轉(zhuǎn)移(循環(huán));否則,順序執(zhí)行。,不相等/不為零循環(huán)指令LOOPNE(自學(xué))語(yǔ)句格式:LOOPNE(LOOPNZ)短標(biāo)號(hào)功能:(CX)10且ZF=,則程序轉(zhuǎn)移(循環(huán));否則,順序執(zhí)行。,CX為零轉(zhuǎn)移指令JCXZ(自學(xué))語(yǔ)句格式:JCXZ短標(biāo)號(hào)功能:(CX)0(CX不減1),則程序轉(zhuǎn)移;否則,順序執(zhí)行。,循環(huán)程序的結(jié)構(gòu),循環(huán)程序設(shè)計(jì),【例】DATA中有10個(gè)字節(jié)數(shù),找出這些數(shù)的最大值。,程序如下:,DsegSEGMENTDATADB0BH,42,26H,89,54DB5,8,34,0FFH,74HMAXDB?DsegENDSCODESEGMENTASSUMEDS:Dseg,CS:CODESTART:MOVAX,DsegMOVDS,AX,MOVBX,OFFSETDATAMOVCX,9MOVAL,DATAA1:CMPAL,BX+1JAEL1MOVAL,BX+1L1:INCBXLOOPA1MOVMAX,ALMOVAH,4CHINT21HCODEENDSENDSTART,調(diào)用和返回指令,調(diào)用指令CALL標(biāo)號(hào),段內(nèi)調(diào)用:SP-2,IP入棧,標(biāo)號(hào)偏移地址IP。,段間調(diào)用:SP-2,CS的內(nèi)容入棧,SP-2,IP入棧,標(biāo)號(hào)段地址CS,標(biāo)號(hào)偏移地址IP。,返回指令RET,段內(nèi)的返回把SP所指的堆棧頂部的一個(gè)內(nèi)容彈回到指令指針I(yè)P中,且SP加2。段間返回:CS彈出,再加2。,4.6子程序設(shè)計(jì),子程序的定義和調(diào)用,定義:過(guò)程名PROCNEAR/FARRET過(guò)程名ENDP,子程序設(shè)計(jì),CSEGSEGMENTCALLSUBT1SUBT1PROCFARRETSUBT1ENDPCSEGENDSXSEGSEGMENTCALLSUBT1XSEGENDS,子程序設(shè)計(jì)方法(自學(xué)),信息的保護(hù)與恢復(fù),主程序與子程序參數(shù)傳遞方式,例如:PROGPROCPUSHAXPUSHBXPUSHCX;保護(hù)現(xiàn)場(chǎng)PUSHDXPOPDXPOPCXPOPBX;恢復(fù)現(xiàn)場(chǎng)POPAXRET;返回?cái)帱c(diǎn)處PROGENDP,寄存器法約定單元法堆棧法,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 微機(jī)原理 微機(jī) 原理 第四 匯編 語(yǔ)言程序設(shè)計(jì) 機(jī)械
鏈接地址:http://www.szxfmmzy.com/p-12673327.html