計(jì)算機(jī)指令系統(tǒng)課件_第1頁
計(jì)算機(jī)指令系統(tǒng)課件_第2頁
計(jì)算機(jī)指令系統(tǒng)課件_第3頁
計(jì)算機(jī)指令系統(tǒng)課件_第4頁
計(jì)算機(jī)指令系統(tǒng)課件_第5頁
已閱讀5頁,還剩93頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第三章計(jì)算機(jī)指令系統(tǒng)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

主要內(nèi)容

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

3-1指令格式

一,匯編語言指令格式

[標(biāo)號(hào):]操作碼操作數(shù)1,操作數(shù)2[;注釋]

換行表示一條指令結(jié)束。

例:LOOP:MOVA,#40H;取參數(shù)

標(biāo)號(hào):指令的符號(hào)地址MOV__move傳送

2.操作碼:指明指令功能。XCH__exchange交換

ANL__andlogic與邏輯運(yùn)算

異或運(yùn)算

3.操作數(shù):指令操作對(duì)象XRL__exc1usiveor

MUL__Multiply乘法

數(shù)據(jù)、地址、寄存器名及約定符號(hào)。

RR__rotateright右循環(huán)

4.注釋行:說明指令在程序中的作用。

SJMP__shortjump短跳轉(zhuǎn)

操作碼和操作數(shù)是指令主體。

RET__return子程序返回

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

二,機(jī)器語言指令格式

操作碼[操作數(shù)1][操作數(shù)2]

有單字節(jié)、雙字節(jié)和三字節(jié)指令。

匯編語言指令中操作碼和操作數(shù)是指令主體,稱為指令可執(zhí)

行部分,指令表中可查出對(duì)應(yīng)指令代碼。

舉例:

匯編語言:機(jī)器語言:

MOVA,ROE8H111八1八八八

nWi_1__11_J1__11_J1_J_V-/

MOVR6,#32H7E32H01110101

八八11八八1八

UU11UU1U

MOV40H,#100H754064H01000000

01100100

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

3-2指令尋址方式

3-2-1操作數(shù)類型

位(b)一位尋址區(qū)中的一位二進(jìn)制數(shù)據(jù)

字節(jié)(B)—8位二進(jìn)制數(shù)據(jù)

字(W)—16位雙字節(jié)數(shù)據(jù)

3-2-2尋址方式

一立即尋址方式

指令中給出實(shí)際操作數(shù)據(jù)(立即數(shù)),一般用于為

寄存器或存儲(chǔ)器賦常數(shù)初值。

舉例:

8位立即數(shù):MOVA,#40H;A—40H

直6位立即數(shù):MOVDPTR,#2100H;DPTR-2100H

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

二,直接尋址方式

指令操作數(shù)是存儲(chǔ)器單元地址,數(shù)據(jù)在存儲(chǔ)器單元

中。MOVA,40H;A—(40H)

例:設(shè)存儲(chǔ)器兩個(gè)單元的內(nèi)容如圖所

示,

41H

執(zhí)行指令后

MOVA,40HA=56H40H

直接尋址方式對(duì)數(shù)據(jù)操作時(shí),地址是固定

值,而地址所指定的單元內(nèi)容為變量形式。

思考題:直接尋址方式指令和立即尋址方式指令的形

式有什么不同?

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

三寄存器尋址方式

指令操作數(shù)為寄存器名,數(shù)據(jù)在寄存器中。

MOVA,RO;A—RO|01000000目01000000

設(shè)指令執(zhí)行前A=20H,R0=40H,ARO

執(zhí)行指令后,A=40H,R0=40H

四寄存器間接尋址方式

指令的操作數(shù)為寄存器名,寄存器中為數(shù)據(jù)地址。

存放地址的寄存器稱為間址寄存器或數(shù)據(jù)指針。

例:MOVA,硼0;AHRO)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

五變址間接尋址方式

數(shù)據(jù)在存儲(chǔ)器中,指令給出的寄存器中為數(shù)據(jù)的

基地址和偏移量。

數(shù)據(jù)地址=基地址+偏移量。

例:MOVCA,@A+DPTR;A.(A+DPTR)

設(shè)指令執(zhí)行前A=09H,DPTR=2000H,存儲(chǔ)器單元內(nèi)容

如圖所不。執(zhí)行指令后,.尋址區(qū)

A=12HHUmo

DPTR=2000H鯽

六.位尋址方式?HllOlDffll

指令給出位地址。一位數(shù)據(jù)在存儲(chǔ)器位尋址

區(qū)。

