微機原理與接口技術:第一章 基礎知識_第1頁
微機原理與接口技術:第一章 基礎知識_第2頁
微機原理與接口技術:第一章 基礎知識_第3頁
微機原理與接口技術:第一章 基礎知識_第4頁
微機原理與接口技術:第一章 基礎知識_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1匯編語言程序設計2教學計劃1.總學時數(shù)為48,其中課堂講授46學時,習題課2學時。另有上機實驗16學時。

2.教學方式:課堂講授3.最后成績評定方法:平時出勤與作業(yè)占10%,半期測驗占10%,實驗10%,期末考試占70%。4.教材:《匯編語言程序設計》廖建明主編清華大學出版社35.參考資料:《8086/8088宏匯編語言程序設計教程》王正智,電子工業(yè)出版社《IBM-PC匯編語言程序設計》沈美明編著,清華大學出版社《匯編語言程序設計》殷肖川主編,清華大學出版社《Win32匯編語言程序設計教程》嚴義等編著,機械工業(yè)出版社4第一章基礎知識本章主要學習內(nèi)容:1.匯編語言的一般概念2.學習和使用匯編語言的目的3.進位計數(shù)制及其相互轉(zhuǎn)換4.帶符號數(shù)的表示5.字符的表示6.基本邏輯運算

5§1.1匯編語言的一般概念計算機程序設計語言可分為機器語言、高級語言和匯編語言三類。1.機器語言

機器語言就是把控制計算機的命令和各種數(shù)據(jù)直接用二進制數(shù)碼表示的一種程序設計語言。例如,要實現(xiàn)將寄存器AH的內(nèi)容與數(shù)10相加,結(jié)果再送回到寄存器AH中。1011010000001010為了書寫和記憶方便可用十六進制數(shù)表示:B40A用機器語言實現(xiàn)上述操作的代碼:6又如,要讓計算機完成46+40的算式運算。假設參加運算的數(shù)據(jù)事先分別存放在寄存器AL、BL和CL中,并要求將運算結(jié)果存放到寄存器AL中。用機器指令來實現(xiàn)的代碼為:1111011011100011

在32位二進制數(shù)表示的機器語言程序代碼中,包含了乘法和加法運算操作,其中前16位代碼表示了乘法運算,后16位代碼表示了加法運算。0000000011001000機器指令中既包含了指示運算功能的代碼,又給出了參加運算的操作數(shù)據(jù),表示非常詳細。十六進制數(shù):F6E3十六進制數(shù):00C87優(yōu)點:機器語言最直接地表示了計算機內(nèi)部的基本操作,用它編制的程序在計算機中運行的效率最高,即運行速度最快,程序長度最短。缺點:用二進制數(shù)表示的內(nèi)容既不便于記憶又難于閱讀。82.高級語言

高級語言將計算機內(nèi)部的操作細節(jié)屏蔽起來,用戶不需要知道計算機內(nèi)部數(shù)據(jù)的傳送和處理的細節(jié),使用類似于自然語言的一些語句來編制程序,完成指定的任務。特點:程序設計簡單,但程序效率較機器語言低。93.匯編語言

雖然高級語言方便了人對計算機的使用,但其運行效率較低。在一些應用場合,如系統(tǒng)管理,實時控制等,難于滿足要求。因此又希望使用機器語言。(1)定義

為了便于記憶和閱讀,使用字母和符號來表示機器語言的命令,用十進制數(shù)或十六進制數(shù)來表示數(shù)據(jù),這樣的計算機程序設計語言就稱為匯編語言。10

(2)匯編語言程序與機器語言程序的關系例如,對于前述的46+40算式運算,如果把機器語言程序改寫為匯編語言程序,則為以下兩條匯編指令:

(3)不同類型計算機有不同的機器指令系統(tǒng)和匯編語言描述

為了學習和使用某種計算機的匯編語言,必須熟悉計算機的內(nèi)部組成結(jié)構。但并非要掌握計算機系統(tǒng)的全部硬件組成,只需掌握用匯編語言編制程序時所涉及到的那些硬件的結(jié)構和功能。

