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

下載本文檔

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

文檔簡介

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

什么是單片機?

單片機的發(fā)展

單片機的特點和應用領域

嵌入式系統(tǒng)

微型計算機的運算基礎第1章

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

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

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

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

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

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

易失ROM

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

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

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

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

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

地址線12根,數據線8根芯片21141K×4bit

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

字數(存儲單元個數)×字長問:27648KB

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

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

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

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

1.4.2計算機中的編碼

1.4.3計算機中數的運算

重點解決:

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

幾個重要概念

不同進制數之間的互換

帶符號數的原碼、反碼、補碼4.數的定點與浮點表示

1.4.1計算機中數的表示方法1幾個重要概念

重點概念1:

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

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

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

不同進制數轉換成十進制數-按權展開法

表示不同進制數的尾部字母:

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

例:

10101010B=1×27+

1×25

1×23

1×21

=

128+32+8+2=170

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

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

例:0.625=B=H=Q

二進制、八進制與十六進制之間的轉換

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

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

帶符號數的原碼、反碼、補碼

原碼定義:在表示帶符號數時,正數的符號位為“0”,負數的符號位為“1”,數值位表示數的絕對值,這樣就得到了數的原碼。[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位的機器數,當真值X≥0時,X可表示為+Xn-2Xn-3…X0;當真值X≤0時,X可表示為-Xn-2Xn-3…X0;則X的原碼可定義為:

原碼的缺點:

l

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

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

10000000Bl

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

原碼做乘除法運算方便,兩數的符號和數值分別處理:積的符號為兩數符號位的異或運算結果積的數值部分為兩數絕對值相乘的結果反碼定義:正數的反碼與原碼相同;負數的反碼可將負數原碼的符號位保持不變、數值位按位取反得到,或者將負數看作正數求原碼,再將所有位按位取反得到。[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位機器數的計算機中,數X的反碼定義為:例如八位微機中:[+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補碼(難點)定義:正數的補碼與原碼相同;負數的補碼等于它的反碼末位加1,即[X]補=[X]反+1[X]補=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的補碼為00000000B,只有這一種形式。[-0]補=00000000B[-0]原=10000000B[+0]補=00000000B[+0]原=00000000B[-127]補=10000001B[-127]原=11111111B[+127]補=01111111B[+127]原=01111111B[-11]補=11110101B[-11]原=10001011B[+11]補=00001011B[+11]原=00001011B[-128]補=10000000B補碼的含義:

以時鐘對時為例來說明,現由7點鐘調到4點鐘。

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

由于時鐘上超過12點時就會自動丟失一個數12(這個自動丟失的數叫做“?!保?/p>

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

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

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

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

若0D6H是反碼,則真值為:若0D6H是補碼,則真值為:

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

當n=8時,幾種碼的表示范圍原碼反碼補碼-127至+127-127至+127-128至+127

當n=16時,幾種碼的表示范圍原碼反碼補碼-32767至+32767-32767至+32767-32768至+32767

根據小數點的位置是否固定,數的表示方法分為定點表示和浮點表示,相應的機器數稱為定點數和浮點數。

任意一個二進制數N均可表示為:

N=S·2J5

數的定點與浮點表示

計算機中如何表示實數中的小數點呢?

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

s1s2…sm小數點隱含位置,定點純小數sf

s1s2…sm小數點隱含位置,定點純整數

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

(2)浮點表示法

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

階符階碼尾符尾數階碼部分尾數部分jfj1j2……jnsfs1s2……sm00000000000000B階符階碼尾符 尾數

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

=(-0.111010101011)2×2+9

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

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

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

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

奇校驗D7位使含1的個數為奇數個偶校驗D7位使含1的個數為偶數個例:30H00110000HD7補0為無校驗和偶校驗

10110000HD7補1為奇校驗BCD編碼:具有十進制位權的二進制編碼。最常見的是8421碼注意:

0000B~1001B0~9的BCD碼

1010B~1111B非法碼例:

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

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

2.或3.非

4.異或

1.4.3計算機中數的運算

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

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

被加數10111011B+加數00010110B進位00111110和11010001B1、求187+22結果:11010001B即2092、求200+200

被加數11001000B+加數11001000B進位11001000和110010000B結果:10010000B即144SUB=0,C8=0SUB=0,C8=1和=256B=400CY=0CY=11101110100110100110001010000011010000011111結果:11010001B即209SUB=0,C8=0,CY=0機器算被加數187(10111011B

)+加數22(00010110B

)0001001110001001100001000101100010010001001結果:SUB=0,C8=1,CY=1和=進位值+8位和值=256B=400機器算被加數200(11001000B

)+加數200(11001000B

)(2)減法運算法則:

0-0=0 1-0=1 1-1=00-1=1(借1當2)

被減數10111011B

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

)-減數22(00010110B

)借位標志CY=SUBC8=11=010101011加1X-Y=X+[-Y]補=X+2n-Y=X-Y+1減數按位取反加1求補機器算

被減數

10111011B=BBH

11101001B取反+1 加1+

11101010B=EAH進位 11111010

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

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

被乘數1001B

乘數×1011B100110010000

+1001

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

溢出判別

(overflow)

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

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

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

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

0V=Sf’Sf

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

解:[X]補= 01001100B

+[Y]補= 00010111B

01100011B

雙進位位法判溢出:∵C7=0,C8=0∴OV=0[X]補+[Y]補=01100011B=[+99]補

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

[例1-2]

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

解: [X]補= 01001100B

+ [Y]補= 11101001B

100110101B

雙進位位法判溢出:∵C7=1,C8=1∴OV=0[X]補+[Y]補=00110101B=[+53]補

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

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

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

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

解: [X]補= 01001100B

+ [Y]補= 01000101B

10010001B

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

兩個正數的和為負數,正溢出[例1-6]

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

解: [X]補= 10110100B

+ [Y]補= 10111011B

1

01101111B

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

計算:

0000000001001100B+0000000001001001B

0000000010010101B=0095HC16C15OV=0,不溢出

例1-6同理,用16位二進制數表示數,-76得補碼為FFB4H-69的補碼為FFBBH,再算即可。

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

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

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

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

解: [X]補 =01001100B[Y]補 =01000101B

[X]變形碼 =001001100B

+ [Y]變形碼 =001000101B

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

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

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

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

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

[X]補= 01001100B

[-Y]補=11101001B00010110B 取反+1 加1

+ 00010111B

01100011B

雙進位位法判溢出:OV=0∵C7=0,C8=0

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

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

[例1-11]

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

解: [X]補= 01001100B

[-Y]補= 10111011B 01000100B 取反求補

+1 加1

+ 01000101B

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

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

10010001B=[-111]補≠[X-Y]補

3.BCD碼加法及十進制調整(1)BCD碼的加法運算在兩個數的BCD碼進行加法運算時,當低四位和高四位都無進位并且不超過9時,可得到正確的運算結果。

[例1-13]

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

解: [X]BCD碼 =01100011B

+ [Y]BCD碼 =00100100B

進位 0110000010000111B10000111B=[87]BCD碼=[63+24]BCD碼

[例1-14]

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

解: [X]BCD碼 =01101000B

+ [Y]BCD碼 =01001001B

進位 01001000CY=0,AC=1

和10110001B

+01100110B調整

100010111BCY=1X+Y=100+17=117,CY=1,進位值為100

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

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

當低四位或高四位都不需借位時,可得到正確的運算結果。

[例1-15]

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

解: [X]BCD碼 =01011000B

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

當低四位或高四位有借位時,按十進制運算規(guī)則,向高位借1當10,而計算機中按二進制運算規(guī)則進行,借1當作16,因此運算后必須減6進行調整。

[例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碼的減法調整指令,即可直接用該指令完成上述調整。如果指令系統(tǒng)中沒有BCD碼的減法調整指令,則不能用減法指令直接對兩個BCD碼進行減法運算,而需對減數求補,進行加法運算,然后用加法運算的調整指令進行調整。對八位微機,BCD碼的模為100(十進制數),減去減數實現對減數的求補。為在八位加減運算電路中運算,將100表示成9AH,即10011010B,減去減數求補。[例1-17]

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

解: [X]BCD碼 = 01101000B

- [Y]BCD碼 = 01001001B

模100 10011010B

- [Y]BCD碼 = 01001001B

+ 01010001B

10111001B

調整 + 01100000B 1 00011001B

這樣,在程序中將BCD碼的減法運算轉換為加法運算,然后利用加法運算的調整指令進行調整,即可得到正確的結果。

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

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

;CY=0無借位,差=19HBCD求補相加有進位,直接相減位無借位。反之,有借位。算術運算小結1、求補碼與求補

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

定點帶符號補碼運算判溢出OVBCD碼運算判CY,機器調整判AC、CY例:求62+98=?

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

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

2、做帶符號

溫馨提示

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

評論

0/150

提交評論