學(xué)習(xí)微機(jī)原理第1章緒論_第1頁
學(xué)習(xí)微機(jī)原理第1章緒論_第2頁
學(xué)習(xí)微機(jī)原理第1章緒論_第3頁
學(xué)習(xí)微機(jī)原理第1章緒論_第4頁
學(xué)習(xí)微機(jī)原理第1章緒論_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章緒論主講教師趙曉安

什么是單片機(jī)?

單片機(jī)的發(fā)展

單片機(jī)的特點和應(yīng)用領(lǐng)域

嵌入式系統(tǒng)

微型計算機(jī)的運算基礎(chǔ)第1章

緒論1.1.1單片機(jī)的概念單片機(jī),全稱單片微型計算機(jī),是微型計算機(jī)發(fā)展的一個分支。程序存儲器中央處理器并行I/O接口中斷系統(tǒng)串行I/O接口定時器/計數(shù)器時鐘振蕩器數(shù)據(jù)存儲器馮.諾依曼型哈佛型數(shù)據(jù)存儲器CPUI/O接口程序存儲器系統(tǒng)總線CPUI/O接口存儲器系統(tǒng)總線DBCBAB例:PC機(jī)例:MCS-51單片機(jī)微機(jī)組成結(jié)構(gòu)的兩大類型運算器的核心部件是算術(shù)/邏輯單元,在控制器的控制下對二進(jìn)制數(shù)進(jìn)行算術(shù)運算或邏輯運算。控制器是發(fā)布操作命令的機(jī)構(gòu),是計算機(jī)的指揮中心,控制計算機(jī)的各部分協(xié)調(diào)工作,用以自動執(zhí)行程序。1.中央處理器CPU主要由運算器和控制器組成。存儲器(類型、結(jié)構(gòu)、重要指標(biāo))RAM

正常工作時既可讀又可寫的存儲器

DRAM動態(tài)RAM,集成度高,外加刷新電路

SRAM靜態(tài)RAM,成本高、速度快

iRAM全集成化RAM,DRAM+刷新電路

NVRAMSRAM+EEPROM,不揮發(fā)即不易失

易失ROM

正常工作時只能讀不能寫的存儲器

PROM可編程ROM,廠家一次寫入

EPROM用戶可編程可擦寫ROM,紫外線擦除器

EEPROM電可擦寫可編程ROM,在線,讀快/寫慢

FlashEPROM閃速可編程可擦寫ROM不易失類型結(jié)構(gòu)WRA0A1A2A30000B1111B………D7D0RD地址寄存器地址譯碼器存儲陣列16×8輸出數(shù)據(jù)寄存器1111B圖l-216×8bitRAM的內(nèi)部結(jié)構(gòu)框圖ROM和RAM芯片均有分四組引腳線:(ROM另有特殊的引腳線)1、地址線傳送存儲器的地址碼,其根數(shù)決定存儲單元個數(shù)即字?jǐn)?shù)2、數(shù)據(jù)線傳送對某一單元進(jìn)行讀/寫的數(shù)據(jù),雙向決定一個單元內(nèi)存儲二進(jìn)制數(shù)的位數(shù),即字長3、控制線傳送讀/寫控制信號,以控制讀/寫操作4、電源線+5V和GND線存取周期存儲器從接到存儲單元地址開始,到讀出或?qū)懭霐?shù)據(jù)為止所用的時間。重要指標(biāo)例:芯片27324KB×8bit=32Kb

地址線12根,數(shù)據(jù)線8根芯片21141K×4bit

地址線10根,數(shù)據(jù)線4根存貯容量存儲容量=2地址線條數(shù)×數(shù)據(jù)線的條數(shù)bit

字?jǐn)?shù)(存儲單元個數(shù))×字長問:27648KB

地址線?根,數(shù)據(jù)線?根I/O接口是大規(guī)模集成電路芯片,是架設(shè)在微處理器和外設(shè)間的橋梁,實現(xiàn)兩者之間的速度、電平和信號性質(zhì)的匹配。

