《單片機原理與實驗教程》課件第3章_第1頁
《單片機原理與實驗教程》課件第3章_第2頁
《單片機原理與實驗教程》課件第3章_第3頁
《單片機原理與實驗教程》課件第3章_第4頁
《單片機原理與實驗教程》課件第3章_第5頁
已閱讀5頁,還剩148頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章CS-51指令系統(tǒng)

3.1概述3.2尋址方式3.3指令系統(tǒng)

3.4偽指令習(xí)題與思考題3.1概述

計算機是高度自動化的機器,它能自動進行運算和處理事務(wù)。整個自動操作過程是由CPU中的控制器完成的。控制器自動執(zhí)行存放在存儲器中的指令,而每一條指令規(guī)定計算機完成某種操作。計算機能直接識別的只能是0和1編碼組成的指令,這種編碼稱為機器碼或機器指令。由機器碼編制的計算機能識別和執(zhí)行的程序稱為目標程序。每一條指令包含兩個基本部分:操作碼和操作數(shù)。操作碼表明指令要執(zhí)行的操作性質(zhì),操作數(shù)說明參數(shù)與操作的數(shù)據(jù)或數(shù)據(jù)所存放的地址。

MCS-51機器語言指令根據(jù)其指令編碼的長短不同有單字節(jié)指令、雙字節(jié)指令和三字節(jié)指令之分。

1.單字節(jié)指令

單字節(jié)指令格式由8位二進制編碼表示,有兩種形式:(1)8位編碼全表示操作碼。例如,空操作指令NOP,其機器碼為

00000000(2)8位編碼中包含操作碼和寄存器編碼,例如:

MOV

A,Rn這條指令的功能是把寄存器Rn(n=0,1,2,3,4,5,6,7)中的內(nèi)容送到累加器A中去,其機器碼為假設(shè)n=0,則寄存器編碼為Rn=000(參見指令表),則指令MOVA,R0的機器碼為E8H,其中操作碼11101表示執(zhí)行把寄存器中的數(shù)據(jù)傳送到A中去的操作。000為R0寄存器的編碼

2.雙字節(jié)指令雙字節(jié)指令格式中,指令的編碼由兩個字節(jié)組成,該指令存放在存儲器時需要占用兩個存儲器單元。例如:

MOV

A,#DATA這條指令的功能是將立即數(shù)DATA送到累加器A中去。假設(shè)立即數(shù)DATA=85H,則其機器碼為

3.三字節(jié)指令

三字節(jié)指令格式中第一字節(jié)為操作碼,其后兩字節(jié)為操作數(shù)。例如:

MOVdirect,#DATA這條指令的功能是把立即數(shù)DATA送到地址為direct的地址單元中去。假設(shè)direct=78H,DATA=80H,則指令MOV78H,#80H的機器碼為用二進制編碼表示的機器語言指令閱讀困難,寫起來費力,且難以記憶,因此在微機控制系統(tǒng)中采用匯編語言(用助記符和專門的語言規(guī)則表示指令的功能和特征)指令來編寫程序。本章使用MCS-51的匯編語言來描述其指令功能。一條匯編語言指令中最多包含四個區(qū)段,如下所示:這四個區(qū)段之間要用分隔符分開:標號區(qū)段與操作碼區(qū)段之間用冒號(:)隔開,操作碼與操作數(shù)之間用空格隔開,操作數(shù)與注釋區(qū)段之間用分號(;)分隔。如果操作數(shù)區(qū)段中有兩個以上的操作數(shù),則在操作數(shù)之間要用逗號(,)分隔開。例如,把立即數(shù)F0H送累加器的指令為標號區(qū)段是由用戶定義的符號組成的,必須用英文大寫字母開始。標號區(qū)段可有可無。若一條指令中有標號區(qū)段,則該標號代表該指令第一個字節(jié)所存放的存儲器單元的地址,故標號又稱符號地址,在匯編時,把該地址賦值給標號。操作碼區(qū)段是指令的功能部分,不能缺省。它是便于記憶的助記符。例如,MOV是數(shù)據(jù)傳送的助記符,ADD是加的助記符。操作數(shù)區(qū)段是指令要操作的數(shù)據(jù)信息。根據(jù)指令的不同功能,操作數(shù)可以有3個、2個、1個或沒有操作數(shù)。上例中,操作數(shù)區(qū)段包含兩個數(shù)——A和#0F0H,它們之間由逗號分隔。其中第二個操作數(shù)為立即數(shù)F0H,它是用十六進制數(shù)表示的以字母開頭的數(shù)據(jù)。為區(qū)別于在操作區(qū)段出現(xiàn)的字符,故以字母開始的十六進制數(shù)據(jù)前都要加0,即把立即數(shù)F0H寫成0F0H(這里的H表示此數(shù)為十六進制數(shù),若為二進制數(shù),則用B表示,十進制數(shù)用D表示或省略)。注釋區(qū)段可有可無。加入注釋的目的是為了便于閱讀。程序設(shè)計者對指令或程序段做簡要的功能說明,在閱讀程序,尤其是在調(diào)試程序時會帶來很大的方便。用匯編語言指令編寫的程序,計算機不能直接識別,必須通過匯編程序把它翻譯成機器碼,這個翻譯過程稱為匯編。用人工查指令表的方法把匯編語言指令逐條翻譯成對應(yīng)的機器碼,稱為手工匯編,手工匯編對程序員來說,在某種場合經(jīng)常用到。3.2尋址方式

在有操作數(shù)的指令中,操作數(shù)的數(shù)據(jù)可能在指令中或在寄存器中,也可能在存儲器中或在I/O接口中。為正確地執(zhí)行操作,就要對這些寄存器、存儲器和I/O接口進行編號(也稱地址號)。而在指令中要對這些設(shè)備內(nèi)的數(shù)據(jù)進行操作就要指出地址。指令中所規(guī)定的尋找操作地址的方式稱為尋址方式。每一種計算機都具有多種尋址方式。尋址方式的多少及尋址功能是反映指令系統(tǒng)優(yōu)劣的主要指標之一。

MCS-51指令系統(tǒng)的尋址方式有以下幾種:

·立即尋址;

·直接尋址;

·寄存器尋址;

·寄存器間接尋址;

·基址寄存器加變址寄存器尋址;

·相對尋址;下面逐一介紹各種尋址方式。

1.立即尋址