例:MOVC,40H;Cy~(位地址40H)

指令執(zhí)行前CO,位地址40H存儲(chǔ)器單元如

圖,執(zhí)行指令后,Cv二微稱原理與接口技主一

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

3-3MCS-51指令系統(tǒng)分析

3-3-2算術(shù)運(yùn)算指令

邏楫運(yùn)笄指令

3-4布爾支置操作指令

轉(zhuǎn)移指令

3-6子程序調(diào)用和返回指令

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

3-3-1數(shù)據(jù)傳送指令

實(shí)現(xiàn)寄存器、存儲(chǔ)器之間的數(shù)據(jù)傳送。

一.內(nèi)部傳送指令:片內(nèi)數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送。

二.外部傳送指令:片外數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送。

三.交換指令:片內(nèi)數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送。

四.堆棧操作指令:片內(nèi)數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送。

五.查表指令:程序存儲(chǔ)器數(shù)據(jù)傳送。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

一、內(nèi)部傳送指令:

實(shí)現(xiàn)片內(nèi)數(shù)據(jù)存儲(chǔ)器中數(shù)據(jù)傳送。

指令格式:MOV目的操作數(shù).源操作數(shù)

尋址方式:立即尋址、宜接尋址、粵存器尋址、寄存需間址。

關(guān)于8位數(shù)據(jù)內(nèi)部傳送指令的操作數(shù)

I累加器A

■存儲(chǔ)單元

■工作寄存器(直接尋址)

I工作寄存器(間接尋址)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

1)以累加器為目的操作數(shù)的指令

MOVA,Rn;A-Rn,Rn=R0~R7

MOVA,direct;A-(direct),

MOVA,@Ri;A-(Ri),Ri=R0>Rx

MOVA,#data;A—data,

關(guān)于助記符:

第一條指令中,刖代表的是工作寄存器R0?R7。

第二條指令中,di【ect就是指的直接地址。

第三條指令中,Ri代表的是R0和R1,@表示間接尋址。

第四條指令,將立即數(shù)data送到A中,#后面是數(shù)值。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

下面我們通過一些例子加以說明:

MOVA,RI;將工作寄存器Ri中的值送入A,RI中的值保持不變。

MOVA,30H;將內(nèi)存30H單元中的值送入A,30H單元中的值保持不變。

MOVA,@R1;先看RI中是什么值,把這個(gè)值作為地址,并將這個(gè)地址單元中

的值送入A中。如執(zhí)行命令前R1中的值為20H,則是將20H單元中的值送入A中。

MOVA,#34H;將立即數(shù)34H送入A中,執(zhí)行完本條指令后,A中的值是34H。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

2)以寄存器Rn為目的操作的指令

MOVRn,direel

MOVRn,#data

MOVRn,A

這組指令功能是把源地址單元中的內(nèi)容送入工作寄存

器,源操作數(shù)內(nèi)容不變。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.finepri

(3)以直接地址為目的操作數(shù)的指令

例:

MOVdiredRn

5MOV20H,R1

MOVdirect,AMOV20H,A

MOVdirect,@RiMOV20H,30H

MOV20H,硼1

MOVdirect,#data

MOV20H,#34H

MOVdirect,direct2

微機(jī)原理與接o技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.finepri

(4)以間接地址為目的操作數(shù)的指令

MOV@Ri,A

MOV@Ri,direct

MOV@Ri,#data

例:

MOV@R0,A

MOV@RI,20H

MOV@RO,#34H

機(jī)原理口術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.finepri

(5)十六位數(shù)的傳遞指令

MOVDPTR,#data16

8051是一種8位機(jī),這是唯一的一條16位立即數(shù)傳遞指令

,其功能是修一個(gè)16位的立即數(shù)送入DPTR中去。其中高8

位送入DPH,低8位送入DPL。

例:MOVDPTR,#1234H

執(zhí)行完了之后DPH中的值為12H,DPL中的值為34H。反之

,如果我們分別向DPH,DPL送數(shù),則結(jié)果也一樣。

如有下面兩條指令:

MOVDPH,#35H

MOVDPL,#12H

配t相當(dāng)于執(zhí)行了MOVDPTR,#3512HO

微機(jī)原理與手妾口技術(shù)一

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

例1:順序執(zhí)行下列指令序列,求每一步執(zhí)行結(jié)果

MOVA,#30HA=30H

MOV4FH,A(4FH)=30H

MOVRO,#20HR0=20H

MOV@R0,4FH(20H)=30H

MOV21H,20H(21H)=30H

