大綜合課件微機(jī)原理上課章_第1頁(yè)
大綜合課件微機(jī)原理上課章_第2頁(yè)
大綜合課件微機(jī)原理上課章_第3頁(yè)
大綜合課件微機(jī)原理上課章_第4頁(yè)
大綜合課件微機(jī)原理上課章_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論