I/O接口微處理器I/O外設(shè)3.I/O接口和外設(shè)(1)地址總線AB(AdressBus)用來傳送CPU發(fā)出的地址碼,是單向總線。其條數(shù)由CPU型號決定,同時決定可直接尋址的內(nèi)存地址范圍.總線是在微型計算機(jī)各部分之間傳送信息的公共通道,也是溝通微型計算機(jī)各種器件的橋梁。(2)數(shù)據(jù)總線DB(DataBus)用來傳送數(shù)據(jù)和指令碼,是雙向總線。通過DB,CPU可將數(shù)據(jù)寫入存儲器或通過輸出接口向外設(shè)輸出數(shù)據(jù),也可從存儲器或通過輸入接口從輸入設(shè)備輸入數(shù)據(jù)。數(shù)據(jù)總線條數(shù)常和所用微處理器字長相等,但也有內(nèi)部為16位運算而外部仍為八位數(shù)據(jù)總線的情況,稱為準(zhǔn)16位。(3)控制總線CB(ControlBus)用來傳送CPU發(fā)出的控制信號、存儲器或外設(shè)的狀態(tài)信號和時序信號等。每根控制總線的信息傳送方向是固定、單向的,而控制總線作為整體為雙向的。控制總線的條數(shù)因機(jī)器而異,每條控制線最多傳送兩個控制信號。4.總線單片機(jī)的發(fā)展單片機(jī)的發(fā)展過程單片機(jī)的發(fā)展趨勢典型單片機(jī)產(chǎn)品1.1.2單片機(jī)的發(fā)展過程初期階段IntelMCS-48完善階段IntelMCS-51向微控制器發(fā)展階段高速發(fā)展階段多種機(jī)型并行發(fā)展自1974年美國Fairchild公司推出第一款8位單片機(jī)F8以來,世界許多半導(dǎo)體公司都投入到單片機(jī)的研發(fā)和推廣應(yīng)用上來,單片機(jī)技術(shù)有了巨大發(fā)展。1.1.3單片機(jī)的發(fā)展趨勢性能不斷提高CPU功能增強(qiáng):速度、精度內(nèi)部資源增多:A/D、D/A、PWM引腳的多功能化品種多樣化微型化、低電壓和低功耗典型單片機(jī)產(chǎn)品Intel公司的MCS-48、MCS-51、MCS-96系列;★Motorola公司的6801、6802、6803、6805、68HCll系列產(chǎn)品;Zilog公司的Z8、Super8系列產(chǎn)品;仙童(Fairchild)公司和Mostek公司的F8、3870系列產(chǎn)品;NEC公司的-87系列產(chǎn)品;Rockwell公司的6500、6501系列產(chǎn)品;Atmel、PHILIPS、LG等公司的51兼容機(jī)。★自單片機(jī)誕生以來,單片機(jī)已有70多個系列的近500個機(jī)種。國際上較有名、影響較大的公司及其產(chǎn)品有:優(yōu)異的性能價格比1.2.1單片機(jī)的特點

單片機(jī)把各功能部件集成在一塊芯片上,內(nèi)部采用總線結(jié)構(gòu),減少了各芯片之間的連線,大大提高了單片機(jī)的可靠性與抗干擾能力。另外,其體積小,對于強(qiáng)磁場環(huán)境易于采取屏蔽措施,適合于在惡劣環(huán)境下工作。此外,程序多采取固化形式也可以提高可靠性。集成度高、體積小、可靠性高

為了滿足工業(yè)控制要求,一般單片機(jī)的指令系統(tǒng)中均有極豐富的轉(zhuǎn)移指令、I/O口的邏輯操作以及位處理功能。單片機(jī)的邏輯控制功能及運行速度均高于同一檔次的微機(jī)。控制功能強(qiáng)單片機(jī)的系統(tǒng)擴(kuò)展、系統(tǒng)配置較典型、規(guī)范,容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng)。1.智能儀表提高儀器儀表的測量速度和精度,加強(qiáng)控制功能,簡化硬件結(jié)構(gòu),便于使用維修和改進(jìn)2.機(jī)電一體化指集機(jī)械技術(shù),微電子技術(shù),自動化技術(shù),計算機(jī)技術(shù)于一體,如:微機(jī)控制的車床,磨床3.實時控制工業(yè)控制,如對溫度,壓力的測量與控制,遙控4.分布式多機(jī)系統(tǒng)單片機(jī)作為一個終端機(jī),對現(xiàn)場信息實時測量和控制5.家用電器洗衣機(jī),電冰箱,音箱,玩具1.2.2單片機(jī)的應(yīng)用領(lǐng)域1.3嵌入式系統(tǒng)嵌入式系統(tǒng)(EmbeddedSystem)是計算機(jī)的一種應(yīng)用形式,通常指嵌入在其他設(shè)備中的微機(jī)系統(tǒng)。在嵌入式系統(tǒng)中,操作系統(tǒng)和應(yīng)用軟件通常被集成于計算機(jī)硬件系統(tǒng)中,使系統(tǒng)的應(yīng)用軟件與硬件一體化。嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計算機(jī)系統(tǒng)。它與一般的PC機(jī)上的應(yīng)用系統(tǒng)不同,針對不同具體應(yīng)用而設(shè)計的嵌入式系統(tǒng)之間差別也很大。嵌入式系統(tǒng)是一種用于控制、監(jiān)測或協(xié)助特定機(jī)器和設(shè)備正常運轉(zhuǎn)的計算機(jī)。它是集軟硬件于一體的可獨立工作的“器件”,主要包括:嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)以及應(yīng)用軟件等4部分。其中嵌入式微處理器是嵌入式系統(tǒng)的核心部件。按照功能和用途可進(jìn)一步細(xì)分為嵌入式微控制器、嵌入式微處理器和嵌入式數(shù)字信號處理器等幾種類型。1.4.1計算機(jī)中數(shù)的表示方法