習(xí)題L用兩種尋址方式實(shí)現(xiàn),將片內(nèi)RAM60H單元的數(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.finepri

習(xí)題2:綜合練習(xí):

給出每條指令執(zhí)行后的結(jié)果

MOV23H,#30H(23h)=30h

MOV12H,#34H(12h)=34h

MOVRO,#23H(R0)=23H

MOVR7#22H

5(R7)=22H說明:用括號(hào)括

MOVR112H

5(R1)=12H起來代表內(nèi)容,

MOVA,@R0(A)=30H

如則代表

MOV34H,R1(34H)=34H(23H)

內(nèi)部RAM23H單元

MOV45H,34H

(45H)=34H中的值,則

MOVDPTR#6712H(DPTR)=6712(A)

5代表累加器A單元

MOV12H5DPHH

MOVR0,DPL(12H)=67H中的值。

MOVA,@R0(R0)=12H

(A)=67H

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

說明:

1.一條指令中不能同時(shí)出現(xiàn)兩個(gè)工作寄存器:

非法指令:MOVRI,R2

MOVR2,@R0

2,間址寄存器只能使用RO、Rio

非法指令:MOVA,@R2

3.SFR區(qū)只能直接尋址,不能用寄存器間接尋址。

非法指令:MOVRO,#80H

MOVA,@R0

4.指令表:(指令字節(jié)數(shù),機(jī)器周期數(shù))

只有指令表中的指令才有對(duì)應(yīng)指令代碼,計(jì)算機(jī)才能

熱行。編程時(shí),不能隨意創(chuàng)造發(fā)明指令。

思考:找出配對(duì)指令,實(shí)現(xiàn)反向傳送。

微和盾理與售口琴匯―工^181與定予

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.finepri

二、外部傳送指令

實(shí)現(xiàn)片外數(shù)據(jù)存儲(chǔ)器和A累加器之間的數(shù)據(jù)傳送。

指令格式:MOVX目的操作數(shù),源操作數(shù)

尋址方式:片外數(shù)據(jù)存儲(chǔ)器用寄存器間址方式J

1.DPTR作16位數(shù)據(jù)指針,尋址64KB片外RAM空間

MOVXA,@DPTR;A-(DPTR)讀數(shù)據(jù)

MOVX@DPTR,A;(DPTR)-A寫數(shù)據(jù)

2.Ri作8位數(shù)據(jù)指針,尋址256B片外RAM空間

MOVXA,@Ri;A-(Ri)讀數(shù)據(jù)

MOVX研i,A;(印)一A寫數(shù)據(jù)

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

小結(jié):

1、在51中,與外部存儲(chǔ)器RAM打交道的只可以是A累加器

o所有需要送入外部RAM的數(shù)據(jù)必需要通過A送去,而所有要讀入的

外部RAM中的數(shù)據(jù)也必需通過A讀入。

內(nèi)外部RAM的區(qū)別內(nèi)部RAM間可以直接進(jìn)行數(shù)據(jù)的傳遞,而外部則

不行,比如,要將外部RAM中某一單元(設(shè)為0100H單元的數(shù)據(jù))送

入另一個(gè)單元(設(shè)為0200H單元),也必須先將0100H單元中的內(nèi)容

讀入A,然后再送到0200H單元中去。

2、要讀或?qū)懲獠康腞AM,當(dāng)然也必須要知道RAM的地址,在前兩條

指令中,地址是被直接放在DPTR中的。而后兩條指令,由于?。?/p>

R0或R1)只是一個(gè)8位的寄存器,所以只提供低8位地址。因?yàn)橛袝r(shí)

擴(kuò)展的外部RAM的數(shù)量比較少,少于或等于256個(gè),就只需要提供8

位地址就夠了。

3、使用時(shí)應(yīng)當(dāng)首先將要讀或?qū)懙牡刂匪腿隓PTR或Ri中,然后再用

速寫命令。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

例2:實(shí)現(xiàn)片外數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳(2000H)一(21OOH)。

若(2000H);X

MOVDPTR,#2000H;DPTR=2000H

MOVXA,@DPTR;A=X

MOVDPTR,#2100H;DPTR=2100H

MOVX@DPTR,A;(2100H)=X

^^RAM片外數(shù)據(jù)存儲(chǔ)器不能直接

內(nèi)容尋址。下列為舊法指令:

DPTR一X

???MOVXA,2000H

DPTR一2imXMOVX2100H,2000H

思考題:為什么對(duì)DPTR的數(shù)據(jù)傳送使用內(nèi)部傳送指令?

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

