![《IBM-PC匯編語言》-全書3課時省公開課金獎全國賽課一等獎微課獲獎課件_第1頁](http://file4.renrendoc.com/view7/M00/0B/2F/wKhkGWbB4UOAMt-VAAIn49VY7Io962.jpg)
![《IBM-PC匯編語言》-全書3課時省公開課金獎全國賽課一等獎微課獲獎課件_第2頁](http://file4.renrendoc.com/view7/M00/0B/2F/wKhkGWbB4UOAMt-VAAIn49VY7Io9622.jpg)
![《IBM-PC匯編語言》-全書3課時省公開課金獎全國賽課一等獎微課獲獎課件_第3頁](http://file4.renrendoc.com/view7/M00/0B/2F/wKhkGWbB4UOAMt-VAAIn49VY7Io9623.jpg)
![《IBM-PC匯編語言》-全書3課時省公開課金獎全國賽課一等獎微課獲獎課件_第4頁](http://file4.renrendoc.com/view7/M00/0B/2F/wKhkGWbB4UOAMt-VAAIn49VY7Io9624.jpg)
![《IBM-PC匯編語言》-全書3課時省公開課金獎全國賽課一等獎微課獲獎課件_第5頁](http://file4.renrendoc.com/view7/M00/0B/2F/wKhkGWbB4UOAMt-VAAIn49VY7Io9625.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《IBM-PC匯編語言程序設計》巢湖學院計算機系教材主編:沈美名溫冬蟬主講教師:江家寶主講手機講Email:jiangjiabao12032@163.com
jjb12032@歡迎在座各位常與我交流!1/380教學日歷:第01講(第01周):基礎知識第02講(第02周):80×86計算機組織第03講(第03周):80×86尋址方式第04講(第04周):數據傳送類指令第05講(第05周):算術指令、邏輯指令和串處理指令第06講(第06周):控制轉移指令和處理機控制與雜項操作指令第07講(第07周):匯編語言程序格式第08講(第08周):循環(huán)與分支程序設計方法第09講(第09周):循環(huán)與分支程序設計實例分析第10講(第10周):子程序設計方法第11講(第11周):子程序設計實例分析第12講(第12周):高級匯編技術第13講(第13周):I/O設備數據傳送方式一第14講(第14周):I/O設備數據傳送方式二第15講(第15周):鍵盤I/O和顯示器I/O課件總目錄2/380IBM—PC匯編語言程序設計(第2版)清華大學計算機系列教材沈美名溫冬蟬編著總目錄3/380參考資料1.80X86匯編語言程序設計 沈美明溫冬嬋清華大學出版社2.IBMPC匯編語言與程序設計 PETERABEL編著 第4版清華大學出版社.PRENTICEHALL 第5版人民郵電出版社3.IBMPC匯編語言與程序設計例題習題集溫冬嬋沈美明清華大學出版社總目錄4/380第01講:基礎知識FORTRANBASICCOBOLPASCALC/C++JAVA...第01講(第01周):基礎知識總目錄后一講計算機語言發(fā)展5/380面向機器低級語言
通常是為特定計算機或計算機系列專門設計。保持了機器語言優(yōu)點
含有直接和簡捷特點。可有效地訪問、控制計算機各種硬件設備
如:磁盤、存放器、CPU、I/O端口等。高效程序設計語言
目標代碼簡短;占用內存少;執(zhí)行速度快;經常與高級語言配合使用
應用十分廣泛。第01講(第01周):基礎知識后一講匯編語言特點總目錄6/380例1:編程實現(xiàn)c=a+b,并在屏幕上顯示出結果。
#include"stdafx.h"#include"stdio.h"intmain(intargc,char*argv[]){inta,b,c;a=1; b=2; c=a+b; printf(“c=%d\n",c); return0;}編譯后目標文件到達3.59KB第01講(第01周):基礎知識(3課時)后一講匯編語言特點舉例1總目錄7/380例2.編程實現(xiàn)c=a+b,并在屏幕上顯示出結果。
datasegmentadb?bdb?cdb?stringdb'c=$'dataendscodesegmentmainprocfarassumecs:code,ds:data,es:datastart:
pushdssubax,axpushaxmovax,datamovds,axmoves,ax
匯編后目標文件只有208字節(jié)第01講(第01周):基礎知識(3課時)
mova,1movb,2moval,aaddal,bmovc,alleadx,stringmovah,09int21haddc,30hmovdl,cmovah,2int21hmovdl,0ahint21hmovdl,0dhint21hretmainendpcodeendsendstart后一講匯編語言特點舉例2總目錄8/380系統(tǒng)程序、高效率代碼、I/O驅動程序
70%以上系統(tǒng)軟件是用匯編語言編寫。一些快速處理、位處理、訪問硬件設備等高效程序是用匯編語言編寫。高級繪圖程序、視頻游戲程序普通是用匯編語言編寫。后一講第01講(第01周):基礎知識(3課時)匯編語言應用總目錄9/380目標:●了解匯編語言特征及其編程技術?!窠⑵稹皺C器”和“程序”、“空間”和“時間”概念。提議:●充分注意“匯編”課實踐性強特點?!穸嘧x程序,多寫程序,多上機調試程序。●熟悉PC機編程結構?!裾莆諈R編語言及其程序設計基本概念、方法和技巧。后一講第01講(第01周):基礎知識(3課時)總目錄教師提議10/380
數制
數制之間轉換
運算
數和字符表示后一講第01講(第01周):基礎知識(3課時)總目錄第1章、基礎知識11/380存放容量1K=1024=210(Kilo)1M=1024K=220(Mega)1G=1024M=230(Giga)1個二進制位:1bit(比特)8個二進制位:1Byte(字節(jié))1Byte=8bit2個字節(jié):1Word(字)1Word=2Byte=16bit后一講第01講(第01周):基礎知識(3課時)總目錄預備知識12/380(1)R進制數位權、基數、數碼;基數為R,逢R進一進位記數制基數數碼位權二進制(Binary)20、12i,2-j八進制(Octal)80、1、2、3、4、5、6、78i,8-j十進制(Decimal)100、1、2、3、4、5、6、7、8、910i,10-j十六進制(Hexadecimal)160、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F16i,16-j(2)八進制與二進制數碼對應關系二進制000001010011100101110111八進制01234567(3)十六進制與二進制數碼對應關系二進制000000010010010001010110011110001001101010111100110111101111十六進制123456789ABCDEF1.1.1、數制后一講第01講(第01周):基礎知識(3課時)總目錄§1.1、進位計數制與不一樣基數數之間轉換13/380(1)、任意進制R轉化成十進制數Eg:1011100.10111B=92.71875D
(2)、十進制數轉換成其它進制數
整數部分=>除R倒取余;小數部分=>乘R順取整;Eg:125.63D=>二進制和八進制后一講第01講(第01周):基礎知識(3課時)總目錄1.1.2、各數制之間轉換14/380二進制十六進制十進制二進制十進制十六進制降冪法除法二進制是橋梁后一講第01講(第01周):基礎知識(3課時)總目錄1.1.3、各數制之間轉換15/380
二進制八進制
011
101
111
110.011
100B
3576.34∴
11101111110.0111B=3576.34O
61.42O
.110001100010∴61.42O=110001.10001B后一講第01講(第01周):基礎知識(3課時)總目錄16/380
二進制十六進制110101.1011111B
00110101.10111110B
35BE∴
110101.10111110B=35BEHA19.CH
A19.C
101000011001.1100∴A19.CH=101000011001.11B后一講第01講(第01周):基礎知識(3課時)總目錄17/380
1011B=23+21+20=11D
降冪法除法
例:27D=?B2711331----
2n3216842111011
∴27D=11011B
二進制十進制后一講第01講(第01周):基礎知識(3課時)總目錄18/380
十六進制十進制
BF3CH=11163+15162+3161+12160
=48956D
降冪法除法
例:399D=?H39914315399/16→24/16→1/16→0---↓↓↓16n256161F81
18F
∴399D=18FH后一講第01講(第01周):基礎知識(3課時)總目錄19/3801.2.1、二進制算術運算
逢二進一、借一為二后一講第01講(第01周):基礎知識(3課時)總目錄§1.2、運算(算術運算和邏輯運算)加法規(guī)則0+0=00+1=11+0=11+1=0(向高位進1)乘法規(guī)則00=001=010=011=1減法規(guī)則0-0=00-1=1(向高位借1)1-0=11-1=020/3801.2.2、十六進制算術運算
逢十六進一、借一為十六(1).加法規(guī)則:兩個一位數之和S<16時同十進制加法,若S≥16時用S-16及進位1取代S;(2).減法規(guī)則:一位數a-c=S,S>0時同十進制減法,若S<0時向高位借1,然后(a+16)-c;(3).乘法規(guī)則:用十進制乘法規(guī)則計算,結果用十六進制表示;注意:若16進制數最高位為字母,統(tǒng)計時在前面補0=>OA34DH,382FH;
后一講第01講(第01周):基礎知識(3課時)總目錄21/380后一講第01講(第01周):基礎知識(3課時)總目錄§1.3、幾個基本邏輯運算(按位操作)22/380例:X=00FFHY=5555H,求Z=X
Y=?X=0000000011111111B
Y=0101010101010101B
Z=0101010110101010B
Z=55AAH后一講第01講(第01周):基礎知識(3課時)總目錄23/3801.4.1、計算機中有符號數表示機器數
在機器中,把一個數連其符號在內數值化表示數;后一講第01講(第01周):基礎知識(3課時)總目錄§1.4、計算機中數和字符表示24/3801.4.2、數慣用表示法——原碼反碼補碼原碼表示法:符號+絕對值例:n=8bit[+3]原碼=0000,0011=03H[-3]原碼=1000,0011=83H[+0]原碼=0000,0000=00H[-0]原碼=1000,0000=80H0表示不惟一反碼表示法:正數反碼同原碼,負數反碼數值位與原碼相反例:n=8bit[+5]反碼=0000,0101=05H[-5]反碼=1111,1010=FAH[+0]反碼=0000,0000=00H[-0]反碼=1111,1111=FFH0表示不惟一后一講第01講(第01周):基礎知識(3課時)總目錄25/380補碼表示法:正數補碼:
同原碼負數補碼:(1)寫出與該負數相對應正數補碼
(2)按位求反(3)末位加一后一講第01講(第01周):基礎知識(3課時)總目錄26/380補碼符號擴展規(guī)則
=>
高位不足者補符號位eg:[+46]補=00101110=2EH擴展成8位 = 0000000000101110=002EH擴展成16位[-46]補= 11010010=D2H擴展成8位= 1111111111010010=FFD2H擴展成16位后一講第01講(第01周):基礎知識(3課時)總目錄例:機器字長8位,[-46]補碼=?[46]補碼=001011101101000111010010=D2H
∴機器字長8位時,[-46]補碼=D2H[+0]補碼=000000001111111100000000=[-0]補碼
0表示惟一按位求反末位加1按位求反末位加127/380十進制二進制十六進制十進制十六進制n=8n=16+127011111117F+327677FFF+126011111107E+327667FFE......……...+20000001002+20002+10000000101+100010000000000000000-111111111FF-1FFFF-211111110FE-2FFFE......……...-1261000001082-327668002-1271000000181-327678001-1281000000080-327688000N位二進制有符號數補碼表示范圍:-2N-1≤X≤2N-1-1N位二進制無符號數表示范圍:0≤X≤2N-1
后一講第01講(第01周):基礎知識(3課時)總目錄28/380例:后一講第01講(第01周):基礎知識(3課時)總目錄1.4.3、補碼加法和減法:機器數用補碼表示目標是為了運算方便,先看下面一個例子:X=+32D、Y=-96D求(X+Y)值和補碼?顯然: [X]原 =00100000B [X]補 =00100000B[Y]原 =11100000B [Y]補 =10100000B[X]原+[Y]原 =
100000000B然而:[X]補+[Y]補 =
11000000B
結果顯示:[X+Y]補=[X]補+[Y]補求補運算
對一個二進制數按位求反、末位加一
加法規(guī)則:[X+Y]補碼=[X]補碼+[Y]補碼減法規(guī)則:[X-Y]補碼=[X]補碼
+[-Y]補碼
補碼減法可轉換為補碼加法29/380后一講第01講(第01周):基礎知識(3課時)1.4.4、進位和溢出進位:因為運算結果超出了位數,最高有效位向前進位,這一位自然丟失,普通不表示結果對錯。溢出:表示結果超出了字長允許表示范圍,普通會造成結果犯錯??偰夸?0/380后一講第01講(第01周):基礎知識(3課時)總目錄1.4.5、字符表示(1).機器中字符分類(2).ASCII碼:用一個字節(jié)來表示一個字符,低7位為字符ASCII值,最高位普通用作校驗位。31/380第01講:作業(yè)布置Page14: 書面作業(yè)
1.1(3)、1.2(1)、1.3(4) 1.4(3)、1.5(6)、1.6(1)后一講第01講(第01周):基礎知識(3課時)總目錄32/380
計算機系統(tǒng)
存放器
中央處理機
外部設備第02講(第02周):80×86計算機組織(3課時)第02講:80×86計算機組織前一講后一講總目錄33/3802.1.1、80x86微處理器發(fā)展P表2.1(1968年美國Intel企業(yè)成立)補充:1999年初32位PentiumⅢ芯片;注意各種芯片位數;年后32/64位PentiumⅣ芯片;2.1.2、基本術語:晶體管數、主頻、三總線(數據、地址、控制)、總線寬度、主存放器(內存)、高速緩沖存放器、外部存放器;2.1.3、基本常識:(1)、地址總線寬度與尋址空間:8位二進制數
1個字節(jié)B;2個字節(jié)
1個字W;2個字
雙字D;地址線
K根可尋址2個存放單元;若按“字節(jié)”編址
2個字節(jié)(即2B);若按“字”編址
2個字(即2×2B=2B);若按“雙字”編址
2個雙字(即2×4B=2B);Eg:32位地址總線、按字節(jié)編址、則尋址2B=2KB=2MB=2GB=4GB;(2)、Chche容量:80386
少許、80486
8KBPentium
8KB指令cache、8KB數據cache;PetiumPro
8KB指令cache、8KB數據cache、356KB二級cache;PentiumⅡ、Ⅲ、Ⅳ更多;后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講§2.1、80×86微處理器介紹34/380硬件組成:1.中央處理機CPU總線控制邏輯接口接口2.存放器大容量存放器I/O設備3.I/O子系統(tǒng)系統(tǒng)總線......軟件:系統(tǒng)軟件用戶軟件后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講§2.2、基于微處理器計算機系統(tǒng)組成35/380(1).系統(tǒng)軟件
廠家提供給用戶一組程序、為用戶程序服務;
主要有:操作系統(tǒng)、I/O驅動程序、文件管理程序、文本編輯程序、翻譯程序(匯編程序、編譯程序、解釋程序);匯編語言高級語言注意
匯編語言與硬件相關、高級語言與硬件無關;(2).用戶軟件
用戶編寫程序及相關文檔;軟件組成:后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講36/3802.3.1、中央處理器CPU組成
:運算器、控制器、存放器組等①、運算器
算術邏輯部件(ALU):算術運算、邏輯運算;②、控制器
產生控制信號、控制全部部件;③、存放器組
暫存指令運行所需信息:操作數、地址、中間結果、最終止果、預取指令等;2.3.2、80x86存放器組
1、存放器組分類:①、程序可見存放器
“通用存放器”、“專用存放器”、“段存放器”②、程序不可見存放器
用戶不可操作、CPU專用;后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講§2.3、中央處理器(CPU)37/380后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講80x86存放器結構數據存放器指針存放器變址存放器控制存放器38/3802、通用存放器組介紹(8個)
分8位、16位、32位(1).累加器(EAX、AX、AH、AL)
除通用外、乘/除指令操作數、算術運算結果和操作數、I/O與CPU傳送信息;(2).基址變址存放器(EBX、BX、BH、BL)
除通用外、存放基址(3).計數存放器(ECX、CX、CH、CL)
除通用外、計數功效;(4).數據存放器(EDX、DX、DH、DL)
除通用外、與累加器組合成雙字或四字長數(DX:AX,EDX:EAX)、存放I/O端口地址;(5).堆棧指針存放器(ESP、SP)
除通用外,存放堆棧指針;(6).基址指針存放器(EBP、BP)
除通用外、與SS聯(lián)合確定”棧”中單元;(7).源變址存放器(ESI、SI)
除通用外、與DS聯(lián)用確定數據段中單元;(8).目標變址存放器(EDI、DI)
除通用外、與DS聯(lián)用確定數據段單元:注意:變址存放器(7)、(8)有自增自減功效。后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講39/3803、專用存放器介紹(3個)
16位/32位(1).指令指針存放器(EIP/IP)
存放即將運行下一條指令偏移地址;它與段存放器CS聯(lián)合確定代碼段中指令物理地址;(2).堆棧指針存放器(ESP/SP)
除通用外,存放堆棧指針;(3).標志存放器(EFLAGS/FLAGS)
又名“程序狀態(tài)存放器”,存放條件運行時“條件碼標志、控制標志、系統(tǒng)標志”(狀態(tài)字)條件碼標志(6個)
程序運行結果和狀態(tài)信息,可作為程序轉移與處理控制條件;溢出標志OF
溢出時為1(OV),不溢出時為0(NV);符號標志SF
標識結果正負,正為0(PL),負為1(NZ);零標志ZF
結果是否為0,是為1(ZR),否為0(NZ);半進位標志AF
運算時第3位是否發(fā)生進/借位,是為1(AC),否為0(NA);奇偶標志PF
結果中1個數是否為偶,是為1(PE),否為0(PO);進位標志CF
最高位是否發(fā)生進/借位,是為1(CY),否為0(NC);控制標志(方向標識DF)
DF=1則表明變址存放器SI和DI遞減;DF=0則表明變址存放器SI和DI遞增;系統(tǒng)標志
用于I/O、中止屏蔽、程序調試、任務切換等;主要有:TF→陷阱標志;IF→中止標志;IO→PLI/O特權標志等;后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講40/380條件碼標志符號標志名值為1值為0OF溢出標志OV
NV
SF符號標志NG
PL
ZF零標志ZR
NZCF進位標志CY
NCAF輔助進位標志AC
NAPF奇偶標志PE
PO例:ADDAX,BXJO/JCERROR?后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講標志存放器(FLAGS)控制標志符號標志名值為1值為0DF方向標志DN
UPIF中止標志EI
DITF陷阱標志沒定義41/3804、段存放器組(4個/6個)介紹
都是16位:代碼段CS、數據段DS、堆棧段CS、附加段ES、附加數據段(FS和GS);
后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講42/3802.4.1、存放單元物理地址:Def:為了便于讀寫信息,內存中按照字節(jié)編址即每個字節(jié)有一個唯一編號,該編號位該單元物理地址;注意:字節(jié)編址、二進制表示、十六進制書寫;參見圖(2.5)存放器以字節(jié)(8bit)為編程單位每個字節(jié)單元都有唯一地址編碼地址用無符號整數來表示(編程用十六進制表示)一個字要占用相繼兩個字節(jié)低位字節(jié)存入低地址,高位字節(jié)存入高地址對字,雙字,四字單元地址一律以最低字節(jié)地址表示機器以偶地址訪問(讀/寫)存放器后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講§2.4、存放器存放單元地址和存放內容43/3802.4.2、存放單元中內容:Def:邏輯地址
段地址和偏移地址統(tǒng)稱邏輯地址;若:X單元存放內容是Y單元地址,則Y單元內容表示為:(Y)=((X))字節(jié),字,雙字,四字長內容在存放器中存放形式
低對低,高對高字節(jié)內容(10000H)=9FH;(10001H)=26H訪問一次內存字內容(10000H)=269FH;(10001H)=4826H訪問兩次內存雙字內容(10000H)=8348269FH;(10001H)=5C834826H訪問四次內存后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講44/3802.4.3、實模式存放器尋址(尋址
怎樣形成物理地址)(1)、def:實模式
采取16位段地址和16位地址偏移形成20位物理地址;最大尋址空間1MB,最大分段為64KB存放器尋址方式?def:保護模式
采取16位段地址和32位偏移地址形成32位物理地址;最大尋址空間為4GB,最大分段為4GB存放器尋址方式;(2)、存放器地址分段:20根地址線:地址范圍00000H~FFFFFH(1MB)機器字長16位:僅能表示地址范圍0000H~FFFFH(64KB)小段:每16個字節(jié)為一小段,共有64K個小段小段首地址00000H~0000FH00010H~0001FH00020H~0002FH…
…
…
…
…
…
FFFF0H~FFFFFH
段起始地址(段基址)
每一小段起始地址高16位(低4位為0);偏移地址(有效地址:EA)
段內相對于段起始地址偏移值;64K范圍內任意字節(jié);后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講45/380(3)、實模式尋址方式: 16d
段基址+偏移地址(EA)=物理地址(PA) 16位16位20位即:16位段基址左移4位后加16位偏移地址形成20位物理地址(硬件自動實現(xiàn))例:(DS)=2100H,(EA)=(BP)=0500H則:(PA)=21000H+0500H=21500H(4)、段存放器(16位)
專門存放段基址存放器;①、CS
存放當前正在運行程序段基址;②、DS
存放當前正在運行程序所用到數據段基址;③、SS
存放當前使用堆棧段棧底(高地址);④、ES
存放附加數據段基址;注意:①、每個段存放器定義段能夠獨占64KB,也可重合(見圖2.9);②、段存放器與其對應存放偏移地址存放器之間有默認關系(見表2.3與表2.4)后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講46/380支持多任務處理功效支持虛擬存放器特征
2.4.4、保護模式下存放器尋址16位選擇器值經過操作系統(tǒng)地址轉換操作變成32位段地址,然后加上32位偏移地址而形成了32位物理地址;保護模式下存放器尋址所選存放單元描述符64描述符表所選段存儲器段基地址32選擇器16偏移地址32邏輯地址后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講47/3802.4.5、存放器與存放器比較:寄存器存儲器在CPU內部在CPU外部訪問速度快訪問速度慢容量小,成本高容量大,成本低用名字表示用地址表示沒有地址地址可用各種方式形成后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講48/3801、外部接口組成:由一組“存放器”及相關“控制電路組成”;①、數據存放器
存放主機與外設交換數據;②、狀態(tài)存放器
存放外設和接口當前狀態(tài)信號;③、命令存放器
存放CPU給外控制命令;2、Def:端口地址(又稱“端口號”)外設存放器地址(即編號)①、編址方式
獨立編址、混合編址; ②、80x86I/O地址空間為64KB(即65536個B)外設中每個存放器有一個端口(Port)地址,組成一個獨立于內存I/O地址空間:0000H~FFFFH3、外設例行程序
經過中止方式轉入子程序,它完成一定I/O功效;分兩種:BIOS和DOS;
后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講§2.5、外部設備49/380第02講作業(yè)布置Page33:書面作業(yè)
習題2.2、習題2.3、習題2.4、習題2.5、習題2.8;
后一講第02講(第02周):80×86計算機組織(3課時)總目錄前一講50/380第03講:80×86尋址方式教學要求:1.掌握普通指令系統(tǒng)基本概念:指令格式、功效和注意事項。2.重點掌握8086/8088指令系統(tǒng)中,各指令格式、尋址方式、指令類型。3.了解其它(飛躍等)尋址方式和指令類型。第03講(第03周):80×86尋址方式(3課時)前一講后一講第3章、80x86指令系統(tǒng)和尋址方式總目錄51/380§3.1、指令系統(tǒng)基本概念
計算機指令系統(tǒng)就是指該計算機能夠執(zhí)行全部指令集合。每種計算機都有它支持指令集合。
16位8086指令系統(tǒng)是整個Intel80x86系列微處理器指令系統(tǒng)基礎。3.1.1、指令系統(tǒng)第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄52/380操作碼
說明計算機要執(zhí)行哪種操作,如傳送、運算、移位、跳轉等操作,它是指令中不可缺乏組成部分。操作碼操作數·····
操作數指令由操作碼和操作數兩部分組成。操作數
是指令執(zhí)行參加者,即各種操作對象。有些指令不需要操作數,通常指令都有一個或兩個操作數,也有個別指令有三個甚至四個操作數,通常稱為一地址指令、二地址指令、三…第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄3.1.2指令格式53/380指令功效——該指令能夠實現(xiàn)何種操作。通常指令助記符就是指令功效英文單詞或其縮寫形式。指令支持尋址方式——該指令中操作數能夠采取何種尋址方式。指令對標志影響——該指令執(zhí)行后是否對各個標志位(OV、ZF、CF、PF等)有影響,以及怎樣影響。第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄3.1.3學習指令注意事項54/3803.2.1尋址、尋址方式概念尋址就是尋找操作數地址。尋址方式就是尋找操作數方法。操作數能夠跟隨在指令操作碼之后,稱為馬上數.操作數也能夠存放在CPU內部存放器中,稱為存放器操作數.
絕大多數操作數存放在內存放器中,稱為存放器操作數.指令指定操作數位置,即給出地址信息,在執(zhí)行時需要依據這個地址信息找到需要操作數.第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄§3.2、80x86尋址方式55/380
指令助記符表達該指令功效,它對應一條二進制編碼機器指令。指令操作數個數由該指令確定,能夠沒有操作數,也能夠有一個、二個或三個操作數。80X86尋址方式分類:
尋址中心問題怎樣確定“偏移地址”值;
第一類:與數據相關十種方式
①馬上尋址、②存放器尋址、③直接尋址、④存放器間接尋址、⑤存放器相對尋址、⑥基址變址尋址、⑦相對基址變址尋址、⑧百分比變址尋址、⑨基址百分比變址尋址、⑩相對基址百分比變址尋址;第二類:與轉移地址相關四種尋址方式
①段內直接尋址、②段內間接尋址、③段間直接尋址、④段間間接尋址;說明:同一指令多個操作數可各自采取不一樣尋址方式。
3.2.280X86指令格式指令助記符[操作數1[,操作數2[,操作數3]]][;注釋]第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄56/3803.2.3與數據相關尋址方式與尋址方式相關基礎知識介紹:(1)、有效地址(EA)
指令直接或間接指明存放操作數內存單元偏移地址: EA=基址+(變址*百分比因子)+位移量注意:上述公式中四種成份不一樣組合形成八種尋址方式①基址(base)
存放在“基址存放器”中;可正可負;主要用于存放數組或字符串首址;16位基址存放器:BX、BP.32位基址存放器:EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI.②變址(index)
存放在“變址存放器”中;可正可負;主要用于訪問數組中某元素或字符串中某一元素.16位變址存放器:SI、DI.32位變址存放器:除ESP以外七個32位通用存放器.③百分比因子(scalefactor)
只與變址存放器聯(lián)用;只能為1、2、4或8;注意:只能是32位尋址,沒有16位尋址;④位移量(displacement)
存放在指令中一個8位、16位、32位地址偏移部分;可正可負;第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄57/380(2)、段超越前綴
形成物理地址時,段存放器與訪存類型之間有默認匹配關系,但有時能夠使用段超越前綴來改變默認關系(參見P39表3.2);格式:MOVAX,ES:[H]尤其注意:但以下三種情況不允許使用段超越前綴①串處理指令目標串
ES段;②取指指令
CS段;③PUSH目標和POP源
SS段;第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄58/380以MOV指令為例:馬上尋址MOVAX,3069H存放器尋址MOVAL,BH直接尋址MOVAX,[H]存放器間接尋址MOVAX,[BX]存放器相對尋址MOVAX,COUNT[SI]基址變址尋址MOVAX,[BP][DI]相對基址變址尋址MOVAX,MASK[BX][SI]基址百分比變址尋址MOVEBX,[EAX][EDX*8]相對基址百分比變址尋址MOVEAX,TABLE[EBP][EDI*4]第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄59/3801)馬上尋址方式→沒有EA圖形表示:操作數n指令
定義:操作數作為指令一部分而直接寫在指令中,這種操作數稱為馬上數,這種尋址方式也就稱為馬上數尋址方式。
匯編格式:n(n為馬上操作數,是用8位或16位二進制補碼表示有符號數)實列:MOVAH,5 MOVAH,05HMOVAX,3064H MOVEAX,12345678H
功效:操作數存放在存放器,指令下一單元內容為馬上操作數n。第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄60/380【例3.1】MOVAX,4576H執(zhí)行后(AX)=?
該例中源操作數為馬上尋址方式,馬上數為4576H,存放在指令下一單元。執(zhí)行:4576H→AX執(zhí)行后:(AX)=4576H
第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄61/3802)存放器尋址方式→沒有EA定義:指令所要操作數已存放在某存放器中,或把目標操作數存入存放器。把在指令中指出所使用存放器(即:存放器助記符)尋址方式稱為存放器尋址方式。
存放器R指令操作數存放器匯編格式:R(其中R表示存放器名,如AX、BX等。)實例:MOVAX,BX
功效:操作數直接存放在存放器R中。圖形表示:第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄62/380指令中能夠引用存放器及其符號名稱以下:8位存放器:AH、AL、BH、BL、CH、CL、DH、DL;16位存放器:AX、BX、CX、DX、SI、DI、SP、BP和段存放器等;32位存放器:EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP。注意:因為指令所需操作數已存放在存放器中,或操作結果存入存放器,這么,在指令執(zhí)行過程中,會降低讀/寫存放器單元次數,所以,使用存放器尋址方式指令含有較快執(zhí)行速度。通常情況下,提倡在編寫匯編語言程序時,應盡可能地使用存放器尋址方式,但也不要把它絕對化。第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄63/380【例3.2】以下程序執(zhí)行后,(AX)=?,(BX)=?MOVAX,1234HMOVBX,5678HADDAX,BX執(zhí)行:AX←1234H執(zhí)行:BX←5678H執(zhí)行:AX←(AX)+(BX)執(zhí)行后:(AX)=68ACH,(BX)=5678H第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄64/3803)直接尋址方式→EA=位移量定義:指令所要操作數存放在內存中,在指令中直接給出該操作數有效地址,這種尋址方式為直接尋址方式。
EA指令操作數存放器+段基地址匯編格式:含有變量地址表示式。功效:指令下一字單元內容是操作數偏移地址EA。圖形表示:第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄65/380【例3.3】執(zhí)行指令:MOVBX,[1234H]設(DS)=H。執(zhí)行后:(BX)=?
DS:H+1234H21234HOP
~~~~…CS→DS→13H52H0H21234H……34H12H執(zhí)行:BX←(21234H)執(zhí)行后:(BX)=5213H第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄135266/380
在通常情況下,操作數存放在數據段中,所以,其物理地址將由數據段存放器DS和指令中給出有效地址直接形成,但假如使用段超越前綴,那么,操作數可存放在其它段。
比如:MOVES:[1000H],AX第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄67/380注意:馬上尋址方式和直接尋址方式書寫格式不一樣,直接尋址地址要寫在括號“[”,“]”內。在程序中,直接地址通慣用內存變量名來表示,如:MOVBX,VARW,其中,VARW是內存字變量;試比較以下指令中源操作數尋址方式(VARW是內存字變量):MOVAX,1234H
MOVAX,
[1234H]
前者是馬上尋址,后者是直接尋址
MOVAX,VARW
MOVAX,
[VARW]
二者是等效,均為直接尋址第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄68/3804)存放器間接尋址方式→EA=基址/變址定義:操作數在存放器中,操作數有效地址用SI、DI、BX和BP等四個存放器之一來指定,稱這種尋址方式為存放器間接尋址方式。EA存放器操作數存放器+段基地址基址或變址存放器指令匯編格式:[R]格式示例:MOVAX,[BX]或MOVAX,ES:[BX]功能:存放器R存放操作數偏移地址EA。圖形表示:第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄69/380【例3.4】假設有指令:MOVBX,[DI],在執(zhí)行時,(DS)=1000H,(DI)=2345H,存放單元12345H內容是4354H。問執(zhí)行指令后,BX值是什么?
BX
DS:1000H+DI:2345H12345H解:存放器DI值不是操作數,而是操作數地址。該操作數物理地址應由DS和DI值形成,即:
PA=(DS)*16+DI=1000H*16+2345H=12345H。該指令執(zhí)行效果是:把從物理地址為12345H開始一個字值傳送給BX。4354…OP…~~~~…
CS→
DS→54H43H
10000H
12345H第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄70/380在不使用段超越前綴情況下,有以下要求:
若有效地址用SI、DI和BX等之一來指定,則其缺省段存放器為DS;若有效地址用BP來指定,則其缺省段存放器為SS(即:堆棧段)。該尋址方式物理地址計算方法以下:
BX
物理地址PA=16×DS+
SI
DI或
物理地址PA=16×SS+
BP第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄71/380定義:操作數在存放器中,其有效地址是一個基址存放器(BX、BP)或變址存放器(SI、DI)內容和指令中8位/16位偏移量之和。匯編格式:X[R](位移量X,是8位或16位二進制補碼表示有符號數)格式示例:MOVAX,COUNT[SI] 或 MOVAX,3000H[SI]MOVAX,[COUNT+SI] 或 MOVAX,[3000H+SI]MOVAX,ES:COUNT[SI] 或 MOVAX,ES:[COUNT+SI]
功效:操作數存放在存放器,存放器R內容加位移量X為操作數偏移地址EA。圖形表示:地址存放器操作數存放器+段基地址基址或變址存放器位移量指令+EA第03講(第03周):80×86尋址方式(3課時)前一講后一講5)存放器相對尋址方式→EA=基址/變址+位移量總目錄72/380【例3.5】假設指令:MOVBX,[SI+100H],在執(zhí)行它時,(DS)=1000H,(SI)=2345H,內存單元12445H內容為2715H,問該指令執(zhí)行后,BX值是什么?解:EA=(SI)+100H=2345H+100H=2445H
PA=(DS)×16+EA=1000H×16+2445H=12445H。所以,該指令執(zhí)行效果是:把從物理地址為12445H開始一個字值傳送給BX。第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄73/380定義:操作數在存放器中,其有效地址是一個基址存放器(BX、BP)和一個變址存放器(SI、DI)內容之和。匯編格式:[BR+IR]格式示例:MOVAX,[BX][SI] 或 MOVAX,[BX+SI]MOVAX,ES:[BX][SI] 或 MOVAX,ES:[BX+SI]
功效:操作數存放在存放器,BR內容加IR內容是操作數偏移地址EA。圖形表示:操作數
存放器+段基地址基址存放器變址存放器指令+基址值基址存放器變址值變址存放器EA第03講(第03周):80×86尋址方式(3課時)前一講后一講6)基址變址尋址方式→EA=基址+變址總目錄74/380【例3.6】假設指令:MOVBX,[BX+SI],在執(zhí)行時,(DS)=1000H,(BX)=2100H,(SI)=0011H,內存單元12111H內容為1234H。問該指令執(zhí)行后,BX值是什么?
解:操作數物理地址PA為:
PA=(DS)*16+(BX)+(SI)=1000H*16+2100H+0011H=12111H所以,該指令執(zhí)行效果是:把從物理地址為12111H開始一個字值傳送給BX。
…OP…~~~~…CS→
DS→34H12H
10000H12111H
BX:2100H+SI:0011HEA:2111H+DS:1000HPA=12111H1234
BX第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄75/380定義:操作數在存放器中,其有效地址是一個基址存放器(BX、BP)值、一個變址存放器(SI、DI)值和指令中8位/16位位移量之和。匯編格式:var[BR+IR]格式示例:MOVAX,COUNT[BX][SI] 或 MOVAX,-46H[BX][SI]MOVAX,COUNT[BX+SI] 或 MOVAX,0246H[BX+SI]MOVAX,[COUNT+BX+SI] 或 MOVAX,[-56H+BX+SI]MOVAX,ES:COUNT[BX][SI] 或 MOVAX,ES:[0246H+BX+SI]功能:操作數存放在存放器,BR內容加IR內容加位移量X是操作數偏移地址EA。圖形表示:第03講(第03周):80×86尋址方式(3課時)前一講后一講7)相對基址變址尋址方式→EA=基址+變址+位移量總目錄76/380【例3.7】假設指令:MOVAX,[BX+SI+200H],在執(zhí)行時,(DS)=1000H,(BX)=2100H,(SI)=0010H,內存單元12310H內容為1234H。問該指令執(zhí)行后,AX值是什么?解:該操作數物理地址應由DS和EA值形成;即:PA=12310H所以,該指令執(zhí)行效果是:把從物理地址為12310H開始一個字值傳送給AX。第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄77/380跨段越問題
凡是使用存放器為BX、SI、DI時,其默認段為DS,使用BP時,默認段為SS。該要求為系統(tǒng)默認狀態(tài)。當要否定默認狀態(tài),到非約定段尋找操作數時,必須用跨段前綴指明操作數段存放器名。匯編格式:段存放器名:操作數地址。功能:冒號“:”之前段存放器名指明操作數所在段。【例3.8】MOVAX,DS:[BP]MOV CX,SS:[SI]該例中,DS:,SS:均為跨段前綴,此時默認狀態(tài)無效,操作數物理地址PA由段存放器內容左移4位加偏移EA形成。上述2條指令源操作數物理地址分別為:PA1=(DS)左移4位+[BP]PA2=(SS)左移4位+[SI]第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄78/380格式: MOVEAX,MASK[ESI*4]或 MOVEAX,[MASK+ESI*4]講解:eg3.12第03講(第03周):80×86尋址方式(3課時)前一講后一講8)相對百分比變址尋址→EA=變址×百分比因子+位移量格式: MOVEBX,[EAX][EDX*8] 或MOVEBX,[EAX+EDX*8]或MOVEBX,[ESP][EAX*2]格式: MOVEAX,TABLE[EBP][EDI*4] 或MOVEAX,[TABLE+EBP+EDI*4]8位/16位/32位位移量注意1:百分比因子只能與32位變址存放器:EAX、EBX、ECX、EDX、EBP、ESI、EDI聯(lián)用;且百分比因子只能為1、2、4或8;注意2:
8)、9)、10)只能是32位尋址,沒有16位尋址;9)基址百分比變址尋址→EA=基址+變址×百分比因子10)相對基址百分比變址尋址→EA=基址+變址×百分比因子+位移量總目錄79/3803.2.4、與轉移地址相關尋址方式用來確定轉移指令及轉子(call)指令轉向地址。轉移地址是由各種尋址方式得到有效地址和段地址相加而成,有效地址存入IP存放器中,段地址指定為CS段存放器內容。
段內尋址段內直接尋址JMPNEARPTRNEXT
段內間接尋址JMPTABLE[BX]段間尋址段間直接尋址JMPFARPTRNEXT
段間間接尋址JMPDWORDPTR[BX]第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄80/380(1).段內直接尋址轉向有效地址=當前(IP)+位移量(8bit/16bit)格式: JMP SHORT
QUEST
短跳轉
8位位移量 JMP NEARPTP
PROGIA
近跳轉
16位位移量即:CS不變(IP)←當前(IP)+位移量(8bit/16bit)位移量IP存放器+EA第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄81/380【例3.8】(1).JMPSHORTQUEST
其中QUEST表示轉移符號地址,操作符SHORT表示是個8位帶符號數,數范圍是80H~7FH,即-128~+127。它只能相對于當前IP(轉移指令下一條指令首地址)所指位置作-128~+127范圍內跳轉,所以稱為短跳轉。(2).JMPNEARPTRPROGA其中PROGA表示轉移符號地址,操作符NEARPRT表示是個16位帶符號數,數范圍是8000H~7FFFH,即-32768~+32767。它只能相對于當前IP所指位置作-32768~+32767范圍內跳轉,所以稱為近跳轉。
第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄82/380(2).段內間接尋址轉向有效地址是一個存放器或存放單元內容??捎贸R上數以外任何一個數據尋址方式得到,所得到轉向有效地址取代IP存放器內容。格式: JMPBX 即:(IP)←存放器內容 JMPWORDPTR[BP+TABLE] 即:(IP)←存放器內容JMPDWORDPTR[EBP+TABLE] 即:(IP)←存放器內容注意:指令EA中是除馬上數以外任何尋址方式取得16/32位偏移地址;轉向有效地址指令數據尋址方式或依據數據尋址方式計算得到EA值轉向有效地址存放單元存放器存放器第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄83/380
【例3.9】已知:TABLE=20A2H,(BX)=1256H,(SI)=528EH,(DS)=H,(232F8H)=3280H,(264E4H)=2450H
JMPBX;(IP)=1256H
JMPWORDPTRTABLE[BX];(IP)=3280H
JMPWORDPTR[BX][SI];(IP)=2450H第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄84/380(3).段間直接尋址用指令中提供轉向段地址和偏移地址取代CS和IP。格式:JMPFARPTR
NEXT功效:(CS)
NEXT所在段基址;(IP)
NEXT所在段段內偏移;即轉到NEXT所在位置;
指令偏移地址IP存放器段地址CS存放器第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄85/380【例3.9】JMPFARPTRNEXTROUNT第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄86/380(4).段間間接尋址用存放器中兩個相繼字內容取代CS和IP,存放單元地址可用存放器尋址方式得到。
格式: JMPDWORDPTR[BX] //32位尋址類同;[EBX] JMPDWORDPTR[BX+MARK] //32位尋址類同;[EBX] JMPDWORDPTR[BX+SI] //32位尋址類同;[EBX]注意:EA是除馬上數尋址和存放器尋址以外任一尋址方式取得有效地址
指令數據尋址方式依據數據尋址方式計算出EA值轉向有效地址轉向有效地址存放器中兩個相繼字IPCS第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄87/380【例3.10】JMPDWORDPTR[INTERS+BX]若:DS=3000H,BX=1200H,INTERS=0020H,則:存放單元物理地址PA=30000+0020+1200=31200H指令執(zhí)行前:CS=0000H,IP=1000H;(31220H)=40H,(31221)=01H,(31222H)=00H,(31223)=10H。指令執(zhí)行后:CS=1000H,IP=0140H:(31220H)=40H,(31221)=01H,(31222H)=00H,(31223)=10H。第03講(第03周):80×86尋址方式(3課時)前一講后一講總目錄88/380指令JMPDWORDPTR[INTERS+BX]存放和執(zhí)行情況:第03講(第03周
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年活乳鴿行業(yè)深度研究分析報告
- 加盟商申請書
- 2020-2025年中國白半透明紙行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y戰(zhàn)略研究報告
- 買保險申請書
- 2025年萬能清潔膠市場調研報告
- 2025年度新型建筑工程安全員責任履行協(xié)議
- 2025年度冷鏈運輸合同法分則實施細則
- 2025年度家用電器出口貿易合同樣本
- 2025年度合伙人分伙協(xié)議書:人工智能技術研發(fā)合伙人分伙合同
- 2025年歐式四開大門項目投資可行性研究分析報告
- 質檢工作計劃書2025質檢部工作計劃范文
- 《纏論的實戰(zhàn)技法》課件
- 新版標準化機電專業(yè)管理體系解讀課件
- 承包魚塘維修施工合同范例
- 耶魯綜合抽動嚴重程度量表正式版
- 水利水電工程建設常見事故類型及典型事故分析(標準版)
- 《小學英語教學設計》課件全套 陳冬花 第1-10章 小學英語教學設計概述-小學英語課堂管理
- 政府采購項目采購需求調查指引文本
- 2024建筑用輻射致冷涂料
- 2024年浙江省公務員錄用考試《行測》題(A類)
- 《化工設備機械基礎(第8版)》完整全套教學課件
評論
0/150
提交評論