1.4.2計算機(jī)中的編碼

1.4.3計算機(jī)中數(shù)的運算

重點解決:

在計算機(jī)中如何表示一個數(shù)?不同性質(zhì)數(shù)的運算規(guī)則和算法?1.4微型計算機(jī)的運算基礎(chǔ)

幾個重要概念

不同進(jìn)制數(shù)之間的互換

帶符號數(shù)的原碼、反碼、補(bǔ)碼4.?dāng)?shù)的定點與浮點表示

1.4.1計算機(jī)中數(shù)的表示方法1幾個重要概念

重點概念1:

計算機(jī)中的數(shù)據(jù)都是以二進(jìn)制形式進(jìn)行存儲和運算的。重點概念2:在計算機(jī)中存儲數(shù)據(jù)時,每類數(shù)據(jù)占據(jù)固定長度(一般為字節(jié)的整倍數(shù))的二進(jìn)制數(shù)位,而不管其實際長度。

重點概念3:計算機(jī)中不僅要處理無符號數(shù),還要處理帶符號數(shù)和帶小數(shù)點數(shù)

重點概念4:機(jī)器數(shù)與真值機(jī)器數(shù):能被計算機(jī)識別的數(shù)真值:機(jī)器數(shù)所代表的真實值2不同進(jìn)制數(shù)之間的互換

不同進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)-按權(quán)展開法

表示不同進(jìn)制數(shù)的尾部字母:

二(B),十六(H),八(Q),十(D)(可略)

例:

10101010B=1×27+

1×25

1×23

1×21

=

128+32+8+2=170

十→二整數(shù)部分:除2取余,直到商為0

小數(shù)部分:乘2取整,直到積為0或達(dá)到精度要求為止例:100=B=H=Q

例:0.625=B=H=Q

二進(jìn)制、八進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換

二→八三合一八→二一分三二→十六四合一十六→二一分四例:1110110B=76H9BH=10011011B0.101011B=0.ACH

問:01110110B=?Q0.1010110B=?Q3

帶符號數(shù)的原碼、反碼、補(bǔ)碼

原碼定義:在表示帶符號數(shù)時,正數(shù)的符號位為“0”,負(fù)數(shù)的符號位為“1”,數(shù)值位表示數(shù)的絕對值,這樣就得到了數(shù)的原碼。[X]原=0Xn-2Xn-3…X0=X 0≤X≤2n-1―11Xn-2Xn-3…X0=2n-1-X=2n-1+|X| -(2n-1―1)≤X≤0對于字長為n位的機(jī)器數(shù),當(dāng)真值X≥0時,X可表示為+Xn-2Xn-3…X0;當(dāng)真值X≤0時,X可表示為-Xn-2Xn-3…X0;則X的原碼可定義為:

原碼的缺點:

l

“0”的原碼有兩種形式,這在運算中非常不方便。

[+0]原=00000000B[-0]原=

10000000Bl

原碼在進(jìn)行兩個異符號數(shù)相加或兩個同符號數(shù)相減時,需做減法運算。由于微機(jī)中一般只有加法器而無減法器,所以,為了把減法運算轉(zhuǎn)變?yōu)榧臃ㄟ\算就引入了反碼和補(bǔ)碼。原碼的用途:

原碼做乘除法運算方便,兩數(shù)的符號和數(shù)值分別處理:積的符號為兩數(shù)符號位的異或運算結(jié)果積的數(shù)值部分為兩數(shù)絕對值相乘的結(jié)果反碼定義:正數(shù)的反碼與原碼相同;負(fù)數(shù)的反碼可將負(fù)數(shù)原碼的符號位保持不變、數(shù)值位按位取反得到,或者將負(fù)數(shù)看作正數(shù)求原碼,再將所有位按位取反得到。[X]反=0Xn-2Xn-3…X0=X0≤X≤2n-1―11Xn-2Xn-3…X0=11…1B-|X|=2n-1-|X|