一條匯編語言的語句與一條機器語言指令對應,匯編語言程序與機器語言程序效率相同.MULBLADDAL,CL11CPU中有哪些寄存器及其作用?CPU是如何訪問存儲器?輸入輸出操作的方式有哪些?

在本課程中,將以IBM-PC系列微型計算機及其匯編語言為例,學習匯編語言程序設計的基本原理、方法和技巧。

對一臺計算機來說,機器語言的執(zhí)行主要取決于該計算機的中央處理器CPU。因此熟悉計算機內(nèi)部結(jié)構主要是指CPU的功能結(jié)構。它包括:12§

1.2學習和使用匯編語言的目的1.學習和使用匯編語言可以從根本上認識、理解計算機的工作過程。

通過用匯編語言編制程序可以更清楚地了解計算機是如何完成各種復雜的工作。在此基礎上,程序設計人員能更充分地利用機器硬件的全部功能,發(fā)揮機器的長處。2.在計算機系統(tǒng)中,某些功能必須用匯編語言程序來實現(xiàn)。如:機器自檢、系統(tǒng)初始化、實際的輸入輸出設備的操作等。13在某些要求節(jié)省內(nèi)存空間和提高程序運行速度的應用場合,如實時過程控制、智能儀器儀表等,常常用匯編語言來編制程序。3.匯編語言程序的效率高于高級語言程序“效率”有兩個方面的含義:程序的目標代碼長度和運行的速度。14§

1.3進位計數(shù)制及其相互轉(zhuǎn)換一.進位計數(shù)制

使用一定個數(shù)的數(shù)碼的組合來表示數(shù)字,這種表示方法稱為進位計數(shù)制。根據(jù)所使用的數(shù)碼的個數(shù),就產(chǎn)生了不同的進位計數(shù)制。如十進制數(shù),用0、1~9十個數(shù)碼的組合來表示數(shù)字。每個數(shù)碼排在不同位置,所表示的數(shù)值大小不相同。例如:222從右邊開始,第一個2表示2個1,第二個2表示有2個10,第三個2表示有2個100.15將各個位置上所表示的基本數(shù)值稱為位權,簡稱權。

不同的進位制和不同的位置其位權是不同的。位權乘以對應位置上的數(shù)碼就等于該數(shù)位上數(shù)值的大小。每個數(shù)位上能使用不同數(shù)碼的個數(shù)稱為基數(shù)。例如十進制有十個數(shù)碼0~9,基數(shù)為10,二進制基數(shù)為2。每個數(shù)位能取的最大數(shù)碼值=基數(shù)-1。如十進制為10-1=916

在計算機中數(shù)據(jù)表示一般采用二進制數(shù),因為它在計算機中最容易表示和存儲,且適合于邏輯值的表達與運算。

對人來說二進制不便于書寫和閱讀,習慣使用十進制,但是十進制與二進制間的轉(zhuǎn)換關系不是很簡便。

二進制與8進制、16進制之間有非常簡單的轉(zhuǎn)換關系:3位二進制數(shù)與一位8進制數(shù)對應,4位二進制數(shù)與一位16進制數(shù)對應。因此在程序中常常使用8進制和16進制。17

在書寫不同進位計數(shù)制數(shù)時,為了區(qū)別,常在數(shù)的尾部用一個字母來表示。B(Binary)--二進制數(shù)O(Octal)或Q--八進制數(shù)D(Decimal)--十進制數(shù)H(Hexadecimal)--十六進制數(shù)。如未使用任何字母,則默認表示是十進制數(shù)。例如,10B,10Q,10D,10H18二.各種數(shù)制間的相互轉(zhuǎn)換由于二進制與八進制和十六進制間的轉(zhuǎn)換很簡單,下面主要討論二進制與十進制之間的相互轉(zhuǎn)換。1.十進制整數(shù)轉(zhuǎn)換為二進制數(shù)有兩種轉(zhuǎn)換方法:

