資源描述:
《匯編語言65185》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、匯編語言一個(gè)完全的匯編語言源程序assumecs:code,ds:data,ss:stackdatasegmentdw0123,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdataendsstacksegmentdw0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0stackendscodesegmentstart:movax,stackmovss,axmovsp,20hmovax,datamovds,axmovbx,0callsub1movax,4c00hint21hsub1:子程序中
2、使用的寄存器入棧;子程序的編寫指令子程序中使用的寄存器出棧retcodeendsendstart注意:1.一個(gè)段空間為16的倍數(shù)2.注意Debug和編譯器對(duì)[常量]解釋方法的不同3.不可以將常量直接送入段寄存器4.字單元一個(gè)字占兩個(gè)單元所以高地址存放高位字節(jié),低地址存放低位字節(jié)例:4E20H存放在0地址單元處.4E存放在高地址(1),20存放在低地址(0)中斷向量表0000:0000到0000:03FF256個(gè)4字節(jié)的中斷處理程序地址,低地址放IP,高地址放CS顯示器第一頁地址B8000H到BFFFFH安全的地址0000:0200到00
3、00:02FF匯編語言由3類指令組成1.匯編指令:機(jī)器碼的助記符,有對(duì)應(yīng)的機(jī)器碼2.偽指令:沒有對(duì)應(yīng)的機(jī)器碼,由編譯器執(zhí)行,計(jì)算機(jī)并不執(zhí)行3.其他符號(hào):+,_,*,/,MOD(取余數(shù))等,由編譯器識(shí)別,沒有對(duì)應(yīng)的機(jī)器碼CPU有3種總線地址總線8086的地址總線寬度為16,所以最多可以尋找216個(gè)內(nèi)存單元(216B=64KB),意思是8086CPU的尋址能力是64KB數(shù)據(jù)總線8086的數(shù)據(jù)總線寬度為16,所以最多可以傳送16個(gè)二進(jìn)制數(shù)據(jù)(2byte),意思是8086CPU一次傳送的數(shù)據(jù)為16位控制總線控制總線發(fā)送控制信號(hào)8086有14個(gè)寄
4、存器AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSWAX,BX,CX,DX數(shù)據(jù)寄存器AX一般用來做中間寄存器BX一般用來做地址變量:[BX]SI,DI,BP功能類似BX,但是不能分成兩個(gè)8位寄存器只有[BX+SI][BP+SI]沒有[SI+DI][BX+BP]BP一般用作地址變量:[BP],而且沒指定段地址時(shí),段地址為SSCX一般配合loop指令循環(huán),并且在加載程序時(shí),CX中存放的是程序的長度DX儲(chǔ)存CX做2層循環(huán),做32位/16位除法的被除數(shù)(高16位)AX可分為AH(高8位)和AL適用于BX,CX
5、,DXCS指令代碼段寄存器IP指令指針寄存器DS數(shù)據(jù)段寄存器SS棧頂元素段寄存器SP棧頂元素寄存器ES輔助段寄存器(需要兩個(gè)段寄存器時(shí)輔助用)PSW標(biāo)志寄存器標(biāo)志寄存器的狀態(tài)標(biāo)志1514131211109876543210OFDFIFTFSFZFAFPFCFZF(zeroflag)零標(biāo)志位指令執(zhí)行后,當(dāng)結(jié)果為0時(shí)ZF=1,否則ZF=0PF(parityflag)奇偶標(biāo)志位指令執(zhí)行后,當(dāng)結(jié)果最低有效字節(jié)(一般為低8位)中的所有bit位的1的個(gè)數(shù)為偶數(shù)時(shí)PF=1,否則PF=0AC(assistantcarry)輔助進(jìn)位標(biāo)志指令執(zhí)行后,當(dāng)結(jié)果
6、中的第3位(從0開始)向第4位進(jìn)位或借位時(shí)AC=1,否則AC=0SF(signflag)符號(hào)標(biāo)志位指令執(zhí)行后,SF=結(jié)果最高有效bit位的值CF(carryflag)進(jìn)位標(biāo)志位指令執(zhí)行后,結(jié)果中的最高有效位向更高位有進(jìn)位或借位時(shí)CF=1,否則CF=0OF(overflowflag)溢出標(biāo)志位運(yùn)算結(jié)果的最高有效位向更高位的進(jìn)位值(CF的值)與到最高有效位的進(jìn)位值異或,其結(jié)果為OF的值TF(trapflag)陷阱標(biāo)志位(單步標(biāo)志位)當(dāng)TF=1時(shí),CPU產(chǎn)生單步中斷IF(interruptflag)中斷標(biāo)志位當(dāng)IF=1時(shí),響應(yīng)可屏蔽中斷.IF
7、=0時(shí),不響應(yīng)可屏蔽中斷cliIF=0不響應(yīng)可屏蔽中斷stiIF=1響應(yīng)可屏蔽中斷DF(directionflag)方向標(biāo)志位在串處理指令中,控制每次操作后si,di的增減cldDF=0當(dāng)DF=0時(shí),si,di遞增stdDF=1當(dāng)DF=1時(shí),si,di遞減movsb含意相當(dāng)于moves:[di],byteptrds:[si]if(df==0){incsiincdi}if(df==1){decsidecdi}movsw含意相當(dāng)于moves:[di],wordptrds:[si]if(df==0){addsi,2adddi,2}if(df=
8、=1){subsi,2subdi,2}repmovsb含意相當(dāng)于s:movsbloopsrepmovsw含意相當(dāng)于s:movswloopspushf含意相當(dāng)于pushpswpopf含意相當(dāng)于poppswcm