立即尋址方式是操作數(shù)包含在指令字節(jié)中,指令操作碼后面字節(jié)的內(nèi)容就是操作數(shù)本身,其數(shù)值由程序員在編制程序時指定,以指令字節(jié)的形式存放在程序存儲器中。例如:機器碼助記符注釋

7470 MOVA,#70 ;70H→A指令功能是將立即數(shù)70H送入累加器A,這條指令為雙字節(jié)指令,操作數(shù)本身70H跟在操作數(shù)74H后面,以指令形式存放在程序存儲器內(nèi)。在MCS-51指令系統(tǒng)中還有一條立即數(shù)為雙字節(jié)的指令:機器碼助記符注釋

908200

MOVDPTR,#8200H;82H→DPH,00H→DPL這條指令存放在程序存儲器中,占三個存儲單元。請注意,在MCS-51匯編語言指令表中,立即數(shù)通常用data表示,立即數(shù)前面必須有符號“#”,上述兩例寫成一般格式為

MOV

A,#data

MOV

DPTR,#data16這里,#data表示8位立即數(shù),#data16表示16位立即數(shù)。

2.直接尋址

直接尋址是指在指令中含有操作數(shù)的直接地址,該地址指出了參與操作的數(shù)據(jù)所在的地址或位地址。直接尋址方式中操作數(shù)存儲的空間有三種:

(1)內(nèi)容數(shù)據(jù)存儲器的低128個字節(jié)單元(00H~7FH)。 例如:

MOV

A,70H;(70H)→A此指令功能是把內(nèi)部RAM的70H單元的內(nèi)容送入累加器A。

(2)位地址空間。例如:

MOV

C,00H;直接將(00H)→進位標志位

(3)專用功能寄存器。專用功能寄存器只能用直接尋址方式進行訪問,例如:

MOV

IE,#85H;立即數(shù)85H→中斷允許寄存器IE

IE專用功能寄存器的字節(jié)地址為0A8H。

3.寄存器尋址

由指令指出某一個寄存器中的內(nèi)容為操作數(shù)的尋址方式稱為寄存器尋址方式。在這種尋址方式中,指令的操作碼中包含了參加操作的寄存器的編號(指令操作碼字節(jié)的低3位指明尋址的寄存器)。MCS-51指令系統(tǒng)中寄存器尋址的工作寄存器是R0~R7。例如:

INC

R0;(R0)+1→R0此指令的功能是對寄存器R0進行操作,使其內(nèi)容加1。

4.寄存器間接尋址

由指令指出某一個寄存器的內(nèi)容作為操作數(shù)的地址的尋址方式稱為寄存器間接尋址方式。這里應(yīng)注意,在寄存器間接尋址方式中,存放在寄存器中的內(nèi)容不是操作數(shù),而是操作數(shù)所在的存儲器單元地址。寄存器間接尋址只能使用寄存器R0或R1,作為地址指針來尋址內(nèi)部RAM(00H~FFH)中的數(shù)據(jù)。寄存器間接尋址也適用于訪問外部RAM,可使用R0、R1或DPTR作為地址指針。寄存器間接尋址用符號“@”表示。例如:

MOV

A,@R0[DW];((R0))→A此指令的功能是把R0所指向的內(nèi)部RAM單元中的內(nèi)容送累加器A。若R0內(nèi)容為60H,而內(nèi)部RAM的60H單元的內(nèi)容是3BH,則指令MOVA,@R0的功能是將3BH這個數(shù)送到累加器A,如圖3-1所示。圖3-1寄存器間接尋址

5.基址寄存器加變址寄存器間接尋址

這種尋址方式用于訪問程序存儲器中的數(shù)據(jù)表格,它把基址寄存器(DPTR或PC)和變址寄存器(A)的內(nèi)容作為無符號數(shù)相加形成16位的地址,訪問程序存儲器中的數(shù)據(jù)表格。例如:

MOVC

A,@A+DPTR;A+DPTR所指的程序存儲器的內(nèi)容→A

MOVC

A,@A+PC ;A+PC所指的程序存儲器的內(nèi)容→A

A中為無符號數(shù),指令功能是把A的內(nèi)容和DPTR或PC的內(nèi)容相加得到程序存儲器的有效地址,把該寄存器單元中的內(nèi)容送到A。

6.相對尋址這類尋址方式是以PC的內(nèi)容作為基地址,加上指令中給定的偏移量所得結(jié)果作為轉(zhuǎn)移地址,它只適用于雙字節(jié)轉(zhuǎn)移指令。偏移量是帶符號數(shù),在-128~+127范圍內(nèi),用2的補碼表示。例如:

JCrel;C=1跳轉(zhuǎn)第一字節(jié)為操作碼,第二字節(jié)就是相對于程序計數(shù)器PC當(dāng)前地址的偏移量rel。若轉(zhuǎn)移指令操作碼放在1000H單元,偏移量存放在1001H單元,則該指令執(zhí)行后PC已為1002H。設(shè)偏移量rel為05H,則轉(zhuǎn)移地址為1007H。當(dāng)C=1時,將轉(zhuǎn)去執(zhí)行1007H單元中的指令。3.3指令系統(tǒng)

3.3.1指令分類

MCS-51指令系統(tǒng)有42種助記符,代表了33種操作功能,這是因為有的功能可以有幾種助記符(例如數(shù)據(jù)傳送的助記符有MOV、MOVC、MOVX)。指令功能助記符與操作數(shù)各種可能的尋址方式相結(jié)合,共構(gòu)成111種指令。這111種指令中,如果按字節(jié)分類,單字節(jié)指令49條,雙字節(jié)指令45條,三字節(jié)指令17條。若從指令執(zhí)行的時間看,單機器周期(12個時鐘周期)指令64條,雙機器周期指令45條,4機器周期指令2條(乘、除)。在12MHz晶振的條件下,單機器周期指令、雙機器周期指令、4機器周期指令的執(zhí)行時間分別為1μs、2μs和4μs。由此可見,MCS-51指令系統(tǒng)具有存儲空間效率高和執(zhí)行速度快的特點。按指令的功能,MCS-51指令系統(tǒng)可分為下列五類:(1)數(shù)據(jù)傳送類;(2)算術(shù)運算類;(3)邏輯操作類;(4)位操作類;(5)控制轉(zhuǎn)移類;下面根據(jù)指令的功能特性分類介紹。在分類介紹之前,先把描述指令的一些符號做簡單說明。