-(2n-1―1)≤X≤0在n位機(jī)器數(shù)的計算機(jī)中,數(shù)X的反碼定義為:例如八位微機(jī)中:[+11]原=00001011B[+11]反=00001011B[-11]原=10001011B[-11]反=11110100B[+127]原=01111111B[+127]反=01111111B[-127]原=11111111B[-127]反=10000000B[+0]原=00000000B[+0]反=00000000B[-0]原=10000000B[-0]反=11111111B

缺點:“0”的反碼也有兩種表示法,即+0和-0。

[+0]反=00000000B[-0]反=11111111B補(bǔ)碼(難點)定義:正數(shù)的補(bǔ)碼與原碼相同;負(fù)數(shù)的補(bǔ)碼等于它的反碼末位加1,即[X]補(bǔ)=[X]反+1[X]補(bǔ)=0Xn-2Xn-3…X0=X 0≤X≤2n-1―11Xn-2Xn-3…X0+1=2n-|X|=2n+X-2n-1≤X<0

優(yōu)點:0的補(bǔ)碼為00000000B,只有這一種形式。[-0]補(bǔ)=00000000B[-0]原=10000000B[+0]補(bǔ)=00000000B[+0]原=00000000B[-127]補(bǔ)=10000001B[-127]原=11111111B[+127]補(bǔ)=01111111B[+127]原=01111111B[-11]補(bǔ)=11110101B[-11]原=10001011B[+11]補(bǔ)=00001011B[+11]原=00001011B[-128]補(bǔ)=10000000B補(bǔ)碼的含義:

以時鐘對時為例來說明,現(xiàn)由7點鐘調(diào)到4點鐘。

順時針調(diào):7+9=4(mod12)逆時針調(diào):7-3=4(mod12)

由于時鐘上超過12點時就會自動丟失一個數(shù)12(這個自動丟失的數(shù)叫做“模”)

7-3=7+[-3]補(bǔ)=7+[12+(-3)]=7+9=12+4=4已知補(bǔ)碼求真值:已知正數(shù)的補(bǔ)碼求真值與原碼相同,只要將符號位的0變?yōu)椋ㄕ枺?,即得到它的真值?/p>

已知負(fù)數(shù)的補(bǔ)碼求真值方法1:將負(fù)數(shù)補(bǔ)碼的數(shù)值位按位取反再加1,將符號位的1變?yōu)椋ㄘ?fù)號),即得到它的真值。方法2:用公式:X=-(2n-[X]補(bǔ))已知補(bǔ)碼為01111111B,其真值為B=+7FH已知補(bǔ)碼為11111111B,其真值為:10000000B+1=10000001B,其真值為-01H或:X=-(28-11111111B)=-(256-255)=-1小結(jié):已知帶符號數(shù)的機(jī)器數(shù)求真值已知正數(shù)的原碼、反碼、補(bǔ)碼求真值,只需將符號位的“0”改為正號“+”即可。已知負(fù)數(shù)的原碼求真值,只需將原碼的符號位的“1”改為負(fù)號“-”即可。已知負(fù)數(shù)的反碼求真值,數(shù)值位取反,符號為改為“-”

;或用公式計算:X=-(2n-1-[X]反)已知負(fù)數(shù)的補(bǔ)碼求真值,數(shù)值位取反加1,符號為改為“-”;或用公式計算:X=-(2n-[X]補(bǔ))例:已知帶符號數(shù)的機(jī)器數(shù)為0D6H,求其真值。

若0D6H是原碼,則真值為:

若0D6H是反碼,則真值為:若0D6H是補(bǔ)碼,則真值為:

→11010110B-1010110B-56H→11010110B-0101001B-(0FFH-0D6H)→11010110B-0101010B-(00H-0D6H)例:已知帶符號數(shù)的機(jī)器數(shù)為56H,求其真值。真值=+56H-29H-2AH

當(dāng)n=8時,幾種碼的表示范圍原碼反碼補(bǔ)碼-127至+127-127至+127-128至+127

當(dāng)n=16時,幾種碼的表示范圍原碼反碼補(bǔ)碼-32767至+32767-32767至+32767-32768至+32767

根據(jù)小數(shù)點的位置是否固定,數(shù)的表示方法分為定點表示和浮點表示,相應(yīng)的機(jī)器數(shù)稱為定點數(shù)和浮點數(shù)。

任意一個二進(jìn)制數(shù)N均可表示為:

N=S·2J5

數(shù)的定點與浮點表示

計算機(jī)中如何表示實數(shù)中的小數(shù)點呢?

計算機(jī)中不用專門的器件表示小數(shù)點,而是用數(shù)的兩種不同的表示法來表示小數(shù)點的位置。N的尾數(shù),表示數(shù)N的全部有效數(shù)字,決定了N的精度。N的階碼,底為2,指明了小數(shù)點的位置,決定了數(shù)N的大小范圍。sf