習(xí)題3:將片外RAM0000H單元的數(shù)據(jù)傳送到片內(nèi)RAM的

66H單元。

MOVDPTR,#0000H

MOVXA,@DPTR

MOV60H,A

習(xí)題4:將外部RAM中10OH單元中的內(nèi)容送入外部RAM中

200H單元中。

MOVDPTR,#0100H

MOVXA,@DPTR

MOVDPTRJ0200H

MOVX@PTR,A

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

三、交換指令

實(shí)現(xiàn)片內(nèi)RAM區(qū)的數(shù)據(jù)雙向傳

送。片內(nèi)RAM

地址內(nèi)容

1.字節(jié)交換指令2BH35H

XCHA,Rn;A一刖2AH29H

XCHA,@Ri;A—(Ri)???

XCHA,direct;A—(n)20H

例:設(shè)A二29H,執(zhí)行指令XCHA,2AH后,

A=38H(2AH)=29H

習(xí)題4:將片內(nèi)RAM60H單元與61H單元的數(shù)據(jù)交換。

XCH60H,61H一對(duì)嗎?

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

2.半字節(jié)交換指令

XCHDA,@Ri;A°?3T?。﹐?3

SWAPA;A4?7A。?3

是將A中的值的高、低4位進(jìn)行交換。

例:(A)二39H,則執(zhí)行S啪PA之后,A中的值就是93H。

怎么正好是這么前后交換呢?因?yàn)檫@是一個(gè)16進(jìn)制數(shù),每

1個(gè)16進(jìn)位數(shù)字代表4個(gè)二進(jìn)位。

注意,如果是這樣的:(A)二39,后面沒H,執(zhí)行SWAPA

之后,可不是(A)二93。要將它化成二進(jìn)制再算:39化為

二進(jìn)制是10111,也就是0001,01二高4位是0001,低4位

翻1,交換后是01110001,也就是71H,即113

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

書上例題

例3—7已知(A)=56H,(RO)=20H,(20H)=78H,

(10H)=18H,(R4)=8AH;

單獨(dú)執(zhí)行指令:

①XCHA,10H

②XCHA,R4

③XCHA,@R0

指令執(zhí)行后:①(A)=18H,(10H)=56H;

②(A)=8AH,(R4)=56H;

③(A)=78H,(RO)=20H,((RO))=(20H)=56H

例3—8已知(A)=7AH,(R1)=48H,(48H)=0DH;

執(zhí)行指令:XCHDA,@R1

行后:

=7DH,⑻)=48愎總觸上盤8H)=0AH。

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

片內(nèi)RAM

例?:將片內(nèi)和單

34-3RAM2AH2BH地址內(nèi)容

元中的單字節(jié)BCD碼形式的數(shù)轉(zhuǎn)換R1-2BH35H

R0一2AH38H

成壓縮式BCD碼存入20H單元。???

MOVA,#020H85H

壓縮式BCD碼

MOVRO,#2AH單字節(jié)BCD

千位百位

0000千位

MOVRL#2BH十位個(gè)位

0000百位

XCHDA,@R0

0000十位

SWAPA0000個(gè)位

XCHDA,@R1

XCHA,20HA|0000W00(Ol

交換片內(nèi)RAM40H單元和41H單元的低半字節(jié)。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

四、堆棧操作指令

入棧指令:PUSHn;SP--SP+1,(SP尸(n)

出棧指令:POPn;(n尸(SP),SP--SP-1

堆棧操作

PUSHdired

POPdirect

第一條指令稱之為推入,就是將direct中的內(nèi)容送入堆

棧中,第二條指令稱之為彈出,就是將堆棧中的內(nèi)容送

回到direct中。

推入指令的執(zhí)行過程是,首先將SP中的值加1,然后把

SP中的值當(dāng)作地址,將direct中的值送進(jìn)以SP中的值為

地址的RAM單元中。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

例3—5已知當(dāng)前(SP)=38H,(10H)=70H;

執(zhí)行指令:

PUSH10H

指令執(zhí)行后;(SP)=39H,(10H)=70H,(39H)=70Ho

該指令的執(zhí)行過程如圖3—9所示:

圖3-9入棧操作示意圖

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

例:(SP)=40H,(40H)=68H,(A)=20H

POPACC

指令執(zhí)行后;(SP)=3FH,(40H)=68H,(A)=68H

指令的執(zhí)行過程如圖3—10所示:

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

1、執(zhí)行第一條PUSHACC指令是這樣的:將SP中的值

例:加1,即變?yōu)?0H,然后將A中的值送到60H單元中,因

MOVSP,#5FH此執(zhí)行完本條指令后,內(nèi)存60H單元的值就是100,

同樣,執(zhí)行PUSHB時(shí),是將SP+1,即變?yōu)?1H,然后

MOVA,#100將B中的值送入到61H單元中,即執(zhí)行完本條指令后,

MOVB,#2061H單元中的值變?yōu)?0。

PUSHACC2、執(zhí)行過程是:將SP中的值(現(xiàn)在是61H)作為地址

,取61H單元中的數(shù)值(現(xiàn)在是20),送到B中,所以

PUSHB執(zhí)行完本條指令后B中的值是20,然后將SP減1,因此

POPB本條指令執(zhí)行完后,SP的值變?yōu)?0H,然后執(zhí)行POP