(1)減權定位法從二進制數(shù)高位起,依次用待轉(zhuǎn)換的十進制數(shù)與各位權值進行比較;如夠減,則該數(shù)位系數(shù)Ki=1,同時減去該位權值,余數(shù)作為下一次比較的值;如不夠減,則Ki=0。19例:將325轉(zhuǎn)換為二進制數(shù),直到余數(shù)為0。首先確定二進制數(shù)的最高位因為29(512)>325>28(256)。因此從K8位開始比較。減數(shù)比較Ki

對應二進制數(shù)325-256=69K8169<128K7069-64=5K615<32K505<16K405<8K305-4=1K211<2K101-1=0K01所以325D=101000101B20(2)除基取余數(shù)

將十進制數(shù)除以基數(shù)2,其余數(shù)為二進制數(shù)的最低位,再用其商除2,其余數(shù)為次低位,反復做下去,直到商0.這種轉(zhuǎn)換方法同樣適合于其它進制數(shù)之間的轉(zhuǎn)換。除基余數(shù)Ki232521622812402202102522210101000101k0k1k2k3k4k5k6k7k8212.十進制小數(shù)轉(zhuǎn)換為二進制數(shù)例將十進制數(shù)0.645轉(zhuǎn)換為二進制數(shù)(1)減權定位法

轉(zhuǎn)換時應根據(jù)程序要求的精度或計算機的字長來確定二進制的位數(shù).減權比較Ki對應二進制數(shù)0.645-0.5=0.145k-110.145<0.25k-200.145-0.125=0.02k-310.02<0.0625k-400.02<0.03125k-500.02-0.015625k-61所以0.645D=0.101001B22(2)乘基取整法例將0.8125D轉(zhuǎn)換為二進制數(shù)乘以基數(shù)Ki整數(shù)部分0.8125×2=1.625K-110.625×2=1.25K-210.25×2=0.5K-300.5×2=1.K-41所以0.8125D=0.1101B233.二進制整數(shù)轉(zhuǎn)換為十進制數(shù)(1)按權相加法(2)逐次乘基相加法101000101324×2×2×2×2×2×2×2×2++++++++325例101000101B=1×28+1×26+1×22+1×20=256+64+4+1=3252410204080162244.二進制小數(shù)轉(zhuǎn)換為十進制數(shù)(1)按權相加法(2)逐次除基相加法轉(zhuǎn)換從最低位開始例0.101001÷2÷2÷2÷2÷2÷2+++++0.101001B=0.640625D例0.101001B=1×2-1+1×2-3+1×2-6=0.5+0.125+0.0156=0.640625D0.6406250.281250.56250.1250.250.5255.二進制與八進制和十六進制間的轉(zhuǎn)換二進制與八進制和十六進制之間的對應關系很簡單:三位二進制數(shù)對應一位八進制數(shù),四位二進制數(shù)對應一位十六進制數(shù)。例如:10100010B2所以10100010B=242Q10100010B=10100010A2所以10100010B=A2H=101000102426§

1.4帶符號數(shù)的表示

在一般算術表示中使用”“+”和“-”來表示正數(shù)與負數(shù),而在計算機中使用“0”和“1”來表示正數(shù)和負數(shù)。用“+”或“-”表示正負的數(shù)叫真值用“0”或“1”表示正負的數(shù)叫機器數(shù)帶符號的機器數(shù)可以用原碼、反碼和補碼三種不同碼制來表示。一般計算機中大多采用補碼表示。一、原碼表示二進制數(shù)的最高位表示符號,0表示正,1表示負。數(shù)值部分用二進制數(shù)絕對值表示278位二進制數(shù)原碼的最大數(shù)為01111111(+127)最小數(shù)為11111111(-127)

8位二進制數(shù)表示范圍:-127≤X≤+1270的原碼有兩種表示形式:00000000和10000000(+0和-0)二、補碼的表示1.補碼的定義帶符號數(shù)X的補碼表示[X]補定義為:[X]補=M+X(ModM)其中模數(shù)M根據(jù)機器數(shù)的位數(shù)而定,如位數(shù)為8則M=28