s1s2…sm小數(shù)點隱含位置,定點純小數(shù)sf

s1s2…sm小數(shù)點隱含位置,定點純整數(shù)

計算機(jī)在處理定點數(shù)時,常把小數(shù)點固定在數(shù)值位的最前面或最后面,即分為定點純小數(shù)與定點純整數(shù)兩類,如下圖所示。例如:00011000B如果看作定點純整數(shù),其真值為24看作定點純小數(shù),其真值為0.1875(1)定點表示法

(2)浮點表示法

在浮點表示法中,小數(shù)點的位置是浮動的,階碼J可取不同的數(shù)值,則在計算機(jī)中除了要表示尾數(shù)S,還要表示階碼J。因此,一個浮點數(shù)表示為尾數(shù)和階碼兩部分,尾數(shù)一般是定點純小數(shù),階碼是定點純整數(shù),其形式如下圖所示。小數(shù)點隱含位置

階符階碼尾符尾數(shù)階碼部分尾數(shù)部分jfj1j2……jnsfs1s2……sm00000000000000B階符階碼尾符 尾數(shù)

(24位)(-469.375)10=(-111010101.011)2

=(-0.111010101011)2×2+9

=(-0.111010101011)2×2+1001B[-0.111010101011]補(bǔ)=100010101010100000000000B[+1001B]補(bǔ)=00001001B例如,某計算機(jī)用32位表示浮點數(shù),尾數(shù)部分為24位補(bǔ)碼定點純小數(shù),階碼為8位補(bǔ)碼定點純整數(shù)。求數(shù)-469.375的浮點表示。

因此,數(shù)-469.375在該計算機(jī)中的浮點表示為:1.4.2計算機(jī)中的編碼ASCII碼:由七位二進(jìn)制編碼組成,共有128個字符編碼。包括圖形字符(字母、數(shù)字、其它可見字符共96個)和控制字符(回車、空格等共32個)

其中數(shù)字0~9的ASCII碼為30H~39H,差30H

字母A~F的ASCII碼為41H~46H,差37HD7位加奇偶校驗位:無校驗D7位補(bǔ)0

奇校驗D7位使含1的個數(shù)為奇數(shù)個偶校驗D7位使含1的個數(shù)為偶數(shù)個例:30H00110000HD7補(bǔ)0為無校驗和偶校驗

10110000HD7補(bǔ)1為奇校驗BCD編碼:具有十進(jìn)制位權(quán)的二進(jìn)制編碼。最常見的是8421碼注意:

0000B~1001B0~9的BCD碼

1010B~1111B非法碼例:

15的BCD碼為00010101B=15H15=0FH100的BCD碼為000100000000B=100H100=64H

壓縮的BCD碼56H占一個存儲單元非壓縮BCD碼05H06H占兩個單元存儲方式算術(shù)運算加減運算電路及無符號數(shù)的四則運算帶符號數(shù)補(bǔ)碼運算及判OVBCD碼加/減法及十進(jìn)制調(diào)整邏輯運算1.與

2.或3.非

4.異或

1.4.3計算機(jī)中數(shù)的運算

計算機(jī)中的運算分為兩類:算術(shù)運算:加、減、乘、除邏輯運算:與、或、非、異或1加/減運算電路及二進(jìn)制無符號數(shù)的四則運算FAAiBiCiSiCi+1圖1-8全加器符號圖AiBiCiSiCi+10000111100110011010101010110100100010111全加器真值表

加/減運算電路減法的實現(xiàn)減法時SUB=1,有取反加1功能加法時SUB=0,無取反加1功能求補(bǔ)電路進(jìn)/借位標(biāo)志CY=SUBC8SUBC8CY000011101110C7C8OV000011(負(fù))101(正)110SUB加/減標(biāo)志位0/1CyFAA6B6C6S6C7=1FAA1B1C1S1C2=1FAA0B0C0S0FAA7B7S7C8=1=1圖1-9八位微機(jī)加/減運算電路OV=1=1溢出標(biāo)志OV=C7C8二進(jìn)制無符號數(shù)的四則運算(1)加法運算二進(jìn)制加法法則為:0+0=01+0=0+1=11+1=101+1+1=11例:二進(jìn)制無符號數(shù)加法

被加數(shù)10111011B+加數(shù)00010110B進(jìn)位00111110和11010001B1、求187+22結(jié)果:11010001B即2092、求200+200