·Rn:現(xiàn)行選定的寄存器區(qū)中的8個寄存器R7~R0(n=0~7)。

·direct:8位內(nèi)部數(shù)據(jù)存儲單元地址。它可以是一個內(nèi)部數(shù)據(jù)RAM單元(0~127)或一個專用寄存器地址(即I/O口、控制寄存器、狀態(tài)寄存器等(128~255))。

·@Ri:通過寄存器R1或R0間接尋址的8位內(nèi)部數(shù)據(jù)RAM單元(0~255),i=0,1。

·#data:指令中的8位立即數(shù)。

·#data16:指令中的16位立即數(shù)。

·Addr16:16位目標地址,用于LCALL和LJMP指令,可指向64KB程序存儲器地址空間的任何地方。

·Addr11:11位目標地址,用于ACALL和AJMP指令,轉(zhuǎn)向至下一條指令第一字節(jié)所在的同一個2KB程序存儲器地址空間內(nèi)。

·rel:帶符號(2的補碼)的8位偏移量字節(jié)。用于SJMP和所有條件轉(zhuǎn)移指令中。偏移字節(jié)是相對于下一條指令的第一字節(jié)計算的,在-128~+127范圍內(nèi)取值。

·bit:內(nèi)部數(shù)據(jù)RAM或?qū)S霉δ芗拇嫫骼锏闹苯訉ぶ肺弧?/p>

·DPTR:數(shù)據(jù)指針,可用作16位地址寄存器。

·A:累加器。

·B:專用寄存器,用于乘(MUL)和除(DIV)指令中。

·C:進位標志或進位位。

·/bit:表示對該位操作數(shù)取反。

·(X):X中的內(nèi)容。

·((X)):由X所指出的單元中的內(nèi)容。3.3.2數(shù)據(jù)傳送類指令數(shù)據(jù)傳送指令一般的操作是把源操作數(shù)傳送到指令所指定的目標地址,指令執(zhí)行后,源操作數(shù)不變,目的操作數(shù)為源操作數(shù)所代替。數(shù)據(jù)傳送是一種最基本、最主要的操作,它是編制程序時使用最頻繁的一類指令,數(shù)據(jù)傳送的速度對整個程序的執(zhí)行效率有很大的影響。在MCS-51指令系統(tǒng)中,數(shù)據(jù)傳送指令非常靈活,它可以把數(shù)據(jù)方便地傳送到數(shù)據(jù)存儲器和I/O口。數(shù)據(jù)傳送類指令用到的助記符有:MOV、MOVX、MOVC、XCH、XCHD、PUSH、POP。數(shù)據(jù)傳送類指令源操作數(shù)和目的操作數(shù)的尋址方式及傳送路徑如圖3-2所示。數(shù)據(jù)傳送類指令見表3-1。圖3-2

MCS-51傳送指令示意圖表3-1數(shù)據(jù)傳送類指令

數(shù)據(jù)傳送類指令比較簡單,由圖3-2和表3-1很容易理解各種指令的功能,故不做詳細敘述,下面僅做一些必要的說明。

1.以直接地址為目標操作數(shù)和源操作數(shù)的傳送指令助記符機器碼

MOVdirect1,direct2

10000101+直接地址(目標)

+直接地址(源)這是一條三字節(jié)指令,指令的第一字節(jié)為操作碼,第二字節(jié)為源操作數(shù)的地址,第三字節(jié)為目標操作數(shù)的地址。源操作數(shù)和目標操作數(shù)的地址都以直接地址形式表示,它們可以是內(nèi)部RAM存儲器或?qū)S眉拇嫫?。指令的功能很強,能實現(xiàn)內(nèi)部RAM之間、專用寄存器之間或?qū)S眉拇嫫髋c內(nèi)部RAM之間的直接數(shù)據(jù)傳送。例如:

MOV

E0H,78H其中,目標操作數(shù)地址E0H為累加器的字節(jié)地址,源操作數(shù)地址78H為內(nèi)部RAM單元地址,指令的功能是把內(nèi)部RAM的78H單元的數(shù)據(jù)傳送到累加器ACC中去。指令的機器碼為85H、78H和E0H。

2.累加器與外部數(shù)據(jù)存儲器之間的數(shù)據(jù)傳送指令

該類指令有下面兩組。

1)由DPTR指出外部數(shù)據(jù)的存儲地址

(1)外部數(shù)據(jù)存儲器內(nèi)容送累加器。助記符機器碼功能

MOVX

A,@DPTR11100000A←((DPTR))執(zhí)行這條指令時,P3.7引腳上輸出RD[TX-有效信號,用作外部數(shù)據(jù)存儲器的讀選通信號。DPTR所含的16位地址信息由P0口(低8位)和P2口(高8位)輸出。選中單元的數(shù)據(jù)由P0口輸入到累加器,P0口做分時復(fù)用的總線。

(2)累加器內(nèi)容送外部數(shù)據(jù)存儲器。助記符機器碼功能

MOVX

@DPTR,A111100000(DPTR)←A執(zhí)行這條指令時,P3.6引腳上輸出WR[TX-有效信號,用作外部數(shù)據(jù)存儲器的寫選通信號。DPTR所含的16位地址信息由P0口(低8位)和P2口(高8位)輸出。累加器的內(nèi)容由P0口輸出,P0口做分時復(fù)用總線。

2)由Ri指出外部數(shù)據(jù)的存儲器地址

(1)外部數(shù)據(jù)存儲器內(nèi)容送累加器。助記符機器碼功能

MOVXA,@Ri1110001i(i取值0或1,以下同)

A←((Ri))+((P2))執(zhí)行該指令時,在P3.7引腳上輸出有效信號,用作外部數(shù)據(jù)存儲器的讀選通信號。Ri所包含的低8位地址由P0口輸出,而高8位地址由P2口輸出。選中單元的數(shù)據(jù)由P0口輸入到累加器。【例3-1】設(shè)外部數(shù)據(jù)存儲器2097H單元中的內(nèi)容為80H,則在執(zhí)行下列指令后,A中的內(nèi)容為80H。

MOV

P2,#20H

MOV

R0,#97H

MOVX

A,@R0

(2)累加器內(nèi)容送外部數(shù)據(jù)存儲器。助記符機器碼功能

MOVX@Ri,A1111001i(Ri)+(P2)←(A)執(zhí)行該指令時,在P3.6引腳上輸出有效信號,用作外部數(shù)據(jù)存儲器的寫選通信號。P0口上分時輸出由Ri指定的低8位地址及輸入外部數(shù)據(jù)存儲器單元的內(nèi)容。高8位地址由P2口輸出。

3.程序存儲器內(nèi)容送累加器的傳送指令

這類指令有兩條,常用于查表。

(1)助記符機器碼功能MOVCA,@A+PC10000011PC←(PC)+1,A←((A)+PC))這條指令的功能是以PC作為基址寄存器,A的內(nèi)容作為無符號數(shù)和PC內(nèi)容(下一條指令第一字節(jié)地址)相加后得到一個16位的地址,把該地址指出的程序存儲器單元的內(nèi)容送到累加器A。

