版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第二章匯編語(yǔ)言與匯編程序22.1符號(hào)指令中的表達(dá)式;2.2符號(hào)指令的尋址方式;2.3常用指令;2.4偽指令;2.5常用系統(tǒng)功能調(diào)用與BIOS。32.1符號(hào)指令中的表達(dá)式1.常量和數(shù)值表達(dá)式;2.變量和地址表達(dá)式;3.標(biāo)號(hào);4.標(biāo)量和標(biāo)號(hào)類(lèi)型的變更。41.常量和數(shù)值表達(dá)式常量是指在匯編時(shí)已經(jīng)有確定數(shù)值的量:數(shù)值常量、符號(hào)常量
數(shù)值表達(dá)式是由常量和算術(shù)、邏輯、關(guān)系等運(yùn)算符組成的有意義的式子。52.變量和地址表達(dá)式變量是存儲(chǔ)器中的數(shù)據(jù)或數(shù)據(jù)區(qū)的符號(hào)表示。變量名即是數(shù)據(jù)的地址或數(shù)據(jù)區(qū)的首地址。地址表達(dá)式是由變量、常量、寄存器(SI、DI、BX、BP)的內(nèi)容和運(yùn)算符組成的有意義的式子。變量或地址表達(dá)式可給出指令中的存儲(chǔ)器的地址。由于存儲(chǔ)器是分段使用的,因此變量或地址表達(dá)式都具有3重屬性:段地址、偏移地址和類(lèi)型。6變量的段地址是指變量所在段的段首地址除以10H之商;變量的偏移地址是指變量所在段的段首址到該變量的字節(jié)距離;變量的段地址和偏移地址分別用SEG或OFFSET兩個(gè)算符來(lái)指定。例如:變量W的段地址和偏移地址分別表示為SEGW和OFFSETW。
7變量的定義[變量名]
數(shù)據(jù)定義偽指令表達(dá)式[,……]
變量名:數(shù)據(jù)的地址或數(shù)據(jù)區(qū)的首地址數(shù)據(jù)定義偽指令:DB(定義字節(jié))、DW(定義字)、DD(定義雙字)、DQ(定義4字)、DT(定義10字節(jié))表達(dá)式:數(shù)值表達(dá)式、ASCII碼字符串、地址表達(dá)式、?及nDUP(表達(dá)式)8
例如,在數(shù)據(jù)段DATAl中定義的變量如下:
WlDWB3;
B1DB'AB$’;
W2DW-5,1994H;
B2DB4DUP(?);
DDDEB;
B3DB2DUP(-1)DB1DUP(10,’E’);
DB’13’,1,3在附加數(shù)據(jù)段DATA2中定義的變量如下:
EBDB8DUP(?)EWDW’AB’,’CD’
93.標(biāo)號(hào)標(biāo)號(hào)是指令地址的符號(hào)表示,也可以是過(guò)程名。標(biāo)號(hào)的定義方式有兩種:
(1)用“:”定義,直接寫(xiě)在指令助記符前。如CYCLE:MOVAL,[S1](2)用PROC和ENDP偽指令定義過(guò)程。標(biāo)號(hào)代表指令的地址,因而它也有3個(gè)屬性:段地址、偏移地址和類(lèi)型。
標(biāo)號(hào)的段地址:定義該標(biāo)號(hào)所在段的段地址。標(biāo)號(hào)的偏移地址:標(biāo)號(hào)所在段的段首址到該標(biāo)號(hào)定義指令的字節(jié)距離。
標(biāo)號(hào)的類(lèi)型有NEAR和FAR兩種。104.標(biāo)量和標(biāo)號(hào)類(lèi)型的變更格式:類(lèi)型PTR地址表達(dá)式PTR算符用來(lái)明確指出某個(gè)變量、標(biāo)號(hào)或地址表達(dá)式的類(lèi)型屬性,或者使它們臨時(shí)兼有與原定義所不同的類(lèi)型屬性,但仍保持它們?cè)瓉?lái)的段地址和偏移地址屬性不變。如:BYTEPTRW1
11指令(Instruction):
讓計(jì)算機(jī)完成某種操作的命令。指令系統(tǒng)(InstructionSystem):
指令的集合。2.2符號(hào)指令的尋址方式
一、概述指令——控制計(jì)算機(jī)完成指定操作的命令機(jī)器指令——指令的二進(jìn)制代碼形式。例如:CD21H匯編指令——助記符形式的指令。例如:INT21H指令系統(tǒng)——CPU所有指令及其使用規(guī)則的集合128086匯編語(yǔ)言指令的語(yǔ)句格式[標(biāo)號(hào):]指令助記符[操作數(shù)][;注釋](1)標(biāo)號(hào):指令所在地址的符號(hào),符合以下規(guī)則:
由字母(a-z,A-Z)、數(shù)字(0-9)或某些特殊字符(@,_,?)等組成;
首字符是字母或某些特殊字符,但“?”不能單獨(dú)作標(biāo)識(shí)符;
有效長(zhǎng)度為1-31個(gè)字符。13(2)指令助記符:指出指令的操作類(lèi)型。(3)操作數(shù):參加本指令運(yùn)算的數(shù)據(jù)。(4)注釋?zhuān)褐噶罟δ艿恼f(shuō)明。14有效地址EA(EffectiveAddress)內(nèi)存單元的地址:段基址
16+段內(nèi)偏移量EA15指令包含的信息(1)做什么操作(2)操作數(shù)的來(lái)源(3)操作結(jié)果的存數(shù)(4)下一條指令的位置16指令的基本構(gòu)成操作碼[操作數(shù)],[操作數(shù)]說(shuō)明要執(zhí)行的是什么操作操作對(duì)象,可以有0個(gè)、1個(gè)或2個(gè)目的源17指令舉例:ADDAX,[SI+6]MOVAX,BX操作碼操作數(shù)INC[BX]HLT18雙操作數(shù)指令A(yù)DDAX,BX
大多數(shù)運(yùn)算型指令都是雙操作數(shù)指令,對(duì)這種指令,有的機(jī)器(大中型)使用“三地址”指令:除給出參加運(yùn)算的兩個(gè)操作數(shù)外,還要指出運(yùn)算結(jié)果的存放地址。
現(xiàn)代微型計(jì)算機(jī)中多采用二地址指令,兩個(gè)操作數(shù)分別稱(chēng)為“源操作數(shù)”和“目的操作數(shù)”,指令執(zhí)行后,把運(yùn)算結(jié)果放到目的操作數(shù)的地址之中。19指令系統(tǒng)設(shè)計(jì)一個(gè)指令系統(tǒng)能夠提供哪些尋址方式,能否為編制程序提供方便,這是指令系統(tǒng)設(shè)計(jì)的關(guān)鍵。需要說(shuō)明的是,在不同的計(jì)算機(jī)系統(tǒng)中,尋址方式的名稱(chēng)和分類(lèi)并不統(tǒng)一,但基本可以歸結(jié)為以下幾種方式或它們的變型或組合:20二、8088/8086的操作數(shù)分為3類(lèi)1、立即數(shù)(常數(shù))取值范圍如下表:立即數(shù)只能用作源操作數(shù),如8位16位無(wú)符號(hào)數(shù)00H-FFH(0-255)0000H-FFFFH(0-65535)帶符號(hào)數(shù)80H-7FH(-128~127)8000H-7FFFH(-32768~32767)MOV AX,0FA00H ;正確MOV 8000H,DX ;錯(cuò)誤212、寄存器操作數(shù)放在8個(gè)通用寄存器或4個(gè)段寄存器中的操作數(shù)22只能存放字操作數(shù)段寄存器存放當(dāng)前操作數(shù)的段基地址不允許將立即數(shù)傳送到段寄存器SIDIBPSPCSDSESSS233、存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)字節(jié)字雙字124類(lèi)型存儲(chǔ)單元個(gè)數(shù)一般不允許兩個(gè)操作數(shù)同時(shí)為存儲(chǔ)器操作數(shù)24存儲(chǔ)單元的物理地址=段基地址+偏移地址若指令中沒(méi)有指明所涉及的段寄存器,CPU就采用默認(rèn)的段寄存器來(lái)確定操作數(shù)所在的段。存儲(chǔ)器操作數(shù)的偏移地址(也稱(chēng)有效地址)可以通過(guò)不同的尋址方式由指令給出。例如,若(BX)=2000H,(SI)=0A00H,(DI)=2A00H,則以下指令的結(jié)果是一樣的:
MOVAL,[2A00H] MOVAL,[BX+0A00H] MOVAL,[BX][SI] MOVAL,[DI]25一條指令的執(zhí)行時(shí)間=∑指令的執(zhí)行時(shí)間取指令取操作數(shù)執(zhí)行指令傳送結(jié)果單位用時(shí)鐘周期數(shù)表示結(jié)論:
1)盡量使用寄存器作為操作數(shù)
2)若有可能,用移位代替乘除法
3)盡量使用簡(jiǎn)單的尋址方式26尋址方式——尋找操作數(shù)的方法
尋找操作數(shù)的地址在8086指令系統(tǒng)中,說(shuō)明操作數(shù)所在地址的尋址方式可分為8種:
①立即尋址⑤寄存器相對(duì)尋址
②直接尋址⑥基址-變址尋址
③寄存器尋址⑦相對(duì)的基址-變址尋址
④間接尋址⑧隱含尋址三、8086的尋址方式27
操作數(shù)(為一常數(shù))直接由指令給出
(此操作數(shù)稱(chēng)為立即數(shù))
立即尋址只能用于源操作數(shù)例:
MOVAX,1C8FHMOVBYTEPTR[2A00H],8FH
錯(cuò)誤例:
×
MOV2A00H,AX;錯(cuò)誤!
1.立即尋址28立即數(shù)操作碼低8位高8位存儲(chǔ)器MOV操作碼02H31HAHAL代碼段代碼段立即尋址指令在存儲(chǔ)器中的存放形式AX指令操作例:MOVAX,3102H;AX3102H
執(zhí)行后,(AH)=31H,(AL)=02H292.直接尋址
指令中直接給出操作數(shù)的16位偏移地址
偏移地址也稱(chēng)為有效地址(EA,EffectiveAddress)
默認(rèn)的段寄存器為DS,但也可以顯式地指定其他段寄存器——稱(chēng)為段超越前綴偏移地址也可用符號(hào)地址來(lái)表示,如ADDR、VAR
例:
MOVAX,[2A00H]MOVDX,ES:[2A00H]MOVES:[2A00H],DXMOVSI,TABLE_PTR30指令操作例:MOVAX,[3102H]AL(3102H),AH(3103H)如果(DS)=2000H,(23102H)=CDH,(23103H)=ABH則操作數(shù)的物理地址為:
20000HH=23102H指令執(zhí)行后:(AX)=ABCDHMOV操作碼02H31HAHAL23102HCDHABH存儲(chǔ)器代碼段數(shù)據(jù)段..313.寄存器尋址
操作數(shù)放在某個(gè)寄存器中源操作數(shù)與目的操作數(shù)字長(zhǎng)要相同寄存器尋址與段地址無(wú)關(guān)例:
MOVAX,BXMOV[3F00H],AXMOVCL,AL
錯(cuò)誤例:
×
MOVAX,BL;字長(zhǎng)不同
×MOVES:AX,DX;寄存器與段無(wú)關(guān)32AXSI2233H2233H指令操作例:MOVSI,AX;SI(AX)
指令執(zhí)行前:(AX)=2233H
指令執(zhí)行后:(AX)=2233H,(SI)=2233HAX是累加器,結(jié)果存放在AX的話(huà),執(zhí)行時(shí)間要短些。通用寄存器是處理器的一部分,采用寄存器尋址方式可以提高效率。334.寄存器間接尋址
操作數(shù)的偏移地址(有效地址EA)放在寄存器中
只有SI、DI、BX和BP可作間址寄存器
例:MOVAX,[BX]MOVCL,CS:[DI]
錯(cuò)誤例:
×MOVAX,[DX]×
MOVCL,[AX]EA=(BX)(BP)(SI)(DI)34(1)EA=[BX][SI][DI]若沒(méi)有前綴指明具體的段寄存器,則操作數(shù)在數(shù)據(jù)段中(2)EA=[BP]若沒(méi)有前綴指明具體的段寄存器,則操作數(shù)在堆棧段。35指令操作例:MOVAX,[SI]若(DS)=6000H,
(SI)=1200H,(61200H)=44H,(61201H)=33H則指令執(zhí)行后,(AX)=3344H。44H33H60001200DSSI6000061200
61200HAX存儲(chǔ)器數(shù)據(jù)段
+)120044H33H365.寄存器相對(duì)尋址(包括基址尋址和變址尋址)EA=間址寄存器的內(nèi)容加上一個(gè)8/16位的位移量寄存器相對(duì)尋址常用于存取表格或一維數(shù)組中的元素——把表格的起始地址作為位移量,元素的下標(biāo)值放在間址寄存器中(或反之)EA=(BX)(BP)(SI)(DI)+8位16位位移量
37(1)若EA=[BX][SI][DI]+8位或16位偏移量則操作數(shù)地址DS:EA(2)若EA=[BP]+8位或16位偏移量則操作數(shù)地址:SS:EA38
例:MOVAX,[BX+8]MOVCX,TABLE[SI]MOVAX,[BP];默認(rèn)段寄存器為SS
指令操作例:MOVAX,DATA[BX]
若(DS)=6000H,(BX)=1000H,DATA=2A00H,(63A00H)=66H,(63A01H)=55H
則物理地址=60000H+1000H+2A00H=63A00H
指令執(zhí)行后:(AX)=5566H(見(jiàn)下頁(yè)圖示)39操作碼00偏移量低2A偏移量高DS6000BX1000+DATA2A0063A0063A00HAHALAX代碼段數(shù)據(jù)段.........66H55HMOVAX,DATA[BX]406.基址-變址尋址
若操作數(shù)的偏移地址:由基址寄存器(BX或BP)給出——
基址尋址方式由變址寄存器(SI或DI)給出——
變址尋址方式
由一個(gè)基址寄存器的內(nèi)容和一個(gè)變址寄存器的內(nèi)容相加而形成操作數(shù)的偏移地址,稱(chēng)為基址-變址尋址。EA=(BX)(BP)+(SI)(DI)
同一組內(nèi)的寄存器不能同時(shí)出現(xiàn)。41例:
MOVAX,[BX][SI]MOVAX,[BX+SI]MOVAX,DS:[BP][DI]錯(cuò)誤例:
×
MOVAX,[BX][BP]
×
MOVAX,[DI][SI]4283000操作碼DS
8000BX
2000+SI
100083000HAHALAX代碼段數(shù)據(jù)段.........YYXX指令操作例:MOVAX,[BX][SI]假定:(DS)=8000H,(BX)=2000H,SI=1000H則物理地址=80000H+2000H+1000H=83000H指令執(zhí)行后:(AL)=[83000H](AH)=[83001H]437.相對(duì)的基址-變址尋址
在基址-變址尋址的基礎(chǔ)上再加上一個(gè)相對(duì)位移量
注意事項(xiàng)同基址-變址尋址EA=(BX)(BP)+(SI)(DI)+8位16位位移量
例:MOVAX,BASE[SI][BX]MOVAX,[BX+BASE][SI]MOVAX,[BX+SI+BASE]MOVA
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 班級(jí)案例分析的分享與反思計(jì)劃
- 水文化傳承與創(chuàng)新活動(dòng)計(jì)劃
- 人教精通版小學(xué)六年級(jí)英語(yǔ)上冊(cè)教案教學(xué)文案
- 年產(chǎn)10億個(gè)電木骨架100萬(wàn)套塑料配件30萬(wàn)付板牙建設(shè)項(xiàng)目竣工環(huán)保驗(yàn)收監(jiān)測(cè)調(diào)查報(bào)告
- 崗前安全培訓(xùn)試題含答案(培優(yōu)A卷)
- 職工安全培訓(xùn)試題帶答案(奪分金卷)
- 公司級(jí)員工安全培訓(xùn)試題附答案(綜合題)
- 2.工程技術(shù)咨詢(xún)服務(wù)合同
- 管理人員安全培訓(xùn)試題帶答案(典型題)
- 2021年房屋買(mǎi)賣(mài)合同
- 2022年陜西煤業(yè)股份有限公司招聘筆試試題及答案解析
- 加速康復(fù)外科ERAS培訓(xùn)課件
- 2013年重慶市政清單計(jì)算規(guī)則
- 部編版語(yǔ)文五年級(jí)上冊(cè)八單元集體備課
- 未帶有效居民身份證考生承諾書(shū)
- 實(shí)驗(yàn)室安全操作規(guī)程
- 《數(shù)理方程》全套教學(xué)課件
- 管理思想發(fā)展史現(xiàn)代管理學(xué)基礎(chǔ)
- 六年級(jí)上冊(cè)心理健康教育課件- 男生女生(共19張PPT)全國(guó)通用
- 設(shè)計(jì)交底和圖紙會(huì)審管理辦法
- 幼兒園大班數(shù)學(xué)《認(rèn)識(shí)門(mén)牌號(hào)》課件
評(píng)論
0/150
提交評(píng)論