被加數(shù)11001000B+加數(shù)11001000B進(jìn)位11001000和110010000B結(jié)果:10010000B即144SUB=0,C8=0SUB=0,C8=1和=256B=400CY=0CY=11101110100110100110001010000011010000011111結(jié)果:11010001B即209SUB=0,C8=0,CY=0機(jī)器算被加數(shù)187(10111011B

)+加數(shù)22(00010110B

)0001001110001001100001000101100010010001001結(jié)果:SUB=0,C8=1,CY=1和=進(jìn)位值+8位和值=256B=400機(jī)器算被加數(shù)200(11001000B

)+加數(shù)200(11001000B

)(2)減法運算法則:

0-0=0 1-0=1 1-1=00-1=1(借1當(dāng)2)

被減數(shù)10111011B

-減數(shù)00010110B借位00000100差10100101B例:求187-22例:二進(jìn)制無符號數(shù)減法結(jié)果:無借位,差為10100101B即165取反1101110100110100110100101001101011111001011被減數(shù)187(10111011B

)-減數(shù)22(00010110B

)借位標(biāo)志CY=SUBC8=11=010101011加1X-Y=X+[-Y]補(bǔ)=X+2n-Y=X-Y+1減數(shù)按位取反加1求補(bǔ)機(jī)器算

被減數(shù)

10111011B=BBH

11101001B取反+1 加1+

11101010B=EAH進(jìn)位 11111010

差 10100101B=A5H求補(bǔ)- 減數(shù) 00010110B=16H對減數(shù)求補(bǔ)后,加被減數(shù)例:求187-22結(jié)果:10100101B即165無借位,SUB=1,C8=1,CY=0說明:直接相減無借位,求補(bǔ)相加有進(jìn)位,反之亦然。(3)乘法運算法則

0×0=00×1=1×0=01×1=1

被乘數(shù)1001B

乘數(shù)×1011B100110010000

+1001

乘積1100011B常用算法:1、左移加2、右移加3、連加(4)定點整數(shù)除法運算11100100011001011111011011010常用算法:1、移位相減法2、連減2.帶符號數(shù)定點補(bǔ)碼運算及判OV定點補(bǔ)碼運算定律:當(dāng)X,Y,X+Y,X-Y均在―2n-1~+(2n-1―1)范圍內(nèi)時,則:[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)如果X+Y,X-Y的值不在―2n-1~+(2n-1―1)范圍內(nèi)時(n=8,[-128,127]),則機(jī)器就產(chǎn)生了溢出錯誤,上式不成立,運算結(jié)果無意義。

溢出判別

(overflow)

若X±Y>2n-1-1,為正溢出;若X±Y<-2n-1,為負(fù)溢出。判溢出的方法:

1、雙進(jìn)位位法(本書主要用此法判溢出)

OV=C8C7C8、C7相同不溢出,不同溢出。

2、雙符號位法——變形碼

0V=Sf’Sf

Sf’、Sf相同不溢出,不同溢出。[例1-1]在八位微機(jī)中,已知X=+76,Y=+23,求X+Y

解:[X]補(bǔ)= 01001100B

+[Y]補(bǔ)= 00010111B

01100011B

雙進(jìn)位位法判溢出:∵C7=0,C8=0∴OV=0[X]補(bǔ)+[Y]補(bǔ)=01100011B=[+99]補(bǔ)

=[(+76)+(+23)]補(bǔ)=[X+Y]補(bǔ)

[例1-2]

已知X=+76,Y=-23,求X+Y

解: [X]補(bǔ)= 01001100B

+ [Y]補(bǔ)= 11101001B

100110101B

雙進(jìn)位位法判溢出:∵C7=1,C8=1∴OV=0[X]補(bǔ)+[Y]補(bǔ)=00110101B=[+53]補(bǔ)

=[(+76)+(-23)]補(bǔ)=[X+Y]補(bǔ)

(1)定點補(bǔ)碼加法編寫出程序片段:MOVA,#76;(A)=4CH=01001100BADDA,#23;(A)=4CH+17H=63H

OV=0或:MOVA,#4CH;(A)=4CH=01001100BADDA,#17H;(A)=63H真值補(bǔ)碼[例1-5]

在八位微機(jī)中,已知X=+76,Y=+69,求X+Y

解: [X]補(bǔ)= 01001100B

+ [Y]補(bǔ)= 01000101B

10010001B

雙進(jìn)位位法判溢出:∵C7=1,C8=0∴OV=1[X]補(bǔ)+[Y]補(bǔ)=10010001B=[-111]補(bǔ)≠[X+Y]補(bǔ)

兩個正數(shù)的和為負(fù)數(shù),正溢出[例1-6]

已知X=-76,Y=-69,求X+Y

解: [X]補(bǔ)= 10110100B

+ [Y]補(bǔ)= 10111011B

1