【例3-2】(A)=30H,執(zhí)行下列指令:地址指令

1000H:MOVCA,@A+PC結(jié)果為:程序存儲器中1031H單元的內(nèi)容送入A。這條指令的優(yōu)點是不改變專用功能寄存器及PC的狀態(tài),根據(jù)A的內(nèi)容就可以取出表格中的常數(shù)。缺點是表格只能存放在該條查表指令后面的256個單元之內(nèi),因此表格大小受到限制,而且表格只能被該段程序所使用。(2)助記符機器碼功能

MOVCA,@A+DPTR

10010011A←((A)+(DPTR))

這條指令的功能是以DPTR作為基址寄存器,A的內(nèi)容作為無符號數(shù)和DPTR的內(nèi)容相加,得到一個16位的地址,把該地址指出的程序存儲器單元的內(nèi)容送到累加器A。

【例3-3】[HT][ST](DPTR)=8100H,(A)=40H,執(zhí)行下列指令:

MOVC

A,@A+DPTR結(jié)果為:程序存儲器中8140H單元的內(nèi)容送入累加器A。這條指令的執(zhí)行結(jié)果只與指針DPTR及累加器A的內(nèi)容有關(guān),與該指令存放的地址無關(guān),因此,表格大小和位置可在64KB程序存儲器中任意安排,一個表格可被各個程序塊公用。

4.棧操作指令在MCS-51內(nèi)部RAM中可以設(shè)定一個后進先出的區(qū)域(LIFO),稱為堆棧。在專用功能寄存器中有一個堆棧指針SP,它指出棧頂?shù)奈恢?。在指令系統(tǒng)中有下列兩條用于數(shù)據(jù)傳送的棧操作指令。

(1)進棧指令。

助記符機器碼功能

PUSHdirect11000000+直接地址SP←(SP)+1,(SP)←(direct)

這條指令的功能是首先將棧指針SP的內(nèi)容加1,然后把直接地址指出的單元內(nèi)容傳送到棧指針SP所指的內(nèi)部RAM單元中。

【例3-4】

(SP)=60H,(ACC)=30H,(B)=70H,執(zhí)行下列指令:

PUSHACC;SP←(SP)+1,即SP←61H,61H←(ACC)

PUSHB;SP←(SP)+1,即SP←62H,62H←(B)結(jié)果為:(61H)=30H,(62H)=70H,(SP)=62H。(2)出棧指令。助記符機器碼功能

POPdirect

11010000+直接地址direct←((SP)),

SP←(SP)-1這條指令的功能是將棧指針SP所指的內(nèi)部RAM單元的內(nèi)容送入直接地址指出的字節(jié)單元中,棧指針SP的內(nèi)容減1。【例3-5】(SP)=62H,(62H)=70H,(61H)=30H,執(zhí)行下列指令:

POPDPH;DPH←((SP)),SP←(SP)-1

POPDPL;DPL←((SP)),SP←(SP)-1結(jié)果為:(DPTR)=7030H,(SP)=60H。執(zhí)行指令POPdirect不影響標志,但當(dāng)直接地址為PSW時,可以使一些標志改變。這也是通過指令強行修改標志的一種方法。

【例3-6】假設(shè)已把PSW的內(nèi)容壓入棧頂,用下列指令修改PSW內(nèi)容,使F0、RS1、RS0均為1,最后用出棧指令把內(nèi)容送回程序狀態(tài)字PSW,實現(xiàn)對PSW內(nèi)容的修改。MOVC

R0,SP;取棧指針

ORL

@R0,#38H;修改棧頂內(nèi)容

POP

PSW;修改PSW

5.字節(jié)交換指令這組指令的功能是將累加器A的內(nèi)容和源操作數(shù)內(nèi)容相互交換。源操作數(shù)有寄存器尋址、直接尋址和寄存器間接尋址等尋址方式。助記符機器碼功能

XCHA,Rn11001iii

(A)→(Rn)

XCHA,@Ri1100011i

(A)→((Ri))

XCHA,direct11000101+直接地址(A)(direct)

【例3-7】(A)=80H,(R7)=80H,執(zhí)行下例指令:

XCHA,R7;(A)(R7)結(jié)果為:(A)=08H,(R7)=80H。

6.半字節(jié)交換指令半字節(jié)交換指令只有一條:助記符機器碼功能

XCHDA,@Ri1101011i

(A3~A0)((R1)3~0)這條指令的功能是將A的低4位和R0或R1指出的RAM單元低4位相互交換,各自的高4位不變。3.3.3算術(shù)運算類指令

在MCS-51指令系統(tǒng)中,具有單字節(jié)的加、減、乘、除法指令(見表3-2),其運算功能比較強。算術(shù)運算指令執(zhí)行的結(jié)果將影響進位(CY)、輔助進位(AC)和溢出標志位(OV)等,但是加1和減1指令不影響這些標志。對標志位有影響的所有指令列于表3-3中,其中包括一些非算術(shù)運算的指令在內(nèi)。注意,對于特殊功能寄存器(專用寄存器)字節(jié)地址、D0H或位地址D0H~D7H進行操作也會影響標志。表3-2算術(shù)運算類指令

表3-3影響標志位的指令

注:“×”表示指令執(zhí)行對標志位有影響(置位或復(fù)位)

算術(shù)運算類指令可分為8組。

1.加法指令助記符機器碼

ADDA,Rn

001010iii

ADDA,direct00100101+直接地址

ADDA,@Ri0010011i

