版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
IBM-PC匯編語言程序設(shè)計計算機科學與工程系A(chǔ)ssemblyLanguageProgrammingAssemblyLanguageProgramming引言課程安排1總學時:48學時講課:36學時,實驗:12學時學分:3教科書:8086/8088宏匯編語言程序設(shè)計教程(第二版)王正智著電子工業(yè)出版社課程考核考試課程成績計算:平時:5%作業(yè):10%實驗:15%考試:60%學習技巧匯編語言難嗎???語言類課程學習養(yǎng)成自學的習慣養(yǎng)成上機求證的習慣做一定的練習下面我們開始學習什么是匯編語言?機器特定的編程語言該語言的語句和機器內(nèi)在語言是一一對應的關(guān)系該語言和機器的指令集、系統(tǒng)結(jié)構(gòu)相匹配程序設(shè)計的級別機器語言匯編語言高級語言IBM-PC匯編語言針對8086,8088,80186,80286,80386,80486,andPentiumProcessors為什么要學習匯編語言?能夠?qū)W習到處理器是如何工作的理解計算機的基本系統(tǒng)結(jié)構(gòu)探究數(shù)據(jù)和指令的內(nèi)部表述能夠創(chuàng)建小巧有效的程序允許程序員繞過高層語言的限制編程有些工作必須用匯編語言完成機器語言數(shù)字表示的機器執(zhí)行的指令集合,被稱為處理器指令集處理器能夠執(zhí)行的基本指令的集合每個指令被編碼成為數(shù)字符號指令可能占用一個或者多個字節(jié)每個數(shù)字代表一個機器指令I(lǐng)BM-PC機器指令舉例00000101borB005h操作碼=10110000b含義:拷貝一個字節(jié)數(shù)據(jù)到AL寄存器中字節(jié)數(shù)據(jù)由該指令的第二部分代表:00000101b第1部分軟硬件基礎(chǔ)知識AssemblyLanguageProgramming編寫匯編程序,需要計算機硬件和軟件兩方面的知識。該部分側(cè)重于最為基礎(chǔ)的硬件和軟件知識介紹。1數(shù)據(jù)表示AssemblyLanguageProgramming十進制到二進制的轉(zhuǎn)換109d轉(zhuǎn)換到二進制-循環(huán)被2除余數(shù)作為數(shù)位值直到0為止將余數(shù)組合起來第一位余數(shù)作為二進制數(shù)的最低位109d=1101101b109/2=54r154/2=27r027/2=13r113/2=6r16/2=3r03/2=1r11/2=0r1十六進制數(shù)0~9,A,B,C,D,E,F注意:數(shù)字以H結(jié)尾大家思考:為何引入十六進制數(shù)?二進制和十六進制BinaryHex4位一組劃分(從最低位開始)最后一組不足4位補0每組對應的數(shù)據(jù)轉(zhuǎn)換成對應的數(shù)字HexBinary相反的方法每個數(shù)字展成4bits可以忽略前面的若干的001001110b=4Eh37h=00110111b基本加法Easy!!例如:cccc10101+1111100100HexExample:cc3CF02
+435C9804CB0+0=00+1=11+0=11+1=101+1+1=11WatchCarries基本減法Hexexample:bbFCF02
-435C9B9939bbbbb1101000011
-11010011011011010Aborrowaddssixteen字符數(shù)據(jù)ASCIIAmericanStandardCodeforInformationInterchange(ASCII)7-bit二進制碼表示的128個字符通常占用1字節(jié)包括一些控制字符ASCII碼的序列稱為ASCII字符串注:數(shù)字字符‘1’~‘9’的ASCII碼值:30~39大家思考:如何將ASCII碼值和對應的數(shù)字相轉(zhuǎn)換?理解Two’sComplementCode補碼的定義:[X]補=(M+X)modM其中:M=2n正數(shù)的編碼無符號正數(shù)表示負數(shù)的編碼其值加上256后對應的正數(shù)編碼Codefor+107107d=1101011bcode:01101011(6Bh)Codefor-107-107+256=149149d=10010101bcode:10010101b(95h)大家計算
6Bh+95h=?二進制補碼轉(zhuǎn)換c和-c
的二進制補碼加和的值等于2的冪8-bitcode:c+(-c)=2816-bitcode:c+(-c)=216(-c) =2n-c =[(2n-1)-c]+1求補碼的方法1:(-c)=2n-c求補碼的方法2:翻轉(zhuǎn)所有的位加1檢驗BinaryDec1111,0000,1101-243+0111,0110,1001+18970110,0111,01101654負數(shù)解碼1111,0000,1101-(0000,1111,0011)-243HexDecimalF23C(-3524)
-2CF0
-11504C54C-15028對F23C解碼:1111,0010,0011,1100-(0000,1101,1100,0100)-3524算術(shù)進位算術(shù)進位+1111110000000101000000011CF=1,OF=0+25251無效+-451有效無符號數(shù)有符號數(shù)進位CF的設(shè)置,由符號位的運算進位0或1產(chǎn)生的。對于無符號數(shù),產(chǎn)生了數(shù)據(jù)位的進位而無效。算術(shù)溢出溢出的兩情形:+011110010000101110000100CF=0,OF=1+12111132無效++12111-124有效無符號數(shù)有符號數(shù)情形1:當符號位有進位輸入,而沒有進位輸出時情形2:當進位輸出不是由進位輸入產(chǎn)生時+111101101000100101111111CF=1,OF=1無效++246137127無符號數(shù)有符號數(shù)1+-10-119127無效作業(yè)1P11#2#3#6#72IBM-PC硬件AssemblyLanguageProgramming處理器8x86各種處理器的速度,尋址空間,寄存器以及總線數(shù)據(jù)寬度不同。808616bitsregisters,1MB內(nèi)存空間,總線8位808816位數(shù)據(jù)總線8038632位寄存器,32位總線,尋址4GBPentium32位寄存器,64位數(shù)據(jù)總線Intel8086處理器的結(jié)構(gòu)8086寄存器寄存器–處理器中臨時存儲數(shù)據(jù)的地方數(shù)據(jù)寄存器(16-bit)AX,BX,CX,DX地址寄存器(16-bit)段寄存器:CS,SS,DS,ES指針寄存器:SP,BP,IP變址寄存器:SI,DI狀態(tài)寄存器flag(16-bit)通用數(shù)據(jù)寄存器都是用來保存數(shù)據(jù)的,因此稱為通用寄存器但各有用途AX:累加BX:基址CX:計數(shù)DX:數(shù)據(jù)各個寄存器的對應高低字節(jié)可單獨使用AH,AL,BH,etc.AXBXCXDXAHALBHBLCHCLDHDL高8位低8位內(nèi)存組織8086尋址范圍1MB(220bytes)每個字節(jié)的地址從00000h到FFFFFh編碼,并且編址是唯一確定的注意:由于各個寄存器為16位,而20位的地址的尋址通過16位的寄存器完成。這是如何進行的呢?100111110010011001001000100000110101110010100010物理地址10000H10001H10002H10003H
10004H10005H數(shù)據(jù)尋址方式段:偏移量尋址段segment:一個存儲區(qū)域,起始地址為能夠被16整除的地址,即后4位為0(通常不寫)偏移量:段范圍內(nèi)的存儲單元相對于段起始地址的數(shù)量,偏移量的范圍從0000H到FFFFH段:偏移量尋址邏輯地址=段地址:偏移地址物理地址=段地址×16+偏移量邏輯地址段地址:偏移地址1000:0000H1000:0001H1000:0002H1000:0003H1000:0004H1000:0005H100111110010011001001000100000110101110010100010物理地址10000H10001H10002H10003H
10004H10005H邏輯地址vs.物理地址16位段地址
16位偏移地址0000+20位物理地址段寄存器代碼段CS對應執(zhí)行的指令,起始地址對應第一條可執(zhí)行的指令數(shù)據(jù)段DS對應程序的數(shù)據(jù)、常量等堆棧段SS對應暫存任何數(shù)據(jù),包括子程序所用的數(shù)據(jù)擴展段ES對應于特殊的數(shù)據(jù)和操作使用
存儲器8KB代碼2KB數(shù)據(jù)256堆棧02000H04800H04000H0200H0400H0480HCSDSSSESCS寄存器和IP寄存器CSregister表示程序代碼段的起始地址IP寄存器包含要執(zhí)行的下一指令的地址的偏移量,和CS寄存器相關(guān)聯(lián)IP寄存器的內(nèi)容是程序中不能修改的大家思考:某條指令的地址為CS:394BHIP:514H實際的物理地址:?SS寄存器和SP寄存器SS寄存器保存了暫時的數(shù)據(jù)和地址段的起始地址SP堆棧指針保存了堆棧段的段內(nèi)的偏移量,也就是堆棧的當前頂部地址上述兩者結(jié)合起來ES寄存器擴展數(shù)據(jù)段一般用于字符串操作的尋址,一般和DI寄存器相關(guān)聯(lián)BP和變址寄存器BP為基址寄存器可指定為任何段的偏移量,但缺省指的是堆棧段SI和DI稱為變址寄存器作用1:保存相對于任何段的偏移量,但通常缺省保存相對于數(shù)據(jù)段的偏移量作用2:有時保存相對于數(shù)組地址的索引數(shù)據(jù)標志寄存器標志寄存器保存了當前程序的執(zhí)行狀態(tài)1514131211109876543210OFDFIFTFSFZFAFPFCFOF溢出標志DF方向標志SF符號標志IF中斷標志ZF零標志TF陷阱標志CF進位標志PF奇偶標志AF輔助進位標志8086的系統(tǒng)啟動重置系統(tǒng)狀態(tài),執(zhí)行的第一條指令位于FFFF0HCS=FFFFhIP=0000h其余各個寄存器清零執(zhí)行ROM中指令,進入BIOS程序的處理系統(tǒng)內(nèi)存檢查初始化中斷向量表和相關(guān)數(shù)據(jù)從磁盤中載入操作系統(tǒng)位于磁盤的啟動扇區(qū)DOS載入執(zhí)行80x86寄存器80x86的程序可見寄存器組通用寄存器專用寄存器段寄存器
AHAXALBHBXBLCHCXCLDHDXDLSPBP
SIDI
IPFLAGSCSDSSSES8086/8088/80286寄存器EAXEBXECXEDXESPEBPESIEDIEIPEFLAGS
FSGS311615870中斷中斷:某些事件使得處理器掛起當前的操作,并為引起中斷的原因去作一些事情。有些原因是正常的,例如鍵盤輸入請求;有些是非法的,例如除數(shù)為0的操作。中斷服務程序堆棧StackLIFO數(shù)據(jù)結(jié)構(gòu)支持PUSH和POP操作作用發(fā)生中斷處理和過程調(diào)用時,保護當前執(zhí)行的現(xiàn)場;過程返回時,依據(jù)堆棧保存的地址繼續(xù)執(zhí)行堆棧的構(gòu)造堆棧是通過堆棧段寄存器和偏移量訪問的一段內(nèi)存區(qū)域SS:指向了堆棧的開始地址SP:指向了堆棧的頂部SP:000CSS:0340StackSize:000C動作PUSH:壓棧操作,減少SP
POP:出棧操作,增加SPSP:0008SS:0340StackSize:000CPUSHPOPPUSHPUSHsourcesource指的是任何16/32位通用或者段寄存器,或者字/雙字的地址PUSHF將標志寄存器的內(nèi)容壓棧動作:SP減去2/4在SS:SP地址存放source數(shù)據(jù)PUSH舉例PUSHAX3C09A4402CFFA2432A0946SP:000807064CSS:0340StackSize:000C3C09A4402CFFA2232A0946SP:000601064CSS:0340AX:0123POPPOPdestinationdestination指的是任何16/32位通用或者段寄存器,或者字/雙字的地址POPForPOPFD將標志寄存器的內(nèi)容出棧,存入標志寄存器動作:將SS:SP地址的數(shù)據(jù)拷貝到destinationSP加2/4POP舉例POPES3C09A4402CFFA2232A0946SP:000801064CSS:03403C09A4402CFFA2232A0946SP:000601064CSS:0340ES:01
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年運載火箭控制系統(tǒng)單元檢測設(shè)備項目建議書
- 2024攜手同行:員工勞動合同3篇
- 骨科護士聘用合同范本
- 企業(yè)宿舍住宿人員宿舍維修反饋
- 美食紀錄片監(jiān)制服務協(xié)議模板
- 航空航天器表面涂裝合同
- 2025租廠房合同范本范文
- 停車場充電樁建設(shè)與運營合同范本
- 水利設(shè)施清潔服務合同范本
- 化妝品產(chǎn)業(yè)園租賃協(xié)議
- 2024年度施工員(市政工程)專業(yè)技能知識考試題庫及答案(共四套)
- 2024年金融理財-金融理財師(AFP)考試近5年真題附答案
- 數(shù)字資產(chǎn)管理與優(yōu)化考核試卷
- 教案-“枚舉法”信息技術(shù)(信息科技)
- 2024年內(nèi)部審計年度工作計劃范文(六篇)
- 四川省成都市2021-2022學年物理高一下期末學業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 新教科版六年級上冊科學全冊知識點(期末總復習資料)
- 綠色建筑工程監(jiān)理實施細則
- 10kv電力施工方案
- 某港口碼頭工程施工組織設(shè)計
- 2024年安全員b證繼續(xù)教育考試
評論
0/150
提交評論