01101111B

雙進(jìn)位位法判溢出:∵C7=0,C8=1∴OV=1[X]補(bǔ)+[Y]補(bǔ)=01101111B=[+111]補(bǔ)≠[X+Y]補(bǔ)兩個負(fù)數(shù)的和為正數(shù),負(fù)溢出溢出后,運算結(jié)果無意義,需要將兩個操作數(shù)擴(kuò)大位數(shù)后,再算。例1-5可將76的補(bǔ)碼寫成004CH,69得補(bǔ)碼寫成0049H

計算:

0000000001001100B+0000000001001001B

0000000010010101B=0095HC16C15OV=0,不溢出

例1-6同理,用16位二進(jìn)制數(shù)表示數(shù),-76得補(bǔ)碼為FFB4H-69的補(bǔ)碼為FFBBH,再算即可。

雙符號位法判斷溢出——變形碼用兩位來表示符號:

00表示正號,11表示負(fù)號,稱為變形碼。用變形碼進(jìn)行加法運算時,兩位符號位同數(shù)值位一起參加運算,運算后,若運算結(jié)果的兩個符號位相同,則沒有溢出;若運算結(jié)果的兩個符號位不同,則發(fā)生了溢出,運算結(jié)果錯誤。用Sf'和Sf表示運算結(jié)果的兩個符號位,則有:

OV=Sf'⊕Sf[例1-7]

在八位微機(jī)中,已知X=+76,Y=+69,求X+Y

解: [X]補(bǔ) =01001100B[Y]補(bǔ) =01000101B

[X]變形碼 =001001100B

+ [Y]變形碼 =001000101B

010010001B因為Sf'=0,Sf=1,運算后,根據(jù)Sf'⊕Sf=0⊕1=1

設(shè)置OV=1,有溢出,結(jié)果錯誤。(2)定點補(bǔ)碼減法運算

[X-Y]補(bǔ)=[X+(-Y)]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)

步驟:1、將X、Y(或-Y)轉(zhuǎn)換為補(bǔ)碼。2、進(jìn)行減法運算,符號位參與運算。判溢出的方法與加法相同[例1-9]

已知X=+76,Y=-23,求X-Y

[X]補(bǔ)= 01001100B

[-Y]補(bǔ)=11101001B00010110B 取反+1 加1

+ 00010111B

01100011B

雙進(jìn)位位法判溢出:OV=0∵C7=0,C8=0

01100011B=[+99]補(bǔ)=[(+76)-(-23)]補(bǔ)=[X-Y]補(bǔ)

求補(bǔ)編寫出程序片段:MOVA,#76;(A)=4CH=01001100BMOVB,#-23;(B)=0E9HCLRCSUBBA,B;(A)=4CH-0E9H=63HOV=04CH0E9H同補(bǔ)碼加法一樣,補(bǔ)碼的減法運算也可能發(fā)生溢出,因為補(bǔ)碼的減法運算是轉(zhuǎn)換成加法運算來實現(xiàn)的,所以其溢出的判斷方法與加法相同。

[例1-11]

已知X=+76,Y=-69,求X-Y

解: [X]補(bǔ)= 01001100B

[-Y]補(bǔ)= 10111011B 01000100B 取反求補(bǔ)

+1 加1

+ 01000101B

10010001BOV=1(C7=1,C8=0)

,發(fā)生溢出,結(jié)果錯誤。

10010001B=[-111]補(bǔ)≠[X-Y]補(bǔ)

3.BCD碼加法及十進(jìn)制調(diào)整(1)BCD碼的加法運算在兩個數(shù)的BCD碼進(jìn)行加法運算時,當(dāng)?shù)退奈缓透咚奈欢紵o進(jìn)位并且不超過9時,可得到正確的運算結(jié)果。

[例1-13]

已知X=63,Y=24,求X+Y

解: [X]BCD碼 =01100011B

+ [Y]BCD碼 =00100100B

進(jìn)位 0110000010000111B10000111B=[87]BCD碼=[63+24]BCD碼

[例1-14]

已知X=68,Y=49,求X+Y

解: [X]BCD碼 =01101000B

+ [Y]BCD碼 =01001001B

進(jìn)位 01001000CY=0,AC=1

和10110001B

+01100110B調(diào)整

100010111BCY=1X+Y=100+17=117,CY=1,進(jìn)位值為100