ACC,將SP中的值(60H)作為地址,從該地址中取數(shù)

POPACC(現(xiàn)在是100),并送到ACC中,所以執(zhí)行完本條指令

后,ACC中的值是100。

這有什么意義呢?

ACC中的值本來就是100,B中的值本來就是20,是的,在本例中,的確沒有意義

:實(shí)際工作中,則在PUSHB后往往要執(zhí)行其他指令,而且這些指令會(huì)把A中

B中的值改掉,所以在程序的結(jié)束,如果我們要把A和B中的值恢復(fù)原值,

那么這些指令就有意義了。微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

還有一個(gè)問題,

如果不用堆棧,比如說在PUSHACC指令處用MOV60H,A,在PUSHB

處用指令MOV61H,B,然后用MOVA,60H,MOVB,61H來替代兩條

POP指令,不是也一樣嗎?是的,從結(jié)果上看是一樣的,但是從過

程看是不一樣的,PUSH和POP指令都是單字節(jié),單周期指令,而MOV

指令則是雙字節(jié),雙周期指令。所以一般的計(jì)算機(jī)上都設(shè)有堆棧,

在編寫子程序,需要保存數(shù)據(jù)時(shí),通常也不采用后面的方法,而是

用堆棧的方法來實(shí)現(xiàn)。

例:寫出以下程序的運(yùn)行結(jié)果

MOV30H,#12

MOV31H,#23結(jié)果是30H中的值變?yōu)?3,而31H中的值則

PUSH30H變?yōu)?2。也就兩者進(jìn)行了數(shù)據(jù)交換。從這

PUSH31H個(gè)例子可以看出:使用堆枝時(shí),人枝的書

寫順序和出枝的書寫順序必須相反,才能

20P30H保證數(shù)據(jù)被送回原位,否則就要出錯(cuò)了。

MP31H

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

例:設(shè)A=02,B=56H,執(zhí)行下列指令后,

SP=?,A=?,B=?

SBR:MOVSP,#30H;設(shè)棧底

PUSHA

PUSHB

MOVA,#0

MOVB,#01

■■■

POPB

POPA

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

五、查表指令

實(shí)現(xiàn)從程序存儲(chǔ)器讀取數(shù)據(jù)到A累加器,只能使用變

址間接尋址方式。

多用于查常數(shù)表程序,可直接求取常數(shù)表中的函數(shù)

值。

DPTR為基址寄存器

MOVCA,斛+DPTR;A—(A+DPTR)

查表范圍為64KB程序存儲(chǔ)器任意空間,稱為遠(yuǎn)程

查表指令。

PC為基址寄存器

MOVCA,砌+PC;PC=(PC)+1,AJA+PC)

常數(shù)表只能在查表指令后256B范圍內(nèi)。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

1例:查表法求Y=X20設(shè)X(0WXW15)在片內(nèi)RAM的20H單

元中,要求將查表求Y,存入片內(nèi)RAM21H單元。

1)ORG1000H

SQU:MOVDPTR,#TAB;確定表首地址(基地址)

MOVA,20H;取X(偏移量

MOVCA,@A+DPTR;查表求Y=X2

MOV21H,A;保存Y

RET;子程序結(jié)束

…;其它程序段

ORG3000H;常數(shù)表格首地址

TAB:DB00,01,04,09,…,225;平方表

微機(jī)原理與接口技術(shù)一二個(gè)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.finepr

例:查表法求Y=X2。設(shè)X(0WXW15)在片內(nèi)RAM的20H單

元中,要求將查表求Y,存入片內(nèi)RAM21H單元。

2)指令地址源程序

ORG1000H;程序起始地址

1000HSQU:MOVA,20H;取X

1002HADDA,#3;修正偏移量

