微機原理:第3章 指令系統(tǒng)-1_第1頁
微機原理:第3章 指令系統(tǒng)-1_第2頁
微機原理:第3章 指令系統(tǒng)-1_第3頁
微機原理:第3章 指令系統(tǒng)-1_第4頁
微機原理:第3章 指令系統(tǒng)-1_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第3章指令系統(tǒng)郟東耀§1

數(shù)據(jù)類型§2

尋址方式§3

指令系統(tǒng)主要內(nèi)容學習指導和要求了解指令集的六種數(shù)據(jù)類型掌握尋址方式;熟記各種類型的指令格式及功能,并能編寫簡單程序。

第1節(jié)80X86的數(shù)據(jù)類型

80X86匯編語言中可使用的數(shù)據(jù)類型有以下六種:1.無符號二進制數(shù)

字節(jié)(8位):0~255(0~0FFH),占用一字節(jié)存儲單元。

字(16位):0~65535(0~0FFFFH),占用連續(xù)的兩字節(jié)存儲單元,低地址存儲單元存放低8位數(shù)據(jù),高地址存儲單元存放高8位數(shù)據(jù),低字節(jié)地址為該字的地址。有符號二進制數(shù)

字節(jié):-128~+127(80H~FFH,00H~7FH)字:-32768~+32767(8000H~FFFFH,00000H~7FFFH)以補碼形式存儲,地址單元分配與無符號數(shù)類似。浮點數(shù)是屬于有理數(shù)中某特定子集的數(shù)字表示,在計算機中用以近似表示任意某個實數(shù)。具體的說,這個實數(shù)由一個整數(shù)或定點數(shù)(即尾數(shù))乘以某個基數(shù)(計算機中通常是2)的整數(shù)次冪得到,這種表示方法類似于基數(shù)為10的科學記數(shù)法。3.浮點數(shù)(實數(shù))BCD碼壓縮BCD碼:1字節(jié)存放兩個BCD碼,格式如圖a74307430

(a)(b)非壓縮BCD碼:1字節(jié)存放一個BCD碼(低4位),格式如圖b字符串由一串字符組成的,它是字符的序列,從某種程度上來說有些類似于字符的數(shù)組。一個字母或漢字算一個字符,字符跟字符串沒有嚴格的界定?!癮b”合起來稱字符串,分開“a”,“b”就叫字符了。十位個位0或任意個位ASCII碼

ASCII碼字符串:如‘ABC123’

ASCII碼數(shù):如30H~39H(0~9),41H~46H(A~F)返回

第2節(jié)80X86的尋址方式

80X86的尋址方式共有7種:1.立即尋址2.寄存器尋址3.直接尋址4.寄存器間接尋址5.相對寄存器間接尋址

6.基址加變址尋址7.相對基址加變址尋址立即尋址:操作數(shù)包含在指令中,存放在代碼段。

寄存器尋址:操作數(shù)在寄存器中,存放在CPU內(nèi)。

存儲器尋址:操作數(shù)在存儲器(數(shù)據(jù)段)中。代碼段數(shù)據(jù)段寄存器CPU內(nèi)存運算器立即數(shù)存儲器

1.立即尋址指定的操作數(shù)緊跟在操作碼之后,直接存放在代碼段中如:MOVBL,56H

;BL56HMOVAX,2056H

;AX2056H

OP56HOP56H20HBLAXAHAL20H56H56H注意:立即數(shù)只能源操作數(shù),不能目標操作數(shù)。

2.寄存器尋址操作數(shù)在CPU的寄存器中,而寄存器的名由指令指出如:MOVBL,AL注意:在同一條指令中,類型必須匹配。如下列指令是錯誤的:MOVAL,1234HMOVBX,AL

直接尋址:操作數(shù)有效地址(16位或32位)直接包含在指令中,它位于操作碼之后,存放在代碼段中。如果指令無前綴指明在那一段中,則默認操作數(shù)存放在數(shù)據(jù)段。

例:

MOVAL,[0010H];0010H為偏移地址

MOVBX,D1;DS段D1的內(nèi)容送BL,

D1+1的內(nèi)容送BH注:D1為符號地址(變量名)

OP10H00HAL(DS)*24+0010H

如:MOVAX,[2000H];DS段2000H的內(nèi)容送AL,

2001H的內(nèi)容送AHMOVAX,F(xiàn)S:[2000H];FS段2000H的內(nèi)容送AL,

2001H的內(nèi)容送AH寄存器間接尋址操作數(shù)存放在存儲器中,但操作數(shù)的偏移地址存放在寄存器中。(1)16位尋址

EA=[DI]、[SI]、[BX]、[BP]

無前綴默認操作數(shù)存放在數(shù)據(jù)段無前綴默認操作數(shù)存放在堆棧段例如:

MOVAX,[BX];AX(DS*10H+(BX))MOVAX,[BP];AX(SS*10H+(BP))MOVAX,ES:[BX];AX(ES*10H+(BX))MOVAX,DS:[BP];AX(DS*10H+(BP))相對寄存器間接尋址寄存器內(nèi)容與位移量之和形成操作數(shù)的有效地址。即:

EA=[寄存器]+位移量

(1)16位尋址

EA={[BX]、[BP]、[DI]、[SI]}+位移量(帶符號8或16位整數(shù))如:MOVAX,2040H[BX]

或MOVAX,[BX+2040H];DS段(BX)+2040H地址中的字數(shù)據(jù)送AX。

基址加變址尋址基址寄存器內(nèi)容與變址寄存器內(nèi)容之和形成操作數(shù)的偏移地址。即:EA=[基址寄存器]+[變址寄存器]

(1)16位尋址基址寄存器:BX、BP;變址寄存器:DI、SI如:MOVAX,[BX+SI]或MOVAX,[BX][SI];DS段(BX)+(SI)地址中的字數(shù)據(jù)送AX。

相對基址加變址尋址基址寄存器內(nèi)容與變址寄存器內(nèi)容再加偏移量之和形成操作數(shù)的有效地址。即:

EA=[基址寄存器]+[變址寄存器]+偏移量如:MOVAX,1234H[BX+DI]

或MOVAX,[BX+DI+1234H]

或MOVAX,1234H[BX][DI];DS段

(BX)+(DI)+1234H地址中的字數(shù)據(jù)送AX。練習題:假設(shè)(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0040H,在指令MOVAX,src中,以下src為何種尋址方式?求有效地址EA和物理地址PA各是多少?

(1)100H[BX](2)[BX] (3)[BP](4)ES:[BX+10H](5)BX(6)[1000H](7)[SI](8)1000H[BX+SI] (9)1000H[BP][SI](10)[BX][SI]

§3指令系統(tǒng)數(shù)據(jù)傳送類指令算術(shù)運算類指令邏輯運算類指令串操作類指令控制轉(zhuǎn)移類指令

指令操作數(shù)符號說明:

ac:累加器

reg:通用寄存器(8位或16位或32位)

reg8、reg16、reg32:8位、16位、32位寄存器

Seg:段寄存器

mem:存儲器(8位或16位或32位)

mem8、mem16、mem32:8位、16位、32位存儲器

imm:立即數(shù)(8位或16位或32位)

imm8、imm16、imm32:8位、16位、32位立即數(shù)一、指令格式

指令格式:

[標號:]操作碼[操作數(shù),…] [;注釋]

其中:標號:確定匯編語句的位置,提供跳轉(zhuǎn)、循環(huán)的目標。操作碼:匯編語句操作。操作數(shù):操作數(shù)據(jù)項,數(shù)目因操作碼而異。注釋:程序注解。 如:START:MOVAX,DATAMOVDS,AX;設(shè)置DS(一)數(shù)據(jù)傳送類指令用于實現(xiàn)存儲器與寄存器、寄存器與寄存器、累加器與I/O端口之間字節(jié)、字或雙字的傳送,也可將立即數(shù)傳送到存儲器或寄存器

不影響標志位:CF、SF、ZF、OF、AF、PF

傳送指令MOV

格式:

MOV目標,源;目標源

立即數(shù)、寄存器、存儲器寄存器、存儲器立即數(shù)寄存器存儲器寄存器段寄存器傳送指令MOV示意圖注意:1.立即數(shù)和CS不能是目標操作數(shù)例MOV10H,AL錯

MOVCS,AX錯2.存儲器之間,段寄存器之間不能傳送例MOVDS,SS錯

MOV[BX],[SI]錯3.立即數(shù)不能送段寄存器例MOVAX,1000HMOVDS,AX4.源和目標操作數(shù)類型要一致

MOVAX,BL錯5.立即數(shù)送存儲器要說明MOVBYTEPTR[SI],100MOVWORDPTR[SI],100

指令格式:MOVOP1,OP2

reg/Sreg,regreg,Sregreg/Sreg,memmem,reg/Sregreg,immmem,imm例如:用如下指令可給數(shù)據(jù)段寄存器DS賦初值

MOVAX,DATAMOVDS,AX

堆棧操作指令

數(shù)據(jù)進棧指令:先修改指針,后源內(nèi)容入棧

PUSH源;(SP)-2SP

;源((SP))

數(shù)據(jù)出棧指令:先將指針內(nèi)容送到目標,后修改指針

POP目標;((SP))目標;(SP)+2SP

設(shè):(SS)=2000H,(SP)=0010H(AX)=3344H,(BX)=5678H寫出指令完成如下功能:

通過堆棧將AX,BX的內(nèi)容交換PUSHAXPUSHBXPOPAXPOPBXSPSS2000H000BH000CH000DH000EH000FH0010H(SP)-2(SP)-22000H:000BH33H44H56H78H33H44H56H78HAXBX設(shè):(SS)=2000H,(SP)=0010H(AX)=3344H,(BX)=5678H寫出指令完成如下功能:

通過堆棧將AX,BX的內(nèi)容交換PUSHAXPUSHBXPOPAXPOPBX(SP)+2SS2000H000BH000CH000DH000EH000FH0010H(SP)+2(SP)2000H:000BH33H44H56H78H33H44H56H78HBXAX堆棧說明:1.堆棧以字為單位操作PUSHBL錯

PUSH[DI]

是正確表示的指令,當然,也可以寫為:

PUSHWORDPTR[DI]2.CS不能做目標PUSHCS對

POPCS錯3.堆棧操作指令都隱含了一個操作數(shù):SP所指的棧頂數(shù)據(jù);4.沒有立即尋址PUSH1234H錯5先進后出,后進先出交換指令XCHG格式:XCHG操作數(shù)1,操作數(shù)2;功能:操作數(shù)1操作數(shù)2如:XCHGAX,BXXCHGAX,[BX]說明:1.操作數(shù)可以是reg,mem2.兩個存儲器操作數(shù)不能直接交換;3.不能在交換指令中使用段寄存器,用一個也不可以。

取偏移地址指令LEA

格式:LEA目標,源

reg,mem其功能是將源操作數(shù)的偏移地址送到一個寄存器中。所以是16位地址的傳送指令。源操作數(shù)是任何一種存儲器操作數(shù)的尋址方式。

LEAAX,[2000H] ;AX=2000HLEABX,BLOCK ;BLOCK所代表的地址送BX(MOVBX,OFFSETBLOCK)

LEACX,[SI] ;CX=SILEADX,BLOCK[SI] ;DX=BLOCK+SILEAAX,[BX][DI] ;AX=BX+DI

查表指令XLAT

格式:XLAT;AL((BX)+(AL))

功能:BX指向表的首地址(DS段內(nèi)),AL裝入要轉(zhuǎn)換的代碼在表中的序號,并將XLAT指令執(zhí)行的結(jié)果存于AL中。

序號0123

4...TABLE30H31H32H

33H34H..

例如:查找ASCII碼表中,3的ASCII碼

MOVAX,SEGTABLEMOVDS,AXLEABX,TABLEMOVAL,3

XLAT;ASCII碼33H保存在ALAL33HI/O數(shù)據(jù)傳送指令格式:

輸入INAcc,端口;將端口數(shù)據(jù)讀出送入CPU

輸出OUT端口,Acc;將CPU累加器中數(shù)據(jù)寫入端口<8位,直接給出>8位,端口地址DXAL,AX例:INAL,28HMOVDX,03FCHOUT15H,ALINAX,DX

標志寄存器傳送指令指令格式:LAHF;標志寄存器低8位內(nèi)容送AHSAHF;AH內(nèi)容送標志寄存器低8位PUSHF;16位標志寄存器內(nèi)容進棧POPF;16位出棧內(nèi)容送標志寄存器練習:找出下面指令的錯誤并改正(1)MOVCS,1000H(2)MOV15H,CL(3)MOV[SI],[1000H](4)MOVDX,CL(5)MOVDS,F(xiàn)S(6)XCHG10[BX],[DI](7)IN AX,3EBH(8)OUT20H,BL(二)算術(shù)運算類指令

執(zhí)行指令后,根據(jù)結(jié)果置標志位:

CF、SF、ZF、OF、AF、PF算術(shù)運算指令包括加、減、乘、除四種運算,以及相應(yīng)的十進制調(diào)整指令。算術(shù)運算是對象可以是有符號數(shù)或無符號數(shù)。加、減運算用相同的指令來進行,但對乘、除運算要用不同的指令。對于加、減運算,操作數(shù)是否有符號及結(jié)果的判斷(是否溢出)是用戶的事,計算機則是按相同的方法進行運算。加法指令加法/減法ADD/SUB目標,源;功能:目標目標+源帶進位加法/減法ADC/SBB目標,源;功能:目標目標+源+CF加一/減一INC/ DEC目標;功能:目標目標+1格式:ADDreg,regADDreg,memADDreg,immADDmem,regADDmem,imm例:ADDAX,BX;AX(AX)+(BX)ADDEBX,ECX;EBX(EBX)+(ECX)ADD[3000H],AX;(3000H)(3000H)+(AX)ADDBYTEPTR[3000H],23;(3000H)(3000H)+23SUBOP1,OP2;OP1OP1-OP2,置標志位

reg,regreg,memreg,immmem,regmem,imm功能:從OP1中減去OP2,結(jié)果存OP1中例:SUBAX,BX;AX(AX)-(BX)

例:設(shè)AL=64H,AH=0A8H,求執(zhí)行下列指令的結(jié)果和標志位的狀態(tài)。

(1)ADDAL,AH;AL(AL)+(AH),有符號數(shù).解:01100100100D得:(AL)=0CH(正確)+10101000-88DOFSFZFAFPFCF

10000110012D000011(2)SUBAL,AH;AL(AL)-(AH),有符號數(shù).解:01100100100D得:(AL)=BCH(不正確)

(-10101000)-88DOFSFZFAFPFCF+0101100010111100-68D110101有符號數(shù)加、減的結(jié)果有“溢出”的判斷規(guī)則:正數(shù)+正數(shù)=負數(shù),負數(shù)+負數(shù)=正數(shù)例:設(shè)(AL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論