用補碼表示的機器數(shù),符號位仍然表示數(shù)的符號:0為正,1為負。對于正數(shù),補碼與原碼相同,對于負數(shù)需要進行變換。282.由真值、原碼變換為補碼由于正數(shù)的原碼與補碼相同,下面討論負數(shù)的變換方法。負數(shù)的真值變換為補碼的方法:將各位變反(0變1,1變0)然后在最低位加1.負數(shù)的原碼變換為補碼:保持符號位不變,其余各位變反,最低位加1。例將-59變換為補碼真值-00111011變反11000100加111000101所以[-59]補=11000101原碼10111011變反11000100加111000101293.補碼數(shù)的表示范圍當位數(shù)為8時,最大補碼為01111111=[+127]補最小補碼為10000000=[-128]補0的補碼只有一個,[0]補=00000000,而10000000是[-128]補11111111=[-1]補對于16位數(shù),則補碼表示范圍為-32768~+327674.補碼的加減運算規(guī)則:[X+Y]補=[X]補+[Y]補

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

求補運算是將原數(shù)連同符號位一起(不管是正還是負)按位求反,再在最低位加1。其中[-Y]補是對[Y]補執(zhí)行一次求補運算30(1)加法運算:X+Y例1X=74DY=41D[X]補=01001010[Y]補=00101001010010100010100101110011+所以[X]補+[Y]補=01110011=[115]補例2X=74DY=-41D[X]補=01001010[Y]補=110101110100101011010111+001000011自動舍去所以[X]補+[Y]補=00100001=[33]補31例3X=-74DY=41D[X]補=10110110[Y]補=001010011011011000101001+11011111所以[X]補+[Y]補=11011111=[-33]補例4X=-74DY=-41D[X]補=10110110[Y]補=110101111011011011010111+100011011自動舍去所以[X]補+[Y]補=10001101=[-115]補32(2)減法運算例5X=74DY=41D[X]補=01001010[Y]補=00101001[-Y]補=110101110100101011010111+001000011自動舍去所以[X]補-[Y]補=[X]補+[-Y]補=00100001=[33]補例6X=74DY=-41D[X]補=01001010[Y]補=11010111[-Y]補=001010010100101000101001+011100111自動舍去所以[X]補-[Y]補=[X]補+[-Y]補=01110011=[115]補33例7X=-74DY=41D[X]補=10110110[Y]補=00101001[-Y]補=110101111011011011010111+100011011自動舍去所以[X]補-[Y]補=[X]補+[-Y]補=10001101=[-115]補例8X=-74DY=-41D[X]補=10110110[Y]補=11010111[-Y]補=001010011011011000101001+110111111自動舍去所以[X]補-[Y]補=[X]補+[-Y]補=11011111=[-33]補34§

1.5字符的表示在計算機內(nèi)部,各種字符(字母、符號、數(shù)字碼)都是按一定的方式編寫成二進制信息。不同的計算機以及不同的場合所采用的編碼形式可能不同。目前最廣泛采用的是ASCII碼(AmericanStandardCodeforInformationInterchange)標準ASCII碼為一字節(jié),其中用低七位表示字符編碼(見附錄A),用最高位表示奇偶數(shù)驗位。76543210字符編碼奇偶校驗位35標準ASCII碼共有128個,可分為兩類:非打印ASCII碼,共33個,用于控制操作,如BEL(響鈴07H),DEL(刪除7FH),CR(回車,0DH),LF(換行,0AH).可打印ASCII碼共有95個,如數(shù)字符0~9,大小寫字母等。36§

1.6基本邏輯運算計算機內(nèi)部采用二進制數(shù)表示信息,具有物理實現(xiàn)容易、可靠性高的優(yōu)點,且由于狀態(tài)“0”和“1”正好與邏輯運算中的邏輯“真”和“假”對應,因此可以用“0”和“1”來表示邏輯變量的取值,很容易地實現(xiàn)各種復雜的邏輯運算。在計算機的指令系統(tǒng)中,一般都有邏輯運算指令。下面介紹幾種常見的基本邏輯運算。371.“與”運算(AND)“與”運算也叫邏輯乘,常用∧或·表示。“與”運算是指:僅當邏輯變量A與B都是1時,運算結(jié)果F才為1。其它情況F為0,設有邏輯變量A和B,則“與”運算為:F=A∧B或F=A·B0

溫馨提示

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

評論

0/150

提交評論