ADDA,#data00100100+立即數(shù)這組加法指令的功能是把指出的字節(jié)變量加到累加器A上,其結(jié)果放在累加器中。相加過程中如果位7(d7)有進位(即C7=1),則進位位CY置1,否則清0;如果位3(d3)有進位,則輔助進位位AC置1,否則清0;如果位6(d6)有進位輸出(即C6=1)而位7沒有或者位7有進位輸出而位6沒有,則溢出標志OV置1,否則清0。源操作數(shù)有寄存器尋址、直接尋址、寄存器間接尋址和立即尋址等尋址方式。

【例3-8】[HT][ST](A)=85H,(R0)=20H,(20H)=0AFH,執(zhí)行下列指令:

ADD

A,@R0運算過程如下:結(jié)果為:(A)=34H,CY=1,AC=1,OV=1。對于加法,溢出只能發(fā)生在兩個加數(shù)符號相同的情況下。在進行帶符號數(shù)的加法運算時,溢出標志OV是一個重要的編程標志,利用它可以判斷兩個帶符號數(shù)相加時,和數(shù)是否溢出(即和大于+127或小于-128)。2.帶進位加法指令

助記符機器碼

ADDC

A,Rn00111iii

ADDC

A,direct00110101+直接地址

ADDC

A,@Ri0011011i

ADDC

A,#data00110100+立即數(shù)這組帶進位加法指令的功能是把所指出的字節(jié)變量、進位標志與累加器A內(nèi)容相加,結(jié)果留在累加器中,如果位7有進位,則進位位CY置1,否則清0。如果位3有進位,則輔助進位位AC置1,否則清0。如果位6有進位而位7沒有或者位7有進位而位6沒有,則溢出標志OV置位,否則清0。尋址方式和ADD指令相同。

【例3-9】[HT][ST]

(A)=85H,(20H)=0FFH,CY=1,執(zhí)行下列指令:

ADDC

A,20H運算過程如下:結(jié)果為:(A)=85H,CY=1,AC=1,OV=0。

3.增量指令

助記符機器碼

INCA00000100

INCRn00001iii

INCdirect00000101+直接地址

INC@Ri0000011i

INCDPTR10100011這組增量指令的功能是把所指出的變量加1,若原來為0FFH,將溢出為00H,不影響任何標志。操作數(shù)有寄存器尋址、直接尋址和寄存器間接尋址方式。注意:[HT]當(dāng)用本指令修改輸出口Pi(即指令中的direct為端口P0~P3,地址分別為80H,90H,A0H,B0H)時,其功能是修改輸出口的內(nèi)容。指令執(zhí)行過程中,首先讀入端口的內(nèi)容,然后在CPU中加1,繼而輸出到端口。這里讀入端口的內(nèi)容來自端口的鎖存器而不是端口的引腳。

【例3-10】[HT][ST](A)=0FFH,(R3)=0FH,(30H)=0F0H,(R0)=40H,(40H)=00H,執(zhí)行下列指令:

INCA;A←(A)+1

INCR3;R3←(R3)+1

INC30H;30H←(30H)+1

INC@R0;(R0)←((R0))+1結(jié)果為:(A)=00H,(R3)=10H,(30H)=0F1H,(40H)=01H,不改變PSW狀態(tài)。

4.十進制調(diào)整指令

助記符機器碼

DAA

11010100這條指令對累加器參與的BCD碼加法運算所獲得的8位結(jié)果(在累加器中)進行十進制調(diào)整,使累加器中的內(nèi)容調(diào)整為2位BCD碼數(shù)。該指令執(zhí)行的過程如圖3-3所示。圖3-3

DAA指令執(zhí)行示意圖

【例3-11(A)=56H,(R5)=67H,執(zhí)行下列指令:ADDA,R5

DAA結(jié)果為:(A)=23H,CY=1。

5.帶進位減法指令

助記符機器碼

SUBB

A,Rn10011iii

SUBB

A,direct10010101+直接地址

SUBB

A,@Ri1001011i

SUBB

A,#data10010100+立即數(shù)這組帶進位減法指令的功能是從累加器中減去指定的變量和進位標志,結(jié)果存放在累加器中。進位減法過程中如果位7需借位,則CY置1,否則CY清0;如果位3需借位,則AC置數(shù),否則AC清0;如果位6需借位,而位7不需借位,或者位7需借位,而位6不需借位,則溢出標志位OV置1,否則清0。在帶符號數(shù)運算時,只有當(dāng)符號不相同的兩數(shù)相減時才發(fā)生溢出。

6.減1指令

助記符機器碼

DECA00010100

DECRn00011iii

DECdirect00010101+直接地址

DEC@Ri0001011i這組指令的功能是將指定的變量減1。若原來為00H,則減1后下溢為0FFH,不影響標志位。當(dāng)指令中的直接地址direct為P0~P3端口(即80H,90H,A0H,B0H)時,指令可用來修改一個輸出口的內(nèi)容,即是一條具有讀-修改-寫功能的指令。指令執(zhí)行時,首先讀入端口的原始數(shù)據(jù),在CPU中執(zhí)行減1操作,然后再送到端口。注意:此時讀入的數(shù)據(jù)來自端口的鎖存器而不是引腳。

【例3-12】[HT][ST](A)=0FH,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH,執(zhí)行下列指令:

DECA;A←(A)-1

DECR7;R7←(R7)-1

DEC30H;30H←(30H)-1

DEC@R1;R1←((R1))-1結(jié)果為:(A)=0EH,(R7)=18H,(30H)=0FFH,(40H)=0FEH,不影響標志。7.乘法指令助記符機器碼

MULAB10100100這條指令的功能是將累加器A和寄存器B中的無符號8位整數(shù)相乘,其16位積的低位字節(jié)存在累加器A中,高位字節(jié)存在寄存器B中。如果積大于255(0FFH),則溢出標志位OV置位,否則OV清0。進位標志總是清0。

【例3-13】(A)=50H,(B)=0A0H,執(zhí)行下列指令:MULAB結(jié)果為:(B)=32H,(A)=00H(即積為3200H),CY=0,OV=1。

8.除法指令

助記符機器碼

DIVAB10100100這條指令的功能是把累加器A中的8位無符號整數(shù)除以寄存器B中的8位無符號整數(shù),所得商的整數(shù)部分存放在累加器A中,余數(shù)部分存放在寄存器B中。進位位CY和溢出標志位OV清0。如果原來B中的內(nèi)容為0(被零除),則結(jié)果A和B中內(nèi)容不定,且溢出標志位OV置位。在任何情況下,都將CY