1004HMOVCA,@A+PC;查表求YJ2

1005HMOV21H,A;存結(jié)果

1007HRET;子程序結(jié)束

1008HTAB:DB00,01,04;平方表

100BHDB09,…,225

蹄題:當(dāng)0WXW255時(shí),如何用查表法編程求YJ2。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

習(xí)題:找出指令錯(cuò)誤并改正:

1.MOVA,#1000H;A-1000H

2.MOVXA,1000H;A=(1000H)片外RAM

3.MOVCA,1000H;A-(1000H)片外ROM

4.MOVX60H,A;片外RAM(60H)-A

5.MOVRO,60H;片內(nèi)RAM:(61H)-(60H)

MOV61H,研0

6.XCHR1,R2;R1-fR2

7.MOVXDPTR,#2000H;DPTR<-2000H

;8蠢MOVX60H,@DPTR;片內(nèi)RAM一片外RAM

微機(jī)原理與接口技術(shù)一片』q

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

3-3-2算術(shù)運(yùn)算指令

與數(shù)據(jù)傳送指令不同,多數(shù)算術(shù)運(yùn)算指令會(huì)影響標(biāo)志

位的狀態(tài),即CPU執(zhí)行算術(shù)運(yùn)算指令后,根據(jù)數(shù)據(jù)操作

情況自動(dòng)設(shè)置標(biāo)志位的狀態(tài)。

狀態(tài)標(biāo)志

MCS-51的程序狀態(tài)字寄存器PSW為標(biāo)志寄存器。其

格式如下:

cyACFORS1RSOOV—p

微機(jī)原理與接口技吟—

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

1.標(biāo)志位(自動(dòng)段置狀態(tài))

1)Cy:進(jìn)位標(biāo)志位

保存運(yùn)算后最高位的進(jìn)位/借位狀態(tài),當(dāng)有進(jìn)位/借

位,Cy=1,否則Cy=O。

2)AC:輔助進(jìn)位標(biāo)志位

保存低半字節(jié)的進(jìn)位/借位狀態(tài),當(dāng)D3產(chǎn)生進(jìn)位/借

位,AC=1,否則AC=O。用于十進(jìn)制調(diào)整。

3)0V:3出標(biāo)志位

OV=Cy7?Cy6,補(bǔ)碼運(yùn)算產(chǎn)生流出0V=1,否則OV=0。

4)P:奇偶標(biāo)志位

反映累加器A中數(shù)據(jù)的奇偶性。當(dāng)1的個(gè)數(shù)為奇數(shù),

IP=1,否則P=0。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

2.用戶選擇位(編程設(shè)置狀態(tài))

1)F0:用戶自定義標(biāo)志位。RS1RSO工作寄存器

000區(qū)

2)RS1>RSO:

011區(qū)

工作寄存器區(qū)選擇位。102區(qū)

復(fù)位時(shí),PSW=OOH113區(qū)

例:復(fù)位后,設(shè)置使用工作寄存器

2區(qū),其余標(biāo)志位不變。

解:MOVPSW,#18H

CyACFORS1RSOOV—p

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

3-3-2算術(shù)運(yùn)算指令

完成片內(nèi)RAM和A中數(shù)據(jù)的加減乘除運(yùn)算。

一.加減指令

1.加法指令

1)不帶進(jìn)位加法:ADDA,源操作數(shù)

?ADDA,#DATA;例:ADDA,#10H

?ADDA,direct例:ADDA,10H

?ADDA,Rn;例:ADDA,R7

?ADDA,@Ri;例:ADDA,@R0

用途:將A中的值與其后面的值相加,最終結(jié)果回到A中。

例:MOVA,#30H則執(zhí)行完本條指令后,A

ADDA,#10H中的值為40H。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

ADD影響Cy、OV、AC、P

例1:A=3BH,PSW=0,執(zhí)行指令A(yù)DDA,#3BH

求:A=76H,Cy=0,OV=0,AC=1,P=1

PSW=01000001=41H

00111011

+00111011

01110110

2

CyACFORS1RSOOV—P

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

加法指令影響PSW中的標(biāo)志位。

兩個(gè)字節(jié)數(shù)相加時(shí):

①如果第7位有進(jìn)位,則Cy=1,否則Cv=o;

②如果第3位有進(jìn)位,IAC=1,否則AC=O;

③如果第6位有進(jìn)位,而第7位無進(jìn)位或第6位無

進(jìn)位而第7位有進(jìn)位(表示有符號(hào)數(shù)相加結(jié)果超出

表丞范圍),則0V=1,否則OV=0。若以J7,J6

