版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024新城區(qū)基礎(chǔ)設(shè)施應(yīng)急搶修服務(wù)合同2篇
- 2024施工合同規(guī)范:生態(tài)景觀工程施工與維護(hù)合同3篇
- 2024年魚池轉(zhuǎn)讓與養(yǎng)殖產(chǎn)業(yè)一體化發(fā)展合作協(xié)議3篇
- 2024年網(wǎng)絡(luò)商城品牌授權(quán)供貨合同
- 一類醫(yī)療器械地區(qū)經(jīng)銷協(xié)議模板版B版
- 分娩后皮膚知識(shí)培訓(xùn)課件
- 2024年集體土地農(nóng)業(yè)用途承包合同
- 2024戰(zhàn)略采購項(xiàng)目合作合同版B版
- 2024模具生產(chǎn)自動(dòng)化改造項(xiàng)目合同3篇
- 2024年貸款車輛使用及車輛租賃與銷售管理協(xié)議3篇
- 護(hù)理查房-糖尿病足 PPT課件
- 市政工程監(jiān)理規(guī)劃范本(完整版)
- 強(qiáng)力夯實(shí)加固地基質(zhì)量通病防治
- 《流體力學(xué)》課件
- (高清正版)T-CAGHP 015—2018地質(zhì)災(zāi)害治理工程監(jiān)理預(yù)算標(biāo)準(zhǔn)(試行)
- Q∕GDW 12083-2021 輸變電設(shè)備物聯(lián)網(wǎng)無線節(jié)點(diǎn)設(shè)備技術(shù)規(guī)范
- 公司物流倉儲(chǔ)規(guī)劃方案及建議書
- 智能掃地機(jī)器人畢業(yè)設(shè)計(jì)
- 佳能EOS7D數(shù)碼單反相機(jī)說明書
- 大型焰火燃放活動(dòng)方案審批表
- 管道保溫層厚度的計(jì)算方法
評(píng)論
0/150
提交評(píng)論