版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、蘇州科技學(xué)院電子學(xué)院趙梅制作蘇州科技學(xué)院電子學(xué)院趙梅制作匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)主講:趙主講:趙 梅梅課程簡介課程簡介援用援用概述 匯編語言是計(jì)算機(jī)提供給用戶的最匯編語言是計(jì)算機(jī)提供給用戶的最快最有效的語言,也是利用計(jì)算機(jī)所有快最有效的語言,也是利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的唯一語言。硬件特性并能直接控制硬件的唯一語言。因而在對(duì)于程序的空間和時(shí)間要求很高的場合,因而在對(duì)于程序的空間和時(shí)間要求很高的場合,匯編語言是必不可少的。匯編語言是必不可少的。很多需要直接控制硬件的應(yīng)用場合,很多需要直接控制硬件的應(yīng)用場合,更是非用匯編語言不可。更是非用匯編語言不可。特點(diǎn)匯編語言是介于計(jì)算機(jī)
2、能直接理解的機(jī)器語言與使用匯編語言是介于計(jì)算機(jī)能直接理解的機(jī)器語言與使用者容易理解的高級(jí)語言之間的一種語言。它除有與代者容易理解的高級(jí)語言之間的一種語言。它除有與代碼指令一一對(duì)應(yīng)的符號(hào)指令外,還增加了專用于定義碼指令一一對(duì)應(yīng)的符號(hào)指令外,還增加了專用于定義變量、常量、符號(hào)、過程、分配存貯空間、定位程序變量、常量、符號(hào)、過程、分配存貯空間、定位程序起始地址等一系列稱之為偽指令的符號(hào)指令。起始地址等一系列稱之為偽指令的符號(hào)指令。同高級(jí)語言比較,它更接近機(jī)器語言,更能全面地同高級(jí)語言比較,它更接近機(jī)器語言,更能全面地反映計(jì)算機(jī)硬件的功能特點(diǎn)。同機(jī)器語言比較,它反映計(jì)算機(jī)硬件的功能特點(diǎn)。同機(jī)器語言比較
3、,它易于閱讀,編寫和修改程序。因此,易于閱讀,編寫和修改程序。因此, 使用匯編語言使用匯編語言可編寫出運(yùn)行速度快、占存儲(chǔ)空間少、能充分利用可編寫出運(yùn)行速度快、占存儲(chǔ)空間少、能充分利用硬件資源、發(fā)揮計(jì)算機(jī)效能并能進(jìn)行精確控制的程硬件資源、發(fā)揮計(jì)算機(jī)效能并能進(jìn)行精確控制的程序。序。運(yùn)用高級(jí)語言編譯程序的編高級(jí)語言編譯程序的編制;編輯、調(diào)試,鏈接制;編輯、調(diào)試,鏈接裝配、磁盤驅(qū)動(dòng)和磁盤裝配、磁盤驅(qū)動(dòng)和磁盤讀寫等實(shí)用程序的編制讀寫等實(shí)用程序的編制;控制、指揮和監(jiān)測等;控制、指揮和監(jiān)測等實(shí)時(shí)處理程序的編制;實(shí)時(shí)處理程序的編制;計(jì)算機(jī)系統(tǒng)的開發(fā)。計(jì)算機(jī)系統(tǒng)的開發(fā)。 匯編語言是面向機(jī)器的匯編語言是面向機(jī)器的
4、語言,故它將因計(jì)算機(jī)語言,故它將因計(jì)算機(jī)機(jī)型的不同而異。但用機(jī)型的不同而異。但用匯編語言進(jìn)行程序設(shè)計(jì)匯編語言進(jìn)行程序設(shè)計(jì)的基本概念、基本技巧的基本概念、基本技巧和基本方法是普遍適用和基本方法是普遍適用的。我們選擇目前國內(nèi)的。我們選擇目前國內(nèi)最廣泛使用的最廣泛使用的 IBM PC 作作為基礎(chǔ)講授。其它機(jī)型為基礎(chǔ)講授。其它機(jī)型同學(xué)們定可觸類旁通。同學(xué)們定可觸類旁通。 學(xué)習(xí)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)第第1章章 匯編語言基礎(chǔ)知識(shí)匯編語言基礎(chǔ)知識(shí)第第2章章 8086的指令系統(tǒng)的指令系統(tǒng)第第3章章 匯編語言程序格式匯編語言程序格式第第4章章 基本匯編語言程序設(shè)計(jì)基本匯編語言程序設(shè)計(jì)第第1 1章章 匯
5、編語言基礎(chǔ)知識(shí)匯編語言基礎(chǔ)知識(shí)1.1 計(jì)算機(jī)系統(tǒng)概述計(jì)算機(jī)系統(tǒng)概述1.2 數(shù)據(jù)表示數(shù)據(jù)表示1.3 Intel80 x86系列微處理器系列微處理器1.4 微型計(jì)算機(jī)系統(tǒng)微型計(jì)算機(jī)系統(tǒng)1.5 8086微處理器微處理器1.6 8086的尋址方式的尋址方式1.1 計(jì)算機(jī)系統(tǒng)概述計(jì)算機(jī)系統(tǒng)計(jì)算機(jī)系統(tǒng)計(jì)算機(jī)硬件計(jì)算機(jī)硬件計(jì)算機(jī)軟件計(jì)算機(jī)軟件中央處理器中央處理器存儲(chǔ)器存儲(chǔ)器外部設(shè)備外部設(shè)備運(yùn)算器運(yùn)算器控制器控制器寄存器寄存器系統(tǒng)軟件系統(tǒng)軟件應(yīng)用軟件應(yīng)用軟件主存儲(chǔ)器主存儲(chǔ)器輔助存儲(chǔ)器輔助存儲(chǔ)器輸入設(shè)備輸入設(shè)備輸出設(shè)備輸出設(shè)備中央處理器中央處理器CPU總線控制邏輯存儲(chǔ)器存儲(chǔ)器接口接口接口接口大容量大容量存儲(chǔ)器存
6、儲(chǔ)器I/O設(shè)備設(shè)備系統(tǒng)總線系統(tǒng)總線I/O子子系系統(tǒng)統(tǒng)計(jì)算機(jī)結(jié)構(gòu)計(jì)算機(jī)結(jié)構(gòu)磁盤、磁磁盤、磁帶、光盤帶、光盤外存外存數(shù)據(jù)總線、地址總數(shù)據(jù)總線、地址總線、控制總線線、控制總線系統(tǒng)總線系統(tǒng)總線1.1 計(jì)算機(jī)系統(tǒng)概述計(jì)算機(jī)程序設(shè)計(jì)語言計(jì)算機(jī)程序設(shè)計(jì)語言機(jī)器語言機(jī)器語言匯編語言匯編語言高級(jí)語言高級(jí)語言0或或1組成的代碼組成的代碼使用指令集編寫程序的規(guī)則使用指令集編寫程序的規(guī)則B8 64 0005 00 01一種符號(hào)語言一種符號(hào)語言用助記符表示操作碼用助記符表示操作碼MOV AX,100ADD AX,256接近于人類自然語言的語法接近于人類自然語言的語法習(xí)慣及數(shù)學(xué)表達(dá)形式習(xí)慣及數(shù)學(xué)表達(dá)形式1.2 數(shù)制表示
7、數(shù)制的基數(shù)與權(quán)數(shù)制的基數(shù)與權(quán)基數(shù):數(shù)制所使用的數(shù)碼個(gè)數(shù)基數(shù):數(shù)制所使用的數(shù)碼個(gè)數(shù)例:十進(jìn)制數(shù)使用例:十進(jìn)制數(shù)使用09十個(gè)數(shù),所以它的基數(shù)是十個(gè)數(shù),所以它的基數(shù)是10權(quán):數(shù)制每一位置所具有的值權(quán):數(shù)制每一位置所具有的值例:例:6 8 4 5千千 百百 十十 個(gè)個(gè)103 102 101 100十進(jìn)制數(shù)各位的權(quán)十進(jìn)制數(shù)各位的權(quán)是以是以10為底的冪為底的冪二進(jìn)制數(shù)使用二進(jìn)制數(shù)使用0、1兩個(gè)數(shù),兩個(gè)數(shù),它的它的“基基”?各各位的位的“權(quán)又權(quán)又是是多少呢?多少呢? 由由0、1二個(gè)數(shù)碼構(gòu)成,基數(shù)為二個(gè)數(shù)碼構(gòu)成,基數(shù)為2,第,第i位的權(quán)為位的權(quán)為2i,運(yùn)算規(guī)則:逢二進(jìn)一、借一作二運(yùn)算規(guī)則:逢二進(jìn)一、借一作二
8、二進(jìn)制數(shù)二進(jìn)制數(shù)Binary )101011B=125+024+123+022+121+120=43D一個(gè)二進(jìn)制數(shù)按權(quán)展開求和就轉(zhuǎn)換成了對(duì)應(yīng)的十進(jìn)制數(shù)一個(gè)二進(jìn)制數(shù)按權(quán)展開求和就轉(zhuǎn)換成了對(duì)應(yīng)的十進(jìn)制數(shù)8 4 2 1牢記!牢記!1 0 1 1 B23 22 21 20例:一個(gè)二進(jìn)制數(shù)例:一個(gè)二進(jìn)制數(shù)各位的權(quán)各位的權(quán)基數(shù)說明符基數(shù)說明符 十六進(jìn)制數(shù)十六進(jìn)制數(shù)HexadecimalHexadecimal)14AFH=1163+4162+10161+15160=5295D 由由0、1、29、A、B、C、D、E、F十六個(gè)十六個(gè)數(shù)碼構(gòu)成。基數(shù)為數(shù)碼構(gòu)成。基數(shù)為16,第,第i位的權(quán)為位的權(quán)為16i運(yùn)算運(yùn)算 規(guī)
9、則:逢十六進(jìn)一、借一作十六規(guī)則:逢十六進(jìn)一、借一作十六十六進(jìn)制數(shù)是匯編語言的書寫工具十六進(jìn)制數(shù)是匯編語言的書寫工具 數(shù)制轉(zhuǎn)換數(shù)制轉(zhuǎn)換1)1. 非十進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)非十進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)按權(quán)展開求和按權(quán)展開求和2. 十進(jìn)制數(shù)轉(zhuǎn)換成非十進(jìn)制數(shù)十進(jìn)制數(shù)轉(zhuǎn)換成非十進(jìn)制數(shù)整數(shù)部分與整數(shù)部分與小數(shù)部分小數(shù)部分分別轉(zhuǎn)換分別轉(zhuǎn)換例例1:57D=111001B=39H57281222221407031110116 5716 3903除基數(shù)取余數(shù)除基數(shù)取余數(shù)高高低低2 數(shù)制轉(zhuǎn)換數(shù)制轉(zhuǎn)換2)例例2:十進(jìn)制數(shù)轉(zhuǎn)換成非十進(jìn)制數(shù)小數(shù)部分):十進(jìn)制數(shù)轉(zhuǎn)換成非十進(jìn)制數(shù)小數(shù)部分)0.625D=0.101B=0.AH0.6
10、25*2=1.251 0.25*2= 0.50 0.5*2= 110.625*16=10A乘基數(shù)取整數(shù)乘基數(shù)取整數(shù)57.625D=111001.101B=39.AH高高低低 數(shù)制轉(zhuǎn)換數(shù)制轉(zhuǎn)換3)3. 二、十六進(jìn)制數(shù)之間的轉(zhuǎn)換二、十六進(jìn)制數(shù)之間的轉(zhuǎn)換二進(jìn)制數(shù)二進(jìn)制數(shù) 十六進(jìn)制數(shù)十六進(jìn)制數(shù) 四位一組四位一組分組時(shí)如位數(shù)不夠,分組時(shí)如位數(shù)不夠,整數(shù)部分在最左邊整數(shù)部分在最左邊補(bǔ)零,小數(shù)部分在補(bǔ)零,小數(shù)部分在最右邊補(bǔ)零最右邊補(bǔ)零十六進(jìn)制十六進(jìn)制二進(jìn)制二進(jìn)制一位對(duì)應(yīng)換成二進(jìn)制數(shù)四位一位對(duì)應(yīng)換成二進(jìn)制數(shù)四位1100100.11011B= .010001101101 1000 =64. D8H46D8 編碼
11、編碼 ASC碼:碼: 美國信息交換標(biāo)準(zhǔn)碼,一般用美國信息交換標(biāo)準(zhǔn)碼,一般用7bit 二進(jìn)制編碼二進(jìn)制編碼 來表示數(shù)字來表示數(shù)字 、英文字母、符號(hào)等、英文字母、符號(hào)等例:例:0 的的ASCII是是 30H 9 的的ASCII是是 39Ha 的的ASCII是是 61HA的的ASCII是是 41HASCII值小于值小于20H的是不可顯示字符的是不可顯示字符BCD碼:碼:1位十進(jìn)制數(shù)用位十進(jìn)制數(shù)用4位二進(jìn)制編碼表示位二進(jìn)制編碼表示有符號(hào)數(shù)的表示法有符號(hào)數(shù)的表示法機(jī)器數(shù):機(jī)器數(shù): 連同一個(gè)符號(hào)位在一起作為一個(gè)數(shù)叫機(jī)器數(shù)連同一個(gè)符號(hào)位在一起作為一個(gè)數(shù)叫機(jī)器數(shù)連符號(hào)一起數(shù)連符號(hào)一起數(shù)字化了的數(shù)字化了的數(shù) 機(jī)
12、器數(shù)機(jī)器數(shù)正數(shù)的符號(hào)位用正數(shù)的符號(hào)位用0表示,負(fù)數(shù)符號(hào)位用表示,負(fù)數(shù)符號(hào)位用1表示表示原碼原碼最高有效位為符號(hào)位最高有效位為符號(hào)位例:設(shè)機(jī)器字長為例:設(shè)機(jī)器字長為8位,二進(jìn)制數(shù)位,二進(jìn)制數(shù)+10010和和-100001 其原碼為:其原碼為:00010010,10100001真值真值反碼:對(duì)于二進(jìn)制正數(shù),反碼等于該數(shù)原碼反碼:對(duì)于二進(jìn)制正數(shù),反碼等于該數(shù)原碼 對(duì)于二進(jìn)制負(fù)數(shù),符號(hào)位為對(duì)于二進(jìn)制負(fù)數(shù),符號(hào)位為1,其余各位取反,其余各位取反例:設(shè)機(jī)器字長為例:設(shè)機(jī)器字長為8位,二進(jìn)制數(shù)位,二進(jìn)制數(shù)+1100101和和-1010001 其反碼為:其反碼為:01100101,10101110真值真值有符
13、號(hào)數(shù)的表示法有符號(hào)數(shù)的表示法補(bǔ)碼:對(duì)于二進(jìn)制正數(shù),補(bǔ)碼等于該數(shù)原碼補(bǔ)碼:對(duì)于二進(jìn)制正數(shù),補(bǔ)碼等于該數(shù)原碼 對(duì)于二進(jìn)制負(fù)數(shù),符號(hào)位為對(duì)于二進(jìn)制負(fù)數(shù),符號(hào)位為1,其余各位取反,末位加,其余各位取反,末位加1例:設(shè)機(jī)器字長為例:設(shè)機(jī)器字長為8位,二進(jìn)制數(shù)位,二進(jìn)制數(shù)+1100101和和-1010001 其補(bǔ)碼為:其補(bǔ)碼為:01100101,10101111有符號(hào)數(shù)的表示法有符號(hào)數(shù)的表示法1.3 Intel 80X86微處理器型號(hào)型號(hào)808680888028680386發(fā)布發(fā)布年份年份1978197919821986字長字長(位位)16163216晶體管數(shù)晶體管數(shù)(萬個(gè))(萬個(gè))2.92.913.42
14、7.5 主頻主頻(MHz)4.774.7762012.533數(shù)據(jù)數(shù)據(jù)總線總線寬度寬度(位位)16161632外部外部總線總線寬度寬度(位位)地址地址總線總線寬度寬度(位位)尋址尋址空間空間高速高速緩存緩存1681632202024321M1M16M4G無無無無無無有有型號(hào)型號(hào)80486Pentium(586)發(fā)布發(fā)布年份年份1989199320192019字長字長(位位)32323232 晶體晶體 管數(shù)管數(shù)(萬個(gè)萬個(gè))120160310330550750 主頻主頻(MHz)2510060166150200233333數(shù)據(jù)數(shù)據(jù)總線總線寬度寬度(位位)32646464外部外部總線總線寬度寬度(位位
15、)地址地址總線總線寬度寬度(位位)尋址尋址空間空間高速高速緩存緩存32646464323236364G4G64G64G8KB8KB數(shù)數(shù)據(jù)據(jù)8KB指令指令PentiumPro(P6)Pentium II8KB數(shù)數(shù)據(jù)據(jù)8KB指令指令256KB二級(jí)高二級(jí)高速緩存速緩存32KB512KB二級(jí)高速二級(jí)高速緩存,有獨(dú)立封緩存,有獨(dú)立封裝和獨(dú)立總線裝和獨(dú)立總線1.4 微型計(jì)算機(jī)PC系統(tǒng)1981年,年,IBM公司,公司,8088CPU,IBM PC個(gè)人計(jì)算機(jī)個(gè)人計(jì)算機(jī)擴(kuò)展型擴(kuò)展型PC/XT,增強(qiáng)型,增強(qiáng)型IBM/AT80286)各種各種32位位PC采用采用32位位Intel 80 x86CPU現(xiàn)在人們談?wù)摰默F(xiàn)
16、在人們談?wù)摰腜C機(jī)是以機(jī)是以80 x86CPU構(gòu)成的微型計(jì)算機(jī)系統(tǒng)構(gòu)成的微型計(jì)算機(jī)系統(tǒng)復(fù)制復(fù)制ROM HMA64KB)系統(tǒng)系統(tǒng)ROM128KB系統(tǒng)系統(tǒng)RAM640KB顯示顯示RAM128KB擴(kuò)展擴(kuò)展ROM128KBFFFFFFFF00100000000E0000000C0000000A000000000000常規(guī)主存常規(guī)主存擴(kuò)展主存擴(kuò)展主存32位位PC主存主存(4GB) PC/XT 主存主存(1MB)系統(tǒng)系統(tǒng)RAM640KB顯示顯示RAM128KB擴(kuò)展擴(kuò)展ROM128KB系統(tǒng)系統(tǒng)ROM128KB實(shí)方式主存實(shí)方式主存 UMA(384KB)上位主存上位主存區(qū)區(qū)高端主高端主存區(qū)存區(qū)復(fù)制復(fù)制BIOS只
17、能在保護(hù)方只能在保護(hù)方式使用式使用PCPC軟件軟件匯編語言的運(yùn)行環(huán)境匯編語言的運(yùn)行環(huán)境DOS操作系統(tǒng)操作系統(tǒng)Windows 的的MS-DOS環(huán)境環(huán)境匯編語言程序設(shè)計(jì)主要利用的一些軟件:匯編語言程序設(shè)計(jì)主要利用的一些軟件:編輯軟件:編輯軟件:EDIT;記事本;記事本;Turbo C編輯器等編輯器等匯編程序:匯編程序:MASM 5.X; MASM 6.X; Turbo ASM 等等連接程序:連接程序:LINK.EXE調(diào)試程序:調(diào)試程序:DEBUG、 Turbo Debugger等等1.5 8086微處理器地址總線地址總線20位位控制總線控制總線數(shù)據(jù)總線數(shù)據(jù)總線16AHBHCHDHALBLCLDLS
18、PBPSIDICSDSSSESIP內(nèi)部暫存寄存器內(nèi)部暫存寄存器暫存寄存器暫存寄存器FREU控制系統(tǒng)1 2 3 4 5 6總線控制邏輯總線控制邏輯數(shù)據(jù)總線數(shù)據(jù)總線16ALU通用寄存器通用寄存器8088指令隊(duì)列指令隊(duì)列8088/8086外部總線外部總線數(shù)據(jù)總線數(shù)據(jù)總線地址總線地址總線20位位執(zhí)行部件執(zhí)行部件EU總線接口部件總線接口部件BIU16位位控制總線EU控制系統(tǒng)ALUEU控制系統(tǒng)控制系統(tǒng)ALU數(shù)據(jù)總線數(shù)據(jù)總線16地址總線地址總線20位位控制總線AXBXCXDXSPBPAHALBHBLCHCLDHDLAXBXCXDX15 0通用寄存器通用寄存器累加器累加器基地址寄存器基地址寄存器計(jì)數(shù)器計(jì)數(shù)器數(shù)
19、據(jù)寄存器數(shù)據(jù)寄存器8086/8088堆棧指針堆棧指針基址指針基址指針源變址源變址目的變址目的變址DISI 專用寄存器專用寄存器IP指令指針寄存器指令指針寄存器標(biāo)志寄存器標(biāo)志寄存器用來存放代碼段的偏移地址,用來存放代碼段的偏移地址,總是指向下一條指令的首地址總是指向下一條指令的首地址FLAGS15 0OF DFIFTF SF ZFAFPFCF15 11 10 9 8 7 6 5 4 3 2 1 0進(jìn)位標(biāo)志進(jìn)位標(biāo)志奇偶標(biāo)志奇偶標(biāo)志半進(jìn)位標(biāo)志半進(jìn)位標(biāo)志零標(biāo)志零標(biāo)志符號(hào)標(biāo)志符號(hào)標(biāo)志中斷標(biāo)志中斷標(biāo)志單步標(biāo)志單步標(biāo)志溢出標(biāo)志溢出標(biāo)志方向標(biāo)志方向標(biāo)志 存儲(chǔ)器組織與段寄存器存儲(chǔ)器組織與段寄存器1 0字節(jié)字節(jié)7
20、 6 5 4 3 2 1 00003H0002H0001H0000H12H40H35H18H(0002H)=40H(0000H)=18H 字:字:2個(gè)字節(jié)組成一個(gè)字個(gè)字節(jié)組成一個(gè)字16位)位)0003H0002H0001H0000H字字字字12H40H35H18H留意:留意:機(jī)器內(nèi)部訪問存儲(chǔ)器字單元機(jī)器內(nèi)部訪問存儲(chǔ)器字單元時(shí)是以偶地址開始的,假設(shè)時(shí)是以偶地址開始的,假設(shè)以奇地址訪問字單元,需求以奇地址訪問字單元,需求訪問兩次存儲(chǔ)器訪問兩次存儲(chǔ)器12H15H14H13H雙字:雙字:4個(gè)字節(jié)組成雙字個(gè)字節(jié)組成雙字32位)位)雙字雙字地址為地址為0002H字單元的內(nèi)容為:字單元的內(nèi)容為:(0002H
21、)=1240H例:地址為例:地址為0002H的單元內(nèi)容為的單元內(nèi)容為 (0002H)=40H同一個(gè)地址既可看作字節(jié)單元的地址,又可看作同一個(gè)地址既可看作字節(jié)單元的地址,又可看作字單元、雙字單元或字單元、雙字單元或4字單元的地址字單元的地址8086CPU有有20條地址線條地址線 尋址能力尋址能力地址范圍地址范圍220=1M字節(jié)字節(jié) 指令指針寄存器指令指針寄存器IP16位位和地址有關(guān)的寄存和地址有關(guān)的寄存器器SP、BP、SI、DI16位位算術(shù)邏輯單元算術(shù)邏輯單元ALU16位位分段分段 每一段可以從每一段可以從1M空間的任空間的任一個(gè)能被一個(gè)能被16除盡的地址開始。除盡的地址開始。段內(nèi)地址是段內(nèi)地址
22、是16位的位的00000FFFFFH00003H00002H00001H00000H 物理地址的形成物理地址的形成四個(gè)專門存放段地址的寄存器四個(gè)專門存放段地址的寄存器 CS:代碼段寄存器:代碼段寄存器 DS:數(shù)據(jù)段寄存器:數(shù)據(jù)段寄存器 SS:堆棧段寄存器:堆棧段寄存器 ES:附加段寄存器:附加段寄存器每一個(gè)段寄存器可以確定每一個(gè)段寄存器可以確定一個(gè)段的起始地址一個(gè)段的起始地址16位段地址位段地址16位偏移地址位偏移地址15 015 020位物理地址位物理地址+19 00 0 0 0存放當(dāng)前正在運(yùn)行程序的段首地址存放當(dāng)前正在運(yùn)行程序的段首地址存放當(dāng)前程序所用數(shù)據(jù)的段首地址存放當(dāng)前程序所用數(shù)據(jù)的段
23、首地址存放堆棧區(qū)域的段首地址存放堆棧區(qū)域的段首地址輔助數(shù)據(jù)區(qū)域的段首地址輔助數(shù)據(jù)區(qū)域的段首地址物理地址物理地址=段地址段地址16+偏移地址偏移地址 地址加法器地址加法器19 0物理地址物理地址段寄存器段寄存器 偏移地址偏移地址15 015 00000段地址段地址例:例: (CS)=4232H,(,(IP)=66H, 物理地址的形成物理地址的形成00001H00000H42320H42386H(物理地址)(物理地址)偏移量偏移量66H下一條指令下一條指令CSIP1.6 80861.6 8086的尋址方式的尋址方式尋址方式:尋找操作數(shù)的方式尋址方式:尋找操作數(shù)的方式指令系統(tǒng):編制計(jì)算機(jī)程序的指令集
24、合指令系統(tǒng):編制計(jì)算機(jī)程序的指令集合指令指令操作碼操作碼操作數(shù)操作數(shù)程序:就是根據(jù)需要用指令編排出的操作順序程序:就是根據(jù)需要用指令編排出的操作順序機(jī)器指令機(jī)器指令 8B D9 8A 04 BF 00 20MOV BX,CXMOV AL,SIMOV DI,2000H匯編語言指令格式匯編語言指令格式標(biāo)號(hào):標(biāo)號(hào):指令助記符指令助記符操作數(shù)操作數(shù);注釋;注釋, az、AZ、09或某些特殊符號(hào)(,或某些特殊符號(hào)(,-,?),?) 第一個(gè)字符必須是字母或某些特殊符號(hào)(,第一個(gè)字符必須是字母或某些特殊符號(hào)(,-,?),?) ?不能單獨(dú)使用?不能單獨(dú)使用 標(biāo)識(shí)符有效長度為標(biāo)識(shí)符有效長度為31個(gè)字符個(gè)字符標(biāo)識(shí)
25、符:標(biāo)識(shí)符:例:例: MOV AL,80H1. 立即數(shù)尋址立即數(shù)尋址操作數(shù)就包含在指令當(dāng)中操作數(shù)就包含在指令當(dāng)中MOV AL,80H ;將;將80H送入送入ALMOV AX,1090H ;將;將1090H送入送入AXMOV EAX,12345678H源操作數(shù)源操作數(shù)目的操作數(shù)目的操作數(shù)例:例: 立即數(shù)可以是立即數(shù)可以是8位、位、16位位 、32位位386以后數(shù)值以后數(shù)值 立即數(shù)通常用來給寄存器賦值立即數(shù)通常用來給寄存器賦值 2. 2. 寄存器尋址寄存器尋址操作數(shù)在操作數(shù)在8位、位、16位或位或32位寄存器中位寄存器中INC CX ;將;將CX的內(nèi)容加的內(nèi)容加1ROL AH,1 ;將;將AH中的
26、內(nèi)容循環(huán)左移一位中的內(nèi)容循環(huán)左移一位MOV AX,BXMOV AX,1090H寄存器可以是寄存器可以是AX、BX、CX、DX、SI、DI、SP、BP AH、AL、BH、BL、CH、CL、DH、DL 在一條指令中,可以對(duì)源操作數(shù)采用寄存器尋址,也可以對(duì)目在一條指令中,可以對(duì)源操作數(shù)采用寄存器尋址,也可以對(duì)目標(biāo)操作數(shù)采用寄存器尋址,還可以兩者都采用寄存器尋址方式標(biāo)操作數(shù)采用寄存器尋址,還可以兩者都采用寄存器尋址方式例:例:3. 3. 存儲(chǔ)器尋址存儲(chǔ)器尋址 操作數(shù)在存儲(chǔ)器中,其有效地址操作數(shù)在存儲(chǔ)器中,其有效地址EA包含在指令中的尋址方式包含在指令中的尋址方式留意:立即數(shù)尋址和直接尋址的書寫格式,留
27、意:立即數(shù)尋址和直接尋址的書寫格式,直接尋址的地址要放在方括號(hào)中直接尋址的地址要放在方括號(hào)中ES:例:例:MOV AX,1070H ;DS段的段的1070H和和1071H 兩單元的內(nèi)容傳送到兩單元的內(nèi)容傳送到AX中中(1直接尋址直接尋址物物理理地地址址存儲(chǔ)器存儲(chǔ)器代代碼碼段段數(shù)數(shù)據(jù)據(jù)段段50000H51070HOP 70108967.00000H51071H假設(shè)假設(shè)DS=5000H,地址,地址為為51070H字存儲(chǔ)單元字存儲(chǔ)單元的內(nèi)容是的內(nèi)容是6789H。執(zhí)行執(zhí)行 MOV AX, 1070H6789AXAH ALDS1650000H1070H+51070H內(nèi)部地址加內(nèi)部地址加法器完成法器完成有
28、效地址偏移地址)有效地址偏移地址)例:例: MOV AX, VALUE 或或 MOV AX,VALUE符號(hào)地址符號(hào)地址MOV 1000H,AL例:例: 操作數(shù)在存儲(chǔ)器中,操作數(shù)的有效地址是操作數(shù)在存儲(chǔ)器中,操作數(shù)的有效地址是寄存器的內(nèi)容。寄存器的內(nèi)容。BX、BPSI、DI 之一之一注:如果沒有特殊說明,用寄存器注:如果沒有特殊說明,用寄存器BP尋址時(shí),尋址時(shí),段寄存器是段寄存器是SS,其余為數(shù)據(jù)段寄存器,其余為數(shù)據(jù)段寄存器DS 。 DS1650000H1234H+51234H內(nèi)部地址加內(nèi)部地址加法器完成法器完成例例1:假設(shè):假設(shè)DS)=5000H,(,(SI)=1234H, 51234H字單元
29、的內(nèi)容是字單元的內(nèi)容是6789H 執(zhí)行指令執(zhí)行指令MOV AX,SI偏移地址,偏移地址,SI的內(nèi)容的內(nèi)容物理地址物理地址(AX)=6789H存儲(chǔ)器存儲(chǔ)器數(shù)數(shù)據(jù)據(jù)段段50000H51234H8967.00000H51235H例例2:假設(shè):假設(shè)SS)=4000H,(,(BP)=1234H, (CX)=6789H執(zhí)行該條指令執(zhí)行該條指令MOV BP,CXSS1640000H1234H+41234H內(nèi)部地址加內(nèi)部地址加法器完成法器完成存儲(chǔ)器存儲(chǔ)器堆堆棧棧段段40000H41234H.00000H41235H偏移地址,偏移地址,BP的內(nèi)容的內(nèi)容物理地址物理地址8967(CX)=6789H帶位移量的寄存器
30、間接尋址帶位移量的寄存器間接尋址有效地址有效地址=BXBPSI DI+8位位移量位位移量16位位移量位位移量執(zhí)行該指令后,(執(zhí)行該指令后,(AX)=55AAH例:例: 假設(shè)假設(shè)DS)=5000H,(,(DI)=3678H 548ACH字存儲(chǔ)單元的內(nèi)容是字存儲(chǔ)單元的內(nèi)容是55AAH50000H 3678H 1234H548ACH+帶位移量的寄存器間接尋帶位移量的寄存器間接尋址址寄存器相對(duì)尋址寄存器相對(duì)尋址MOV AX,1234H DI 執(zhí)行執(zhí)行 MOV AX, DI+1234H 寄存器間接尋寄存器間接尋址的物理地址址的物理地址單元是單元是548ACH(4 4) 基址變址尋址基址變址尋址 操作數(shù)的
31、有效地址是一個(gè)基址寄存器的內(nèi)容加上操作數(shù)的有效地址是一個(gè)基址寄存器的內(nèi)容加上一個(gè)變址寄存器的內(nèi)容一個(gè)變址寄存器的內(nèi)容有效地址有效地址EA=+BXBPSIDI語句執(zhí)行后語句執(zhí)行后17000H和和17001H)AX例:例: MOV AX,BX+SI假設(shè)假設(shè)DS)=1000H,(,(BX)=5000H,(,(SI)=2000H那么:有效地址為:(那么:有效地址為:(BX)+(SI)= 7000H 物理地址為:物理地址為:10000H+7000H=17000HMOV AX, BX SI (5 5) 相對(duì)基址變址尋址相對(duì)基址變址尋址有效地址有效地址EA=+帶位移量的基址變址尋址帶位移量的基址變址尋址+B
32、XBPSIDI8位位移量位位移量16位位移量位位移量語句執(zhí)行后語句執(zhí)行后17002H和和17003H)AX例:例: MOV AX,BX+SI+2假設(shè)假設(shè)DS)=1000H,(,(BX)=5000H,(,(SI)=2000H那么:有效地址為:(那么:有效地址為:(BX)+(SI)+2 =7002H 物理地址為:物理地址為:10000H+7002H=17002HMOV AX,2BXSI綜合練習(xí)綜合練習(xí)假設(shè):假設(shè):BX=0158H,DI=10A5H,位移量,位移量=1B57H,DS=2100H 指令沒有使用前綴。指令沒有使用前綴。 直接尋址:有效地址直接尋址:有效地址= 物理地址物理地址=1B57H
33、21000H+1B57H=22B57H 寄存器間接尋址寄存器為寄存器間接尋址寄存器為BX):): 有效地址有效地址= 物理地址物理地址=0158H21000H+0158H=21158H BX寄存器相對(duì)間接尋址:寄存器相對(duì)間接尋址: 有效地址有效地址= 物理地址物理地址=0158H+1B57H=1CAFH21000H+1CAFH=22CAFH綜合練習(xí)綜合練習(xí)假設(shè):假設(shè):BX=0158H,DI=10A5H,位移量,位移量=1B57H, DS=2100H 指令沒有使用前綴。指令沒有使用前綴。 變址尋址寄存器為變址尋址寄存器為DI) :10A5H21000H+10A5H=220A5H10A5H+1B5
34、7H=2BFCH21000H+2BFCH=23BFCH有效地址有效地址= 物理地址物理地址= DI寄存器相對(duì)變址尋址:寄存器相對(duì)變址尋址:有效地址有效地址= 物理地址物理地址=綜合練習(xí)綜合練習(xí) 基址變址尋址基址變址尋址BX為基址寄存器,為基址寄存器,DI為變址寄存器)為變址寄存器) 有效地址有效地址= 物理地址物理地址=0158H+10A5H=11FDH21000H+11FDH=221FDH 相對(duì)的基址變址尋址相對(duì)的基址變址尋址BX為基址寄存器,為基址寄存器,DI為變址寄存器)為變址寄存器) 有效地址有效地址= 物理地址物理地址=0158H+10A5H+1B57H=2D54H21000H+2D
35、54H=23D54H假設(shè):假設(shè):BX=0158H,DI=10A5H,位移量,位移量=1B57H, DS=2100H 指令沒有使用前綴。指令沒有使用前綴。尋址方式總結(jié)尋址方式總結(jié)操作數(shù)尋址操作數(shù)尋址立即數(shù)尋址立即數(shù)尋址寄存器尋址寄存器尋址存儲(chǔ)器尋址存儲(chǔ)器尋址直接尋址直接尋址寄存器間接尋址寄存器間接尋址寄存器相對(duì)尋址寄存器相對(duì)尋址基址變址尋址基址變址尋址相對(duì)基址變址尋址相對(duì)基址變址尋址數(shù)據(jù)段基址尋址數(shù)據(jù)段基址尋址堆棧段基址尋址堆棧段基址尋址變址尋址變址尋址作業(yè):作業(yè):1.11 1.15 1.17 1.19 1.20 1.22 1.24第2章 8086的指令系統(tǒng)2.1 數(shù)據(jù)傳送類指令2.2 算術(shù)運(yùn)算
36、類指令2.3 位操作類指令2.4 控制轉(zhuǎn)移類指令2.5 串操作類指令2.6 處理機(jī)控制類指令2.1 2.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令指令系統(tǒng)指令系統(tǒng)數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令算術(shù)指令算術(shù)指令邏輯指令邏輯指令串處理指令串處理指令控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令處理機(jī)控制指令處理機(jī)控制指令通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令堆棧操作指令堆棧操作指令標(biāo)志傳送指令標(biāo)志傳送指令地址傳送指令地址傳送指令輸入輸出指令輸入輸出指令8位或位或16位通用寄存器位通用寄存器AX、BX、CX、DXBP、SP、SI、DI段寄存器段寄存器CS、 DS、ES、SS存儲(chǔ)器存儲(chǔ)器立即數(shù)立即數(shù)MOV指令數(shù)據(jù)傳送方向示意圖指令數(shù)據(jù)傳送方向示
37、意圖CS不能做目不能做目的操作數(shù)的操作數(shù)1. 傳送指令傳送指令格式:格式: MOV DST,SRC目的目的源源功能:把一個(gè)字節(jié)或一個(gè)字從源操作數(shù)功能:把一個(gè)字節(jié)或一個(gè)字從源操作數(shù)SCR送至送至 目的操作數(shù)目的操作數(shù)DST,源操作數(shù)不改變。,源操作數(shù)不改變。留意:源和目的操作數(shù)的類型要一致,即同時(shí)為字節(jié)或同時(shí)為字留意:源和目的操作數(shù)的類型要一致,即同時(shí)為字節(jié)或同時(shí)為字段寄存器段寄存器CS、 DS、ES、SS立即數(shù)立即數(shù)存儲(chǔ)器存儲(chǔ)器8位獲位獲16位通用寄存器位通用寄存器AX、BX、CX、DXBP、SP、SI、DIIPMOV指令不影指令不影響標(biāo)志位響標(biāo)志位2.1 .1 2.1 .1 通用數(shù)據(jù)傳送指令
38、通用數(shù)據(jù)傳送指令例:例:MOV AX,1000HMOV AL,EMOV AX,2BPSI;立即數(shù)送到;立即數(shù)送到AX;立即數(shù)送到;立即數(shù)送到AL,E的的ASCII碼碼;存儲(chǔ)單元的內(nèi)容送到;存儲(chǔ)單元的內(nèi)容送到AX16(SS)+(BP)+(SI)+2如果如果BP換成換成BX?判斷對(duì)錯(cuò)判斷對(duì)錯(cuò)MOV 5,ALMOV BX,SIMOV DS,1000HMOV CS,AXMOV AX,DXMOV SI,SIMOV SI,AX判斷對(duì)錯(cuò)判斷對(duì)錯(cuò)MOV BX,ALMOV AX,DI+SIMOV DS,ESMOV AL,AHMOV DS,AXMOV SI,DIMOV 2SI,AX2. 交換指令交換指令XCHG格
39、式:格式:XCHG OPRD1,OPRD2功能:操作數(shù)功能:操作數(shù)OPRD1的內(nèi)容與操作數(shù)的內(nèi)容與操作數(shù)OPRD2的的 內(nèi)容交換內(nèi)容交換OPRD1OPRD1和和OPRD2OPRD2可以是通用寄存器和存儲(chǔ)單元可以是通用寄存器和存儲(chǔ)單元(兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)單元可以采用(兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)單元可以采用各種存儲(chǔ)器尋址方式各種存儲(chǔ)器尋址方式留意:不允許使用段寄存器、立即數(shù)留意:不允許使用段寄存器、立即數(shù)例:例:XCHG AL,AH XCHG SI,BX XCHG SI+3,AL XCHG DX,DI+BX+3格式:格式:XLAT功能:完成一個(gè)字節(jié)的查表轉(zhuǎn)換。功能:完成一個(gè)字節(jié)的查表轉(zhuǎn)換。 把
40、累加器把累加器AL中的值,轉(zhuǎn)換成以中的值,轉(zhuǎn)換成以BX 為表基址的表中值為表基址的表中值+BX AL3. 換碼指令換碼指令XLAT留意:表的長度不能超過留意:表的長度不能超過256個(gè)字節(jié)個(gè)字節(jié)BXBX+ALAL=XX換碼指令的功能換碼指令的功能TABLE.XX例:用查表法查求例:用查表法查求 3 的平方,假設(shè)數(shù)據(jù)表已的平方,假設(shè)數(shù)據(jù)表已經(jīng)存放在經(jīng)存放在2000H開始的內(nèi)存中。開始的內(nèi)存中。MOV BX,2000HMOV AL,3XLAT執(zhí)行后執(zhí)行后AL=2000H2009H51H40H31H24H19H10H09H04H01H00H.MOV BX,2000HBXXLATBX+AL09H主程序主
41、程序子程序子程序1子程序子程序2CS:IPCS:IP堆棧堆棧2.1 .2 2.1 .2 堆棧操作指令堆棧操作指令00000H50000H52000H堆棧段堆棧段SP假設(shè):假設(shè):SS=5000H,SP=2000H格式:格式: PUSH SRC功能:把源操作數(shù)功能:把源操作數(shù)SRC 的的16位數(shù)據(jù)壓入位數(shù)據(jù)壓入 堆棧堆棧例:例:AX=8A9BH執(zhí)行執(zhí)行 PUSH AX SP自動(dòng)減自動(dòng)減2 將源操作數(shù)的內(nèi)容傳送到將源操作數(shù)的內(nèi)容傳送到 SP指向的單元指向的單元8A9B1. 1. 進(jìn)棧指令進(jìn)棧指令PUSH PUSH 00000H50000H52000H堆棧段堆棧段SP假設(shè):假設(shè):SS=5000H,SP
42、=1FFEH2. 2. 出棧指令出棧指令POPPOP格式:格式: POP DST功能:從堆棧中彈出功能:從堆棧中彈出16位數(shù)據(jù)到目的操作數(shù)位數(shù)據(jù)到目的操作數(shù)DST , SP自動(dòng)加自動(dòng)加2例:例:執(zhí)行執(zhí)行 POP BX將將SP指向單元的內(nèi)容傳送到指向單元的內(nèi)容傳送到 目的操作數(shù)目的操作數(shù)SP自動(dòng)加自動(dòng)加28A9B9B8A執(zhí)行后執(zhí)行后 BX=H可以是通用寄存器、段寄存器可以是通用寄存器、段寄存器CS除外和字存儲(chǔ)單元除外和字存儲(chǔ)單元PUSH reg POP regPUSH mem POP memPUSH segreg POP segregPUSH data除除CS的所有的所有段寄存器段寄存器8086
43、以后以后1. 標(biāo)志寄存器傳送標(biāo)志寄存器傳送(1) 標(biāo)志送標(biāo)志送AH指令指令LAHF格式:格式: LAHF功能:標(biāo)志寄存器的低功能:標(biāo)志寄存器的低8位對(duì)應(yīng)的傳送到寄存器位對(duì)應(yīng)的傳送到寄存器AHFLAG OFDF IF TFSFZF AF PF CFAH150702.1 .3 2.1 .3 標(biāo)志傳送指令標(biāo)志傳送指令格式:格式:SAHF功能:寄存器功能:寄存器AH的內(nèi)容對(duì)應(yīng)的送至標(biāo)志寄存的內(nèi)容對(duì)應(yīng)的送至標(biāo)志寄存 器的低器的低8位位(2) AH送標(biāo)志指令送標(biāo)志指令SAHFFLAG OFDF IF TFSFZF AF PF CFxxxxxxxAHx70(3) 標(biāo)志進(jìn)棧指令標(biāo)志進(jìn)棧指令PUSHF格式:格式
44、:PUSHF功能:功能: SP-2 ,把標(biāo)志寄存器的內(nèi)容,把標(biāo)志寄存器的內(nèi)容16位壓入堆棧位壓入堆棧(4) 標(biāo)志出棧指令標(biāo)志出棧指令POPF格式:格式: POPF功能:把當(dāng)前棧頂?shù)囊粋€(gè)字傳送到標(biāo)志寄存器,功能:把當(dāng)前棧頂?shù)囊粋€(gè)字傳送到標(biāo)志寄存器,SP+2指令格式指令格式功能功能說明說明CLCSTCCMCCLDSTDCLISTI清除進(jìn)位標(biāo)志清除進(jìn)位標(biāo)志置進(jìn)位標(biāo)志置進(jìn)位標(biāo)志取反進(jìn)位標(biāo)志取反進(jìn)位標(biāo)志清除方向標(biāo)志清除方向標(biāo)志置方向標(biāo)志置方向標(biāo)志清除中斷標(biāo)志清除中斷標(biāo)志置中斷標(biāo)志置中斷標(biāo)志CF=0CF=1CF=CFDF=0DF=1IF=0IF=12. 標(biāo)志位操作標(biāo)志位操作1. 有效地址送指令有效地址送指
45、令LEA格式:格式:LEA REG,SRC16位通用寄存器位通用寄存器功能:把源操作數(shù)的有效地址傳送到目的操功能:把源操作數(shù)的有效地址傳送到目的操 作數(shù)作數(shù)REG寄存器中寄存器中例:例:LEA AX,2728H ;將;將2728單元的有效地址送單元的有效地址送AX, 執(zhí)行后,執(zhí)行后,AX=2728H LEA BX,BP+SI ;指令執(zhí)行后,;指令執(zhí)行后,BX的內(nèi)容為的內(nèi)容為 BP+SI的值的值留意:留意:LEA 和和 MOV 的區(qū)別的區(qū)別2.1 .4 2.1 .4 地址傳送指令地址傳送指令格式:格式: LDS REG,SRC功能:源操作數(shù)功能:源操作數(shù) SRC所指向的存儲(chǔ)單元的內(nèi)容所指向的存儲(chǔ)
46、單元的內(nèi)容 送到目的寄存器送到目的寄存器REG中接下來存儲(chǔ)單元中接下來存儲(chǔ)單元 的內(nèi)容送到數(shù)據(jù)段寄存器的內(nèi)容送到數(shù)據(jù)段寄存器DS。2. 2. 指針?biāo)椭噶钪羔標(biāo)椭噶頛DS、LES例:例:LDS DI ,2130H2130H2133H 56347812 執(zhí)行后執(zhí)行后 DS= DI=LES對(duì)應(yīng)的段寄存為對(duì)應(yīng)的段寄存為ES存儲(chǔ)器存儲(chǔ)器78563412HH 輸入指令輸入指令I(lǐng)NIN格式:格式:IN 累加器,端口地址累加器,端口地址功能:從一個(gè)端口讀取一個(gè)字節(jié)或一個(gè)字,傳功能:從一個(gè)端口讀取一個(gè)字節(jié)或一個(gè)字,傳 送到送到AL或或AX端口地址可以直接給出端口地址可以直接給出或由或由DX寄存器間接給出寄存器間
47、接給出留意:外部設(shè)備最多可有留意:外部設(shè)備最多可有65536個(gè)個(gè)I/O端口端口(0000FFFFH),), 只有前只有前256個(gè)端口地址可個(gè)端口地址可在指令中直接給出在指令中直接給出00FFH)2.1 .5 2.1 .5 輸入輸出指令輸入輸出指令例:例: IN AL,50H ;從;從50H端口讀入端口讀入8位數(shù)據(jù)到位數(shù)據(jù)到ALIN AX,70H ;從;從70H端口讀入端口讀入16位數(shù)據(jù)到位數(shù)據(jù)到AX直接尋址或長格式直接尋址或長格式間接尋址或短格式間接尋址或短格式IN AL,DX ;從;從DX所指的端口中讀取一個(gè)字節(jié)所指的端口中讀取一個(gè)字節(jié)IN AX,DX ;從;從DX所指的端口讀取一個(gè)字所指的
48、端口讀取一個(gè)字2. 2. 輸出指令輸出指令OUTOUT格式:格式: OUT 端口地址,累加器端口地址,累加器功能:將功能:將AL中的一個(gè)字節(jié)或中的一個(gè)字節(jié)或AX中的一個(gè)字輸出中的一個(gè)字輸出 到指定端口到指定端口例:例: OUT 5,AL ;將;將AL寄存器的內(nèi)容輸出到端口寄存器的內(nèi)容輸出到端口5 OUT DX,AL ;將;將AL的內(nèi)容輸出到的內(nèi)容輸出到DX所指向的端口所指向的端口OUT DX,AX ;將;將AX的內(nèi)容輸出到的內(nèi)容輸出到DX所指向的端口所指向的端口判斷對(duì)錯(cuò):判斷對(duì)錯(cuò):OUT 258,ALOUT DX,BLIN AL,1234HIN AL,BHOUT 120,ALOUT DX,AL
49、IN AL,80HIN AL,DX 判斷對(duì)錯(cuò):判斷對(duì)錯(cuò):PUSH ALPOP CSXCHG DS,BXXCHG BX,SIPOP BHXCHG AX,1234H2.2 算數(shù)運(yùn)算類指令1. 加法指令加法指令A(yù)DD格式:格式: ADD DST,SRC功能:兩個(gè)操作數(shù)相加,結(jié)果送至目的操作數(shù)功能:兩個(gè)操作數(shù)相加,結(jié)果送至目的操作數(shù) DST,源操作數(shù)不變?cè)床僮鲾?shù)不變操作數(shù)可以是字節(jié)、字操作數(shù)可以是字節(jié)、字例:例:ADD AL,50H ;AL的內(nèi)容和的內(nèi)容和50H相加,結(jié)果相加,結(jié)果AL中中;CX的內(nèi)容和的內(nèi)容和1000H相加,結(jié)果放相加,結(jié)果放 在在CX中中ADD CX,1000H;DI和和SI的內(nèi)容
50、相加,結(jié)果放在的內(nèi)容相加,結(jié)果放在DI中中ADD DI,SI;BX+DI 連續(xù)兩個(gè)存儲(chǔ)單元的內(nèi)容連續(xù)兩個(gè)存儲(chǔ)單元的內(nèi)容 和和AX內(nèi)容相加,結(jié)果放在內(nèi)容相加,結(jié)果放在BX+DI 和和BX+DI+1所指的存儲(chǔ)單元中所指的存儲(chǔ)單元中ADD BX+DI,AX ADD AX,BX+2000H;BX+2000H所指的兩個(gè)單元的所指的兩個(gè)單元的內(nèi)內(nèi) 容和容和AX的內(nèi)容相加,結(jié)果在的內(nèi)容相加,結(jié)果在AX 中中 加法指令對(duì)標(biāo)志位的影響加法指令對(duì)標(biāo)志位的影響 ZF 零標(biāo)志零標(biāo)志 結(jié)果為零結(jié)果為零ZF=1,否則,否則ZF=0 SF 符號(hào)標(biāo)志符號(hào)標(biāo)志 結(jié)果為負(fù)結(jié)果為負(fù)SF=1,否則,否則SF=0 CF 進(jìn)位標(biāo)志進(jìn)位標(biāo)
51、志 結(jié)果最高有效位有進(jìn)位結(jié)果最高有效位有進(jìn)位 CF=1,否則,否則CF=0 AF 半進(jìn)位標(biāo)志半進(jìn)位標(biāo)志 低低4位向高位向高4位有進(jìn)位位有進(jìn)位AF=1,否則否則AF=0 PF 奇偶標(biāo)志奇偶標(biāo)志 低低8位位1的個(gè)數(shù)為偶數(shù)的個(gè)數(shù)為偶數(shù)PF=1,否,否則則PF=0對(duì)對(duì)OF SF ZF AF PF CF 六個(gè)標(biāo)志產(chǎn)生影響六個(gè)標(biāo)志產(chǎn)生影響 1 0 0 1 1 1 0 0+ 1 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0CF=SF=AF=例:例:9CH+8AH=26H101ZF=0PF=0 溢出標(biāo)志溢出標(biāo)志OF溢出:超出數(shù)據(jù)位能表示的范圍溢出:超出數(shù)據(jù)位能表示的范圍8位二進(jìn)制數(shù)位二進(jìn)制數(shù) 0
52、2550 28) -128+127(-27+27-1)16位二進(jìn)制數(shù)位二進(jìn)制數(shù) 065535( 0 216) -32768+32767(-215215-1) 若兩個(gè)操作數(shù)的符號(hào)相同,而結(jié)果的若兩個(gè)操作數(shù)的符號(hào)相同,而結(jié)果的符號(hào)與之相反時(shí),符號(hào)與之相反時(shí),OF=1,否則,否則OF=0OF標(biāo)志是根據(jù)操作數(shù)的符標(biāo)志是根據(jù)操作數(shù)的符號(hào)變化來設(shè)置的號(hào)變化來設(shè)置的例:例: 1 0 0 1 1 1 0 0 + 1 0 0 0 0 1 1 0 如果兩個(gè)同符號(hào)數(shù)相加,結(jié)果符號(hào)位發(fā)生了如果兩個(gè)同符號(hào)數(shù)相加,結(jié)果符號(hào)位發(fā)生了變化,則表示溢出變化,則表示溢出0 0 1 0 0 0 1 0OF=1符號(hào)位變化了,表示結(jié)符
53、號(hào)位變化了,表示結(jié)果超出了果超出了8位二進(jìn)制數(shù)表位二進(jìn)制數(shù)表示的數(shù)據(jù)范圍示的數(shù)據(jù)范圍 0 0 0 0 1 0 0 1+ 0 1 1 1 1 1 0 01 0 0 0 0 1 0 1OF=1符號(hào)位變符號(hào)位變化了化了例例2: 0 0 0 0 1 0 0 1- 1 1 1 1 1 1 0 0例例3:0 0 0 0 1 1 0 1符號(hào)位沒符號(hào)位沒變變OF=0 1 0 0 0 1 0 0 1- 1 1 1 1 1 1 0 0OF=?2. 2. 帶進(jìn)位加法指令帶進(jìn)位加法指令A(yù)DCADC格式:格式: ADC DST,SRC功能:兩個(gè)操作數(shù)相加再加上進(jìn)位標(biāo)志功能:兩個(gè)操作數(shù)相加再加上進(jìn)位標(biāo)志CF,結(jié)果,結(jié)果
54、送至目的操作數(shù)送至目的操作數(shù)DST,源操作數(shù)不變?cè)床僮鲾?shù)不變操作數(shù)可以是字節(jié)、字操作數(shù)可以是字節(jié)、字AX=MOV SI,2000H MOV AX,SI MOV DI,3000H ADD AX,DI MOV SI ,AX MOV AX, SI+2 ADC AX, DI+2 MOV SI+2 ,AX 例:編寫兩個(gè)四字節(jié)的無符號(hào)數(shù)相加的程序段,兩個(gè)數(shù)分別例:編寫兩個(gè)四字節(jié)的無符號(hào)數(shù)相加的程序段,兩個(gè)數(shù)分別 放在放在2000H、3000H開始的單元,要求結(jié)果放在開始的單元,要求結(jié)果放在2000H開始的單元開始的單元 563412F0DEBC9A782000H3000HSIMOV AX,SIHDIADD
55、 AX,DIMOV DI,3000HMOV SI,2000H56783568HCF=1AX=MOV SI,2000H MOV AX,SI MOV DI,3000H ADD AX,DI MOV SI ,AX MOV AX, SI+2 ADC AX, DI+2 MOV SI+2 ,AX 例:編寫兩個(gè)四字節(jié)的無符號(hào)數(shù)相加的程序段,兩個(gè)數(shù)分別例:編寫兩個(gè)四字節(jié)的無符號(hào)數(shù)相加的程序段,兩個(gè)數(shù)分別 放在放在2000H、3000H開始的單元,要求結(jié)果放在開始的單元,要求結(jié)果放在2000H開始的單元開始的單元 563412F0DEBC9A782000H3000HSIMOV AX,SIDIADD AX,DIMO
56、V DI,3000HMOV SI,2000HMOV SI ,AX56783568HCF=13568AX=MOV SI,2000H MOV AX,SI MOV DI,3000H ADD AX,DI MOV SI ,AX MOV AX, SI+2 ADC AX, DI+2 MOV SI+2 ,AX 例:編寫兩個(gè)四字節(jié)的無符號(hào)數(shù)相加的程序段,兩個(gè)數(shù)分別例:編寫兩個(gè)四字節(jié)的無符號(hào)數(shù)相加的程序段,兩個(gè)數(shù)分別 放在放在2000H、3000H開始的單元,要求結(jié)果放在開始的單元,要求結(jié)果放在2000H開始的單元開始的單元 563412F0DEBC9A782000H3000HSIMOV AX,SI1234HDI
57、ADD AX,DIMOV DI,3000HMOV SI,2000HMOV SI ,AXMOV AX, SI+2 3568ADC AX, DI+2 CF=1ACF1H7856AX=MOV SI,2000H MOV AX,SI MOV DI,3000H ADD AX,DI MOV SI ,AX MOV AX, SI+2 ADC AX, DI+2 MOV SI+2 ,AX 例:編寫兩個(gè)四字節(jié)的無符號(hào)數(shù)相加的程序段,兩個(gè)數(shù)分別例:編寫兩個(gè)四字節(jié)的無符號(hào)數(shù)相加的程序段,兩個(gè)數(shù)分別 放在放在2000H、3000H開始的單元,要求結(jié)果放在開始的單元,要求結(jié)果放在2000H開始的單元開始的單元 563412F
58、0DEBC9A782000H3000HSIMOV AX,SI1234HDIADD AX,DIMOV DI,3000HMOV SI,2000HMOV SI ,AXMOV AX, SI+2 ADC AX, DI+2 CF=1ACF1HMOV SI+2 ,AXF1ACCF=03. 增量指令增量指令 INC格式:格式: INC OPR功能:操作數(shù)功能:操作數(shù)OPR的內(nèi)容加的內(nèi)容加1,結(jié)果送回,結(jié)果送回OPR這條指令執(zhí)行的結(jié)果不影響進(jìn)位標(biāo)志這條指令執(zhí)行的結(jié)果不影響進(jìn)位標(biāo)志CF,但影響其它的五個(gè)狀態(tài)標(biāo)志但影響其它的五個(gè)狀態(tài)標(biāo)志例:例: INC AL ;AL的內(nèi)容加的內(nèi)容加1 INC CX ;CX的內(nèi)容加的
59、內(nèi)容加1 操作數(shù)可以是字節(jié)、字操作數(shù)可以是字節(jié)、字1. 減法指令減法指令SUB格式:格式: SUB DST,SRC功能:功能: DST的內(nèi)容減去的內(nèi)容減去SRC的內(nèi)容,結(jié)果送到目的內(nèi)容,結(jié)果送到目 的操作數(shù)的操作數(shù)DST中,源操作數(shù)不變。中,源操作數(shù)不變。2. 帶借位減法指令帶借位減法指令SBB 格式:格式: SBB DST,SRC功能:操作數(shù)功能:操作數(shù)DST的內(nèi)容減去操作數(shù)的內(nèi)容減去操作數(shù)SRC的內(nèi)容,的內(nèi)容, 同時(shí)還要減去借位進(jìn)位標(biāo)志同時(shí)還要減去借位進(jìn)位標(biāo)志CF的值,的值, 結(jié)果送目的操作數(shù),源操作數(shù)不變。結(jié)果送目的操作數(shù),源操作數(shù)不變。執(zhí)行結(jié)果和加法指執(zhí)行結(jié)果和加法指令一樣影響標(biāo)志位令
60、一樣影響標(biāo)志位3. 減量減量 指令指令DEC格式:格式:DEC OPR功能:操作數(shù)功能:操作數(shù)OPR的內(nèi)容減的內(nèi)容減1,并把結(jié)果送回,并把結(jié)果送回OPR執(zhí)行結(jié)果不影響執(zhí)行結(jié)果不影響CF,但影響其它五個(gè)狀態(tài)標(biāo)志,但影響其它五個(gè)狀態(tài)標(biāo)志4. 求補(bǔ)指令求補(bǔ)指令NEG格式:格式:NEG OPR功能:對(duì)操作數(shù)取補(bǔ)碼,將結(jié)果送回操作數(shù)功能:對(duì)操作數(shù)取補(bǔ)碼,將結(jié)果送回操作數(shù)OPR中中執(zhí)行結(jié)果影響狀態(tài)標(biāo)志執(zhí)行結(jié)果影響狀態(tài)標(biāo)志實(shí)際上是用零實(shí)際上是用零減去操作數(shù)減去操作數(shù)(OPR)執(zhí)行的操作執(zhí)行的操作(OPR)5. 比較指令比較指令CMP 格式:格式: CMP OPR1,OPR2功能:功能: 操作數(shù)操作數(shù)OPR1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 武漢工程職業(yè)技術(shù)學(xué)院《誤差理論與測量平差基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024版物業(yè)管理室內(nèi)裝修協(xié)議版B版
- 2024校園節(jié)能減排與物業(yè)管理服務(wù)合同
- 二零二五年度指南:國際合同第六號(hào)生皮供應(yīng)鏈金融支持協(xié)議3篇
- 2025年度跨境電子商務(wù)平臺(tái)合作運(yùn)營協(xié)議規(guī)范文本2篇
- 2025年度窗簾品牌形象設(shè)計(jì)與傳播服務(wù)合同3篇
- 天津工業(yè)職業(yè)學(xué)院《材料科學(xué)與工程創(chuàng)新創(chuàng)業(yè)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024版企業(yè)應(yīng)收賬款第三方擔(dān)保債權(quán)轉(zhuǎn)讓合同3篇
- 二零二五年文化創(chuàng)意產(chǎn)業(yè)合作發(fā)展合同3篇
- 二零二五年度O2O農(nóng)產(chǎn)品上行合作框架協(xié)議2篇
- 大數(shù)據(jù)與人工智能ppt
- 中醫(yī)科特色診療規(guī)范
- 建筑工程一切險(xiǎn)條款版
- PEP小學(xué)六年級(jí)英語上冊(cè)選詞填空專題訓(xùn)練
- 古建筑修繕項(xiàng)目施工規(guī)程(試行)
- GA 844-2018防砸透明材料
- 化學(xué)元素周期表記憶與讀音 元素周期表口訣順口溜
- 非人力資源經(jīng)理的人力資源管理培訓(xùn)(新版)課件
- 鉬氧化物還原過程中的物相轉(zhuǎn)變規(guī)律及其動(dòng)力學(xué)機(jī)理研究
- (完整word)2019注冊(cè)消防工程師繼續(xù)教育三科試習(xí)題及答案
- 《調(diào)試件現(xiàn)場管理制度》
評(píng)論
0/150
提交評(píng)論