表示第7,6位的進(jìn)位,則0V=J7十J6。

④相加的和存放在A中,如果結(jié)果中“「的個(gè)數(shù)為

奇數(shù)則P=1,否則P=0。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprin

書上例題:

例3—11試分析以下指令,寫出執(zhí)行結(jié)果,標(biāo)出各標(biāo)志位。

①已知(A)=04H,(R1)=OBH;

ADDA,R1;A-(A)+(R1)

解:執(zhí)行結(jié)果如下:(A)=00000100

+(R1)=00001011

00001111

///

000

0?0?0?0?1?1?1?1=0,結(jié)果為偶數(shù)個(gè)1,p=o;

第三位無進(jìn)位,AC=0;

所以指令執(zhí)行后,(

;A)=0FH,

J7?J6=0,OV=0(R1)=0BH,AC=0,P=0,OV

第7位無進(jìn)位,Cy=0o=0,Cy=0?

分析:由Cy,OV可知這兩個(gè)加數(shù)

1由翥作無符號(hào)數(shù)時(shí),和沒有超出范圍,

2魯看作有符號(hào)數(shù)時(shí),和未溢出。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

②已知(A)=07H,(R1)=OFBH;

ADDA,R1;A-(A)+(R1)

解:執(zhí)行結(jié)果如1(A)=00000111

+(R1)=11111011

00000010

1/1/1/

結(jié)果為奇數(shù)個(gè)1,P=1;

第3位有進(jìn)位,AC=1;

J7?J6=0,OV=0;

第7位有進(jìn)位,Cy=1o

所以指令執(zhí)行后,(A)=02H,(R1)=0FBH,AC=1

,P=0,OV=0,Cy=1o

由Cy,OV可知這兩個(gè)數(shù)

1看作無符號(hào)數(shù)時(shí),和超出八位進(jìn)制數(shù)表示范圍,

2看作有符號(hào)數(shù)時(shí),和來溢出與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

③已知(A)=09H,(R1)=7CH;

ADDA,R1;A-(A)+(R1)

解:執(zhí)行結(jié)果如下;(A)=00001001

+(R1)=01111100

10000101

///

結(jié)果為奇數(shù)個(gè)1,P=1;°11

第3位有進(jìn)位,AC=1;

J7?J6=1,OV=1;

第7位無進(jìn)位,Cy=0。

所以指令執(zhí)行結(jié)果為:(A)=85H,(R1)=7CH,AC=1

9OV=1,Cy=0,P=1o

分析:由Cy,OV可知兩個(gè)加數(shù)

斷無符號(hào)數(shù)時(shí),和未超出表示范圍;

看作有符號(hào)數(shù)時(shí),和港史陽——儲(chǔ)鎮(zhèn)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

④已知(A)=87H,(R1)=0F5H;

ADDA,R1A-(A)+(R1)

解:執(zhí)行結(jié)果如下:

(A)=10000111

+(R1)”二11「11人010。。1

100

0?1?1?1?1?1?0?0=1,結(jié)果為奇數(shù)個(gè)1,P=1;

第3位無進(jìn)位,AC=0;第7位有進(jìn)位,Cy=1o

J7?J6=1,OV=1;

所以指令執(zhí)行結(jié)果為:(A)=7CH,(R1)=0F5H,AC=0

,Cy=1,OV=1,P=1o

分析:由Cy,OV可知兩個(gè)加數(shù)

p看作為無符號(hào)數(shù)時(shí),和超出范圍,

騫作為有符號(hào)數(shù)時(shí),和溢出。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

產(chǎn)面的題目自行練習(xí)

MOV34H,#10H

MOVRO,#13H

MOVA,34H

ADDA,RO

MOVR1,#34H

ADDA,@R1A=16+19=35=23H

A=35+16=51=33H

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.finepri

練習(xí)

設(shè)(A)二0C3H/R0)二OAAH,

執(zhí)行指令A(yù)DDA,R0(A)11000011

+(R0)10101010

01101101

/

1

和為6DH

CY=1

OV=1

AC=O

P=1

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

2)帶進(jìn)位加法:

ADDCA,源操作數(shù)

ADDCA,Rn

ADDCA,direct

ADDCA,@Ri

ADDCA,#data

用途:

將A中的值和其后面的值相加,并且加上進(jìn)位位C中的值。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

ADDC影響Cy、OV、AC、P

例2:A=9AH,R2=E3H,PSW=0,執(zhí)行指令

ADDCA,R2后求:

A=7DH,Cy=1,0V=19AC=0,P=0,