清0。

【例3-14】[HT][ST](A)=0FBH,(B)=12H,執(zhí)行下列指令:

DIVAB結(jié)果為:(A)=0DH,(B)=11H,CY=0,OV=0。3.3.4邏輯操作類指令邏輯操作類指令見表3-4。表3-4邏輯操作類指令

1.簡單邏輯操作指令

(1)累加器清0指令。助記符機器碼

CLRA11100100這條指令的功能是將累加器A清0,不影響CY、AC、OV等標志。

(2)累加器內(nèi)容按位取反指令。助記符機器碼

CPLA11110100這條指令的功能是將累加器A的每一位邏輯取反,原來為1的位變0,原來為0的位變1,不影響標志。

【例3-15】[HT][ST]執(zhí)行下列指令:

CPLA結(jié)果為:(A)=01010101B

(3)左循環(huán)移位指令。

·累加器內(nèi)容循環(huán)左移:助記符機器碼

RLA00100011這條指令的功能是把累加器ACC的內(nèi)容向左循環(huán)移1位,位7循環(huán)移入位0,不影響標志,如下所示。

·累加器帶進位左循環(huán)移位指令:助記符機器碼

RLCA00110011這條指令的功能是將累加器ACC的內(nèi)容和進位標志一起向左循環(huán)移1位,ACC的位7移入進位位CY,CY移入ACC的0位,不影響其他標志位,如下所示。

(4)右循環(huán)移位指令。

·累加器內(nèi)容循環(huán)右移指令:助記符機器碼

RRA00000011這條指令的功能是將累加器ACC的內(nèi)容向右循環(huán)移1位,ACC的位0循環(huán)移入ACC的位7,不影響標志,如下所示。

·累加器帶進位右循環(huán)移位指令。助記符機器碼

RRCA00010011這條指令的功能是將累加器ACC的內(nèi)容和進位標志CY一起向右循環(huán)移一位,ACC的位0移入CY,CY移入ACC的位7不影響其他標志位,如下所示。

(5)累加器半字節(jié)交換指令。助記符機器碼

SWAPA11000100這條指令的功能是將累加器ACC的高半字節(jié)(ACC7~ACC4)和低字節(jié)(ACC3~ACC0)互換。

【例3-16】(A)=0C5H,執(zhí)行下列指令:

SWAPA結(jié)果為:(A)=5CH。

2.邏輯與指令

助記符 機器碼

ANLA,Rn010111iii

ANLA,direct01010101+直接地址

ANL@Ri

0101011i

ANLA,#data01010100+立即數(shù)

ANLdirect,A01010010+直接地址

ANLdirect,#data01010011+直接地址+立即數(shù)這組指令的功能是在指出的變量之間以位為基礎(chǔ)進行邏輯與操作,將結(jié)果存放在目的變量中。操作數(shù)有寄存器尋址、直接尋址、寄存器間接尋址和立即數(shù)尋址等尋址方式。當(dāng)這條指令用于修改一個輸出口時,作為原始口數(shù)據(jù)的值將從輸出口數(shù)據(jù)鎖存器(P0~P3)讀入,而不是讀引腳狀態(tài)。

【例3-17】[HT][ST]已知有下列指令:

ANLA,R1;A←(A)∧(R1)

ANLA,70H;A←(A)∧(70H)

ANLA,@R0;A←(A)∧((R0))

ANLA,#07H;A←(A)∧07H

ANL70H,A;70H←(70H)∧(A)

ANLP1,#0F0H;P1←(P1)∧0F0H設(shè)(A)=07H,(R0)=0FDH,則執(zhí)行指令

ANLA,R0后,結(jié)果為即(A)=05H。

3.邏輯或指令助記符機器碼

ORLA,Rn01001iii

ORLA,direct01000101+直接地址

ORLA,@Ri0101011i

ORLA,#data01000100+立即數(shù)

ORLdirect,A01000010+直接地址

ORLdirect,#data01000011+直接地址+立即數(shù)這組指令的功能是在所指出的變量之間執(zhí)行以位為基礎(chǔ)的邏輯或操作,結(jié)果存到目的變量中。操作數(shù)有寄存器尋址、直接尋址、寄存器間接尋址和立即尋址等尋址方式。同ANL指令類似,ORL指令用于修改輸出口數(shù)據(jù)時,原始數(shù)據(jù)值為口鎖存器內(nèi)容。

【例3-18】[HT][ST]已知有下列指令:

ORLA,R7;A←(A)∨(R7)

ORLA,70H;A←(A)∨(70H)

ORLA,@R1;A←(A)∨((R1))

ORLA,#03H;A←(A)∨03H

ORL70H,#7FH;70H←(70H)∨7FH

ORL78H,A;78H←(78H)∨(A)設(shè)(P1)=05H,(A)=33H,則執(zhí)行指令:

ORLP1,A后,結(jié)果為即(P1)=37H。

4.邏輯異或指令

助記符機器碼

XRLA,Rn01101iii

XRLA,direct01100101+直接地址

XRLA,@Ri0110011i

XRLA,#data01100100+立即數(shù)

XRLdirect,A01100010+直接地址

XRLdirect,#data01100011+直接地址+立即數(shù)這組指令的功能是在所指出的變量之間執(zhí)行以位為基礎(chǔ)的邏輯異或操作,結(jié)果存放到目的變量中去。操作數(shù)有寄存器尋址、直接尋址、寄存器間接尋址和立即尋址等尋址方式。對輸出口Pi(i=0,1,2,3),與ANL指令一樣是對口鎖存器內(nèi)容讀出修改。

【例3-19】[HT][ST]已知有下列指令:

XRLA,R4;A←(A)(R4)

XRLA,50H;A←(A)(50H)

XRLA,@R0;A←(A)((R0))

XRLA,#00H;A←(A)00H

XRL30H,A;30H←(30H)(A)

XRL40H,#0FH;40H←(40H)0FH設(shè)(A)=90H,(R3)=73H,則執(zhí)行指令

XRLA,R3后,結(jié)果為即(A)=0E3H。

3.3.5位操作類指令

MCS-51單片機內(nèi)部有一個布爾處理機,因此對位地址空間具有豐富的位操作指令,如表3-5所示。表3-5位操作及控制轉(zhuǎn)移類指令

1.數(shù)據(jù)位傳送指令

