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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第3章指令系統郟東耀§1

數據類型§2

尋址方式§3

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

第1節80X86的數據類型

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

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

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

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

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

ASCII碼字符串:如‘ABC123’

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

第2節80X86的尋址方式

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

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

寄存器尋址:操作數在寄存器中,存放在CPU內。

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

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

;BL56HMOVAX,2056H

;AX2056H

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

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

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

例:

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

MOVBX,D1;DS段D1的內容送BL,

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

OP10H00HAL(DS)*24+0010H

如:MOVAX,[2000H];DS段2000H的內容送AL,

2001H的內容送AHMOVAX,FS:[2000H];FS段2000H的內容送AL,

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

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

無前綴默認操作數存放在數據段無前綴默認操作數存放在堆棧段例如:

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))相對寄存器間接尋址寄存器內容與位移量之和形成操作數的有效地址。即:

EA=[寄存器]+位移量

(1)16位尋址

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

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

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

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

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

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

或MOVAX,[BX+DI+1234H]

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

(BX)+(DI)+1234H地址中的字數據送AX。練習題:假設(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指令系統數據傳送類指令算術運算類指令邏輯運算類指令串操作類指令控制轉移類指令

指令操作數符號說明:

ac:累加器

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

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

Seg:段寄存器

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

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

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

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

指令格式:

[標號:]操作碼[操作數,…] [;注釋]

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

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

傳送指令MOV

格式:

MOV目標,源;目標源

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

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

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

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

指令格式:MOVOP1,OP2

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

MOVAX,DATAMOVDS,AX

堆棧操作指令

數據進棧指令:先修改指針,后源內容入棧

PUSH源;(SP)-2SP

;源((SP))

數據出棧指令:先將指針內容送到目標,后修改指針

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

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

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

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

PUSH[DI]

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

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

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

取偏移地址指令LEA

格式:LEA目標,源

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

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段內),AL裝入要轉換的代碼在表中的序號,并將XLAT指令執行的結果存于AL中。

序號0123

4...TABLE30H31H32H

33H34H..

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

MOVAX,SEGTABLEMOVDS,AXLEABX,TABLEMOVAL,3

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

輸入INAcc,端口;將端口數據讀出送入CPU

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

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

執行指令后,根據結果置標志位:

CF、SF、ZF、OF、AF、PF算術運算指令包括加、減、乘、除四種運算,以及相應的十進制調整指令。算術運算是對象可以是有符號數或無符號數。加、減運算用相同的指令來進行,但對乘、除運算要用不同的指令。對于加、減運算,操作數是否有符號及結果的判斷(是否溢出)是用戶的事,計算機則是按相同的方法進行運算。加法指令加法/減法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,結果存OP1中例:SUBAX,BX;AX(AX)-(BX)

例:設AL=64H,AH=0A8H,求執行下列指令的結果和標志位的狀態。

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

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

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

溫馨提示

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

評論

0/150

提交評論