PSW=1OOOO1OO=84H

10011010

11100011

+0

101111101

2

ACFORS1RSOOVP

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

例3—12設(shè)(A)=78H,(30H)=0A4H,Cy=1;

試分析指令:ADDCA,30H;A-(A)+(30H)+Cy

執(zhí)行情況。

解:執(zhí)行結(jié)果如下:(A)=01111000

(30H)=10100100

+(Cy)=_________________L

0?0?0?1?1?0?1=0,結(jié)果為偶數(shù)個(gè)1,P=0;

第3位無進(jìn)位,AC=0;

J7?J6=0,OV=0;

第7位有進(jìn)位,Cy=1。

所以指令執(zhí)行后:(A)=1DH,(30H)=0A4H,AC=0,

OM,Cy=1,P=Oo

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

為何使用帶進(jìn)位加法?

由于51單片機(jī)是一種8位機(jī),所以只能做8位的數(shù)學(xué)運(yùn)算

,但8位運(yùn)算的范圍只有0-255,這在實(shí)際工作中是不夠

的,因此就要進(jìn)行擴(kuò)展,一般是將2個(gè)8位的數(shù)學(xué)運(yùn)算合

起來,成為一個(gè)16位的運(yùn)算,這樣,可以表達(dá)的數(shù)的范

圍就可以達(dá)到0-65535。

如何合并呢?其實(shí)很簡單,讓我們看一個(gè)10進(jìn)制數(shù)的

例子:

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.finepri

例子:66+78o

這兩個(gè)數(shù)相加,平時(shí)我們根本不在意過程,但事實(shí)上我們

是這樣做的:先做6+8(低位),然后再做6+7,這是高位

o做了兩次加法。

之所以要分成兩次來做,是因?yàn)檫@兩個(gè)數(shù)超過了一位數(shù)所

能表達(dá)的范圍(0-9)o

計(jì)算機(jī)中做16位加法時(shí)同樣如此,先做低8位的,

如果兩數(shù)相加產(chǎn)生了進(jìn)位,也要做個(gè)標(biāo)記,這個(gè)

標(biāo)記就是進(jìn)位位C。在進(jìn)行高位加法是將這個(gè)C加

進(jìn)去。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

16位加法例子

例:1067H+10A0H,先做67H+A0H707H,而

107H顯然超過了OFFH,因此最終保存在A中的

是7,而1則到了PSW中的CY位了,換言之,CY

就相當(dāng)于是100H。然后再做10H+10H+CY,結(jié)果

是21H,所以最終的結(jié)果是2107H。

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

帶進(jìn)位加法指令A(yù)DDC用于多字節(jié)運(yùn)算

例:設(shè)雙字節(jié)數(shù)X存在片內(nèi)RAM41H、40H單元,Y存在

42H、43H單元,編程求Z二X+Y,并存入片內(nèi)RAM單元

44H、45H、46Ho

ADDS:MOVA,40H;取被加數(shù)低字節(jié)片內(nèi)RAM

地址內(nèi)容

ADDA,42H5概的1瞞字節(jié)

MOV44H,A;保存和的低字節(jié)46HZH

MOVA,41H;取被加數(shù)高字節(jié)45HZM

44HZL

ADDCA,43H施塞瓣翻字節(jié)

5I43HYH

MOV45H,A;保存和的高字節(jié)42HYL

MOVA,#0彳群章富尊鑿罐位41HXH

ADDCA,#040HxL

MOV46H,A

RET*手程朦獻(xiàn)

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

BCD調(diào)整指令:

DAA;對(duì)A中加法結(jié)果進(jìn)行調(diào)整

十進(jìn)制調(diào)整指令用于實(shí)現(xiàn)壓縮的BCD碼的加法運(yùn)算

,該指令的功能是對(duì)存放在累加器A中的和進(jìn)行調(diào)

整,變?yōu)锽CD碼。

十進(jìn)制加法指令:

ADDA,源操作數(shù)

DAA

帶進(jìn)位十進(jìn)制加法指令:

ADDCA,源操作數(shù)

DAA

注意:這條指令是必須跟在加法指令之后,

微機(jī)原理與接口技術(shù)

PDF文件使用"pdfFactoryPro"試用版本創(chuàng)建www.fineprint.cn

例3—17設(shè)(A)=78H,(R4)=41H,求執(zhí)行下列指

令的結(jié)果。

ADDA,R4

DAA(A)=01111000

解:+(R4)=01000001

溫馨提示

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

評(píng)論

0/150

提交評(píng)論