助記符機器碼

MOVC,bit10100010+位地址

MOVbit,C10010010+位地址這組指令的功能是把由源操作數(shù)指出的布爾變量送到目的操作數(shù)指定的位中去,其中一個操作數(shù)必須為進位標志,另一個可以是任何直接尋址位,不影響其他寄存器和標志位。例如:

MOV

C,60H;CY←(20H).6

MOV

P1.0,C;P1.0←CY

2.位變量修改指令

助記符 機器碼

CLRC11000011

CLRbit11000010+位地址

CPLC10110011

CPLbit10110010+位地址

SETBC11010011

SETBbit11010010+位地址這組指令的功能是將操作數(shù)指出的位清0、取反、置1,不影響其他標志位。例如:

CLR

C;CY←0CLR

27H;(24H).7←0CPL

08H;(21H).0←SETB

P1.7;P1.7←1

3.位變量邏輯與指令

助記符 機器碼

ANL

C,bit10000010+位地址

ANL

C,/bit10110000+位地址這組指令的功能是,如果源位的布爾值是邏輯0,則進位標志清0,否則進位標志保持不變。操作數(shù)前的斜線(/)表示用尋址位的邏輯非作源值,但不影響源位本身,不影響其他標志位。源操作數(shù)只有直接位尋址方式。【例3-20】設(shè)P1為輸入口,P3.0做輸出線,執(zhí)行下列指令:MOV

C,P1.0;CY←(P1.0)ANL

C,P1.1;CY←(CY)∧(P1.1)ANL

C,/P1.2;CY←(CY)∧(

)MOV

P3.0,C;P3.0←CY

結(jié)果為:P3.0=(P1.0)∧(P1.1)∧(

)。4.位變量邏輯或指令

助記符 機器碼

ORL

C,bit00100010+位地址

ORL

C,/bit10100000+位地址這組指令的功能是,如果源位的布爾值為1,則置位進位標志,否則進位標志CY保持原來狀態(tài)。同樣,斜線(/)表示邏輯非。

【例2-21】[HT][ST]

P1口為輸出口,執(zhí)行下列指令:

MOVC,00H;CY←(20H).0

ORLC,01H;CY←(CY)∨(20H).1

ORLC,02H;CY←(CY)∨(20H).2

ORLC,03H;CY←(CY)∨(20H).3

ORLC,04H;CY←(CY)∨(20H).4

ORLC,05H;CY←(CY)∨(20H).5

ORLC,06H;CY←(CY)∨(20H).6

ORLC,07H;CY←(CY)∨(20H).7

MOVP1.0,C;P1.0←CY

結(jié)果為:內(nèi)部RAM的20H單元中只要有一位為1,則P1.0輸出就為1。5.位變量條件轉(zhuǎn)移指令

助記符 機器碼轉(zhuǎn)移條件

JCrel

01000000+相對地址rel

CY=1

JNCrel

01010000+相對地址rel

CY=0

JBbit,rel

00100000+位地址+相對地址rel

(bit)=1

JNBbit,rel00110000+位地址+相對地址rel

(bit)=0

JBCbit,rel00010000+位地址+相對地址rel

(bit)=1這一組指令的功能為

·JC:如果進位標志CY為1,則執(zhí)行轉(zhuǎn)移。

·JNC:如果進位標志CY為0,則執(zhí)行轉(zhuǎn)移。

·JB:如果直接尋址位的值為1,則執(zhí)行轉(zhuǎn)移。

·JNB:如果直接尋址位的值為0,則執(zhí)行轉(zhuǎn)移。

·JBC:如果直接尋址位的值為1,則執(zhí)行轉(zhuǎn)移,然后將直接尋址的位清0。

3.3.6控制轉(zhuǎn)移類指令1.無條件轉(zhuǎn)移指令

(1)絕對轉(zhuǎn)移指令。助記符 機器碼

AJMPaddr11

a10a9a800001a7a6a5a4a3a2a1a0

這條指令是2KB范圍內(nèi)的無條件跳轉(zhuǎn)指令,功能是把程序的執(zhí)行轉(zhuǎn)移到指定的地址。該指令在運行時先將PC加2,然后通過把指令中的a10~a0→(PC10~PC0),得到跳轉(zhuǎn)目的地址(即PC15PC14PC13PC12PC11a10a9a8a7a6a5a4a3a2a1a0),送入PC。目標地址必須與AJMP后面一條指令的第一個字節(jié)在同一個2KB區(qū)域的存儲器區(qū)內(nèi)。指令的操作碼與轉(zhuǎn)移目標地址所在的頁號有關(guān)。

【例3-22】有如下指令:

KWR:AJMPaddr11

如果addr11=00100000000B,標號KWR的地址為1030H,則執(zhí)行該條指令后,程序?qū)⑥D(zhuǎn)移到1100H。此時該指令的機器碼為21H,00H(a10a9a8=001,故指令第一字節(jié)為21H)。

(2)相對轉(zhuǎn)移(短跳轉(zhuǎn))指令。助記符 機器碼

SJMPrel

10000000+相對地址rel這是條無條件跳轉(zhuǎn)指令,執(zhí)行時在PC加2后,把指令中帶符號的位移值加到PC上,并計算出轉(zhuǎn)向地址。因此,轉(zhuǎn)向的目標地址可以在這條指令前128B到后127B之間。

【例3-23】[HT][ST]有如下指令:

KRD:SJMPPKRD如果標號KRD的值為0100H(即指令SJMP的機器碼存放于0100H和0101H這兩個單元中),標號PKRD的值為0123H,即跳轉(zhuǎn)的目的地址為0123H,則指令的第二字節(jié)(相對偏移量)應(yīng)為

rel=0123H-0102H=21H(3)長跳轉(zhuǎn)指令。助記符 機器碼

LJMPaddr16

00000010+a15…a8a7…a0

這條指令的功能是把指令的第二和第三字節(jié)分別裝入PC的高位和低位字節(jié)中,無條件地轉(zhuǎn)向地址。轉(zhuǎn)移的目標地址可以在64KB程序存儲器地址空間的任何地方,不影響任何標志位。

【例3-24】[HT][ST]執(zhí)行指令

LJMP8100H不管這條長跳轉(zhuǎn)指令存放在什么地方,執(zhí)行時將使程序轉(zhuǎn)移到8100H單元。這和AJMP、SJMP指令是有差別的。