例1-14中,低四位有進(jìn)位,高四位的值超過9,是非法碼,結(jié)果錯誤,需進(jìn)行調(diào)整。大家看到,在運算中,當(dāng)?shù)退奈幌蛩母呶贿M(jìn)位時,是逢16進(jìn)位為1,即按照十六進(jìn)制的原則進(jìn)行的運算,而BCD碼是十進(jìn)制數(shù),應(yīng)按照逢十進(jìn)一的原則進(jìn)行運算,所以應(yīng)將和的低四位加6以補(bǔ)上多拿走的6,調(diào)整為0111B。和的高四位1011B大于9,應(yīng)向高位進(jìn)位,同樣加上6進(jìn)行調(diào)整,變?yōu)?0001B。編寫出程序片段:MOVA,#68H;(A)=68H=01101000BADDA,#49H;(A)=B1HDAA;(A)=B1H+66H=17HCY=1代表100

結(jié)果:117必須寫B(tài)CD碼不能寫真值(2)BCD碼的減法運算兩個數(shù)的BCD碼進(jìn)行減法運算時,

當(dāng)?shù)退奈换蚋咚奈欢疾恍杞栉粫r,可得到正確的運算結(jié)果。

[例1-15]

已知X=58,Y=25,求X-Y

解: [X]BCD碼 =01011000B

- [Y]BCD碼 =00100101B00110011B00110011B=[33]BCD碼=[58-25]BCD碼=[X-Y]BCD碼

當(dāng)?shù)退奈换蚋咚奈挥薪栉粫r,按十進(jìn)制運算規(guī)則,向高位借1當(dāng)10,而計算機(jī)中按二進(jìn)制運算規(guī)則進(jìn)行,借1當(dāng)作16,因此運算后必須減6進(jìn)行調(diào)整。

[例1-16]

已知X=68,Y=49,求X-Y

解: [X]BCD碼 = 01101000B

- [Y]BCD碼 = 01001001B

差 00011111BAC=1,CY=0

0110B 00011001B00011001B=[19]BCD碼=[68-49]BCD碼=[X-Y]BCD碼說明:如果指令系統(tǒng)中有BCD碼的減法調(diào)整指令,即可直接用該指令完成上述調(diào)整。如果指令系統(tǒng)中沒有BCD碼的減法調(diào)整指令,則不能用減法指令直接對兩個BCD碼進(jìn)行減法運算,而需對減數(shù)求補(bǔ),進(jìn)行加法運算,然后用加法運算的調(diào)整指令進(jìn)行調(diào)整。對八位微機(jī),BCD碼的模為100(十進(jìn)制數(shù)),減去減數(shù)實現(xiàn)對減數(shù)的求補(bǔ)。為在八位加減運算電路中運算,將100表示成9AH,即10011010B,減去減數(shù)求補(bǔ)。[例1-17]

已知X=68,Y=49,求X-Y

解: [X]BCD碼 = 01101000B

- [Y]BCD碼 = 01001001B

模100 10011010B

- [Y]BCD碼 = 01001001B

+ 01010001B

10111001B

調(diào)整 + 01100000B 1 00011001B

這樣,在程序中將BCD碼的減法運算轉(zhuǎn)換為加法運算,然后利用加法運算的調(diào)整指令進(jìn)行調(diào)整,即可得到正確的結(jié)果。

求補(bǔ)編寫出程序片段:CLRCMOVA,#9AH;(A)=9AHMODSUBBA,#49H;(A)=51HBCDADDA,#68H

;(A)=B9H非BCDDAA;(A)=19HBCDCPLC

;CY=0無借位,差=19HBCD求補(bǔ)相加有進(jìn)位,直接相減位無借位。反之,有借位。算術(shù)運算小結(jié)1、求補(bǔ)碼與求補(bǔ)

求補(bǔ)碼:已知真值求補(bǔ)碼求補(bǔ):已知正數(shù)的補(bǔ)碼求與之?dāng)?shù)值相同的負(fù)數(shù)的補(bǔ)碼或已知負(fù)數(shù)的補(bǔ)碼求與之?dāng)?shù)值相同的正數(shù)的補(bǔ)碼2、算術(shù)運算與標(biāo)志位對于運算器來說:只根據(jù)加/減命令對送給它的兩個操作數(shù)進(jìn)行相應(yīng)的運算,并不區(qū)分是什么性質(zhì)的數(shù),并且根據(jù)運算結(jié)果,填寫標(biāo)志位。其運算結(jié)果代表什么完全由用戶決定。一般情況下:無符號數(shù)運算判CY

定點帶符號補(bǔ)碼運算判溢出OVBCD碼運算判CY,機(jī)器調(diào)整判AC、CY例:求62+98=?

1、作無符號數(shù)運算,結(jié)果0A0H=160,CY=0。一般,CY=0,結(jié)果在0~255之間,

CY=1,代表256,結(jié)果在0~256+255之間

2、做帶符號

溫馨提示

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

評論

0/150

提交評論