(4)散轉(zhuǎn)指令。助記符 機器碼

JMP@A+DPTR

01110011這條指令的功能是把累加器中8位無符號數(shù)與數(shù)據(jù)指針DPTR中的16位數(shù)相加,將結(jié)果作為下條指令地址送入PC,不改變累加器和數(shù)據(jù)指針內(nèi)容,也不影響標志位。利用這條指令能實現(xiàn)程序的散轉(zhuǎn)。

【例3-25】如果累加器A中存放著待處理命令編號(0~7),程序存儲器中存放著標號為PMTB的轉(zhuǎn)移表首地址,則執(zhí)行下面的程序后,將根據(jù)A中的命令編號轉(zhuǎn)向相應(yīng)的命令處理程序。

PM:MOV

R1,A;(A)*3→A

RLA

ADDA,R1MOVDPTR,#PMTB;轉(zhuǎn)移表首地址→DPTR

JMP@A+DPTR;跳轉(zhuǎn)到((A)+(DPTR))間接地址單元

PMTB:LJMPPM0;轉(zhuǎn)向命令0處理入口

LJMPPM1;轉(zhuǎn)向命令1處理入口

LJMPPM2;轉(zhuǎn)向命令2處理入口

LJMPPM3;轉(zhuǎn)向命令3處理入口

LJMPPM4;轉(zhuǎn)向命令4處理入口

LJMPPM5;轉(zhuǎn)向命令5處理入口

LJMPPM6;轉(zhuǎn)向命令6處理入口

LJMPPM7;轉(zhuǎn)向命令7處理入口

2.條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令是依某種特定條件轉(zhuǎn)移的指令,條件滿足時轉(zhuǎn)移(相當(dāng)于一條相對轉(zhuǎn)移指令),條件不滿足時則順序執(zhí)行下面的指令。目的地址在下一條指令的起始地址為中心的256個字節(jié)范圍中(-128~+127)。當(dāng)條件滿足時,先把PC加到指向下一條指令的第一個字節(jié)地址,再把有符號的相對偏移量加到PC上,計算出轉(zhuǎn)移地址。助記符 機器碼轉(zhuǎn)移條件

JZrel01100000+相對地址rel(A)=0

JNZrel01110000+相對地址rel(A)≠0上述兩條指令的功能是:·JZ:如果累加器ACC的內(nèi)容為0,則執(zhí)行轉(zhuǎn)移?!NZ:如果累加器ACC的內(nèi)容不為0,則執(zhí)行轉(zhuǎn)移。

3.比較不相等轉(zhuǎn)移指令助記符機器碼

CJNEA,direct,rel10110101+直接地址+相對地址

CJNEA,#data,rel10110100+立即數(shù)+相對地址

CJNERn,#data,rel10111rrr+立即數(shù)+相對地址

CJNE@Ri,#data,rel1011011i+立即數(shù)+相對地址這組指令的功能是比較前面兩個操作數(shù)的大小,如果它們的值不相等則轉(zhuǎn)移。在PC加載下一條指令的起始地址后,通過把指令最后一個字節(jié)的有符號的相對偏移量加到PC上,并計算出轉(zhuǎn)向地址。如果第一個操作數(shù)(無符號整數(shù))小于第二個操作數(shù),則進位標志CY置位,否則CY清0,不影響任何一個操作數(shù)的內(nèi)容。操作數(shù)有寄存器尋址、直接尋址、寄存器間接尋址和立即尋址等尋址方式。

【例3-26】[HT][ST]根據(jù)A的內(nèi)容大于60H、等于60H、小于60H三種情況作不同的處理程序。程序如下:

CJNEA,#60H,NEQ;(A)不等于60H轉(zhuǎn)移

EQ:…;(A)=60H處理程序

NEQ:JCLOW;(A)<60H轉(zhuǎn)移;(A)>60H處理程序

LOW:;(A)<60H處理程序

4.減1不為0轉(zhuǎn)移指令

助記符機器碼

DJNZRn,rel11011rrr+相對地址

DJNZdirect,rel11010101+直接地址+相對地址這組指令把源操作數(shù)減1,結(jié)果回送到源操作數(shù)中去,如果結(jié)果不為0則轉(zhuǎn)移。源操作數(shù)有寄存器尋址和直接尋址兩種尋址方式。通常程序把內(nèi)容RAM單元用作程序循環(huán)計數(shù)器。

【例3-27】延時程序舉例。

START:SETB

P1.1;P1.1←1

DL:MOV30H,#03H;30H←03H(置初值)DL0:MOV31H,#0F0H;31H←0F0H(置初值)

DL1:DJNZ31H,DL1;31H←(31H)-1,(31H)不為0重復(fù)執(zhí)行

DJNZ30H,DL0;30H←(30H)-1,(30H)不為0轉(zhuǎn)DL0

CPLP1.1;P1.1求反

SJMPDL;轉(zhuǎn)DL這段程序的功能是通過延時,在P1.1輸出一個方波,可以用改變30H和31H的初值的方法來改變延時時間,從而改變方波的頻率。

5.調(diào)用及返回指令

在程序設(shè)計中,常常把具有一定功能的公用程序段編制成子程序。當(dāng)主程序轉(zhuǎn)至子程序時調(diào)用指令,而在子程序的最后安排一條返回指令,使執(zhí)行完子程序后再返回到主程序。為保證正確返回,每次調(diào)用子程序時自動將下條指令地址保存到堆棧,返回時按先進后出原則再把地址彈出到PC中。調(diào)用及返回指令見表3-6。表3-6控制程序轉(zhuǎn)移指令

注:如果第一操作數(shù)小于第二操作數(shù),則CY置位,否則CY清0。

(1)絕對調(diào)用指令。助記符 機器碼

ACALLaddr11a10a9a810001a7a6a5a4a3a2a1a0

這條指令無條件地調(diào)用位于指令所指地址的子程序。指令執(zhí)行時PC加2,以獲得下一條指令的地址,并把這16位地址壓入堆棧,棧指針加2;然后把指令中的a10~a0值送入PC的PC10~PC0位,PC的PC15~PC11不變,獲得子程序的起始地址(即PC15PC14PC13PC12PC11a10a9a8a7a6a5a4a3a2a1a0)后轉(zhuǎn)向執(zhí)行子程序。所用的子程序的起始地址必須與ACALL后面一條指令的第一個字節(jié)在同

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論