第1章 匯編語言基礎(chǔ)知識_第1頁
第1章 匯編語言基礎(chǔ)知識_第2頁
第1章 匯編語言基礎(chǔ)知識_第3頁
第1章 匯編語言基礎(chǔ)知識_第4頁
第1章 匯編語言基礎(chǔ)知識_第5頁
已閱讀5頁,還剩114頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

教學(xué)重點(diǎn)

第1章是用匯編語言進(jìn)行程序設(shè)

計(jì)所需要了解的基本知識。在課

堂上,我們重點(diǎn)掌握幾個(gè)內(nèi)容:

/PC機(jī)軟硬件系統(tǒng)

/認(rèn)識匯編語言

,基礎(chǔ)是熟悉寄存器組

,難點(diǎn)是各種尋址方式

non

第1工.?1.1計(jì)算機(jī)系統(tǒng)概述

硬件(Hardware)

■中央處理單元CPU

■控制器、運(yùn)算器、寄存器

■存儲(chǔ)器

■主存儲(chǔ)器:RAM和ROM

■輔助存儲(chǔ)器:磁盤、光盤、U盤

■外部設(shè)備

■輸入設(shè)備和輸出設(shè)備

A軟件(Software)

■系統(tǒng)軟件

■應(yīng)用軟件

第1章微型計(jì)算機(jī)的系統(tǒng)組成

系統(tǒng)總線

CPU

運(yùn)算器…;

控制需;

‘寄存器:

第1章匯編語言程序員看到的硬件

手■J

■?中央處理單元CPU(Intel80x86)

對匯編語言程序員,最關(guān)心其中的寄存器

A存儲(chǔ)器(主存儲(chǔ)器)

呈現(xiàn)給匯編語言程序員的,是存儲(chǔ)器地址

A外部設(shè)備(接口電路)

匯編語言程序員看到的是端口(I/O地址)

第1匕■■寄存器(Register)

??寄存器是CPU內(nèi)部的高速存儲(chǔ)單元

>它們?yōu)樘幚砥魈峁└鞣N操作所需要的數(shù)據(jù)或

地址等信息

>匯編語言程序采用它們各自的符號名

■16位Intel8086/80286CPU中有

AXBXCXDX

SIDIBPSP

■32位80386/80486/Pentium系歹UCPU中有

EAXEBXECXEDX

ESIEDIEBPESP

第1匕.?存儲(chǔ)器地址(Address)

?存儲(chǔ)器是由大量存儲(chǔ)單元組成,需要用編號

區(qū)別每個(gè)單元:編號=地址

>存儲(chǔ)器地址是存儲(chǔ)器中存儲(chǔ)單元的編號

>每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)量的數(shù)據(jù)

■一個(gè)字節(jié)B(Byte)=8個(gè)二進(jìn)制位b(bit)

>采用十六進(jìn)制數(shù)來表達(dá)地址

■Intel8086具有1兆字節(jié)(1MB)存儲(chǔ)器容量

■存儲(chǔ)器地址表示為:00000H?FFFFFH

■其中大寫H(或小寫h)表示是十六進(jìn)制數(shù)

第1工■■端口(Port)

l?l/o接口電路由接口寄存器組成,需要用編

號區(qū)別各個(gè)寄存器:編號=地址

>I/O地址是接口電路中寄存器的編號

A端口是I/O地址的通俗說法

>系統(tǒng)通過這些端口與外設(shè)進(jìn)行通信

A采用十六進(jìn)制數(shù)來表達(dá)端口

■Intel8086支持64K個(gè)8位端口

■I/O地址可以表示為:0000H?FFFFH

第1章計(jì)算機(jī)的程序設(shè)計(jì)語言

手■J

■?機(jī)器語言(MachineLanguage)

B86400050001

A匯編語言(AssemblyLanguage)

movaxJOO

;取得一個(gè)數(shù)據(jù)100(MOV是傳送指令)

addax,256

;實(shí)現(xiàn)100+256(ADD是加法指令)

A高級語言(High-levelLanguage)

100+256

E第I"以上匕:符形式表什示么計(jì)是匯算編機(jī)語指言令‘

■助記符(mnemonic)是便于人們記憶、并能

描述指令功能和指令操作數(shù)的符號

■助記符是表明指令功能的英語單詞或其縮寫

A匯編格式指令以及使用它們編寫程序的規(guī)則

就形成匯編語言(AssemblyLanguage)

A匯編語言程序:用匯編語言書寫的程序

A匯編程序:將匯編語言程序“匯編”成機(jī)器

代碼目標(biāo)模塊的程序

行匯編語言程序與匯編程序是兩個(gè)概念

第匯編語言和高級語言的比較-1

A匯編語言與處理器密切相關(guān)

X匯編語言程序的通用性、可移植性較差

>高級語言與具體計(jì)算機(jī)無關(guān)

/高級語言程序是標(biāo)準(zhǔn)化語言,可在多種

計(jì)算機(jī)上編譯后執(zhí)行

匯編語言:XIWJ級語言:N

士??匯編語言和高級語言的比較-2

A匯編語言功能有限、涉及硬件細(xì)節(jié)

\程序編寫比較繁瑣,調(diào)試比較困難

?高級語言提供了強(qiáng)大的功能,不必

關(guān)心瑣碎問題

/類似自然語言的語法,易于掌握和應(yīng)

匯編語言:XIWJ級語言:7

第1工上匯編語言和高級語言的比較-3

■7匯編語言本質(zhì)上就是機(jī)器語言

/可以直接、有效地控制計(jì)算機(jī)硬件

/易于產(chǎn)生速度快、容量小的高效率目標(biāo)

程序

>高級語言不針對具體計(jì)算機(jī)系統(tǒng)

\不易直接控制計(jì)算機(jī)的各種操作

'目標(biāo)程序比較龐大、運(yùn)行速度較慢

匯編語言:N高級語言:x

第1匕.?匯編語言的特點(diǎn)

■7匯編語言的優(yōu)點(diǎn):

■直接控制計(jì)算機(jī)硬件部件

■編寫“時(shí)間”和“空間”兩方面最有效程

A匯編語言的缺點(diǎn):

■與處理器密切有關(guān)

■需要熟悉計(jì)算機(jī)硬件系統(tǒng)、考慮許多細(xì)節(jié)

■編寫繁瑣調(diào)試、維擰、交流和移植困難

匯編語言:?高級語言:?

乙戛小匯編語言和高級語言的混合編程

r匯曝語言的優(yōu)點(diǎn)使得它在程贏計(jì)中占有重

要的位置,不可被取代

?匯編語言的缺點(diǎn)使得人們主要采用高級語言

進(jìn)行程序開發(fā)工作

?有時(shí)需要采用高級語言和匯編語言混合編程,

互相取長補(bǔ)短,更好地解決實(shí)際問題

混合編程取長補(bǔ)短

第1匕上匯編語言的應(yīng)用場合

程序要具有較快的執(zhí)行時(shí)間,或者只能占用

較小的存儲(chǔ)容量

?程序與計(jì)算機(jī)硬件密切相關(guān),程序要直接、

有效地控制硬件

A*9匯編語言的作用實(shí)在不?。。?/p>

A城有合適的高級語言、或只能米用匯編語言

的時(shí)候

?分析具體系統(tǒng)尤其是該系統(tǒng)的低層軟件、加

密解密軟件、分析和防治計(jì)算機(jī)病毒等等

第1匕.?1.2數(shù)據(jù)表示

跳過

>1.2.1數(shù)缶I]

■二進(jìn)制數(shù)、十六進(jìn)制數(shù)

■它們與十進(jìn)制數(shù)的相互轉(zhuǎn)換

>1.2.2編碼

■BCD碼和ASCH碼的規(guī)律

>1.2.3有符號數(shù)的表示法

■有符號整數(shù)的補(bǔ)碼表示

>1.2.4二進(jìn)制運(yùn)算

■二進(jìn)制的算術(shù)運(yùn)算和邏輯運(yùn)算

■十進(jìn)制的加減運(yùn)算

第1章二進(jìn)制數(shù)

>便于計(jì)算機(jī)存儲(chǔ)及物理實(shí)現(xiàn)

?特點(diǎn):逢二進(jìn)一,由0和1兩個(gè)數(shù)碼組成,基

數(shù)為2,各個(gè)位權(quán)以2k表示

A二進(jìn)制數(shù):

???a1a0?b2???bm

n

anX2+an_1X2n」+…+a[X21+a()X2°

12m

+b1X2-+b2X2-+...+bmX2'

其中如與非0即1

第十六進(jìn)制數(shù)

—h—

用于表達(dá)二進(jìn)制數(shù),相互轉(zhuǎn)換簡單

A基數(shù)16,逢16進(jìn)位,位權(quán)為16與16個(gè)數(shù)碼:

0,1,2,3,4,5,6,7,8,9

A,B,C,D,E,F

?十六進(jìn)制數(shù):

?n?n-1■■。2,?,bm—

anXl6n+an.iXl6ni+.??+aiXl6i+a0xi60

+b1Xl6-i+b2X16-2+.BB+bmXl6-m

其中5,bj是。?F中的一個(gè)數(shù)碼

新匕■■十進(jìn)制整數(shù)轉(zhuǎn)換為二或十六進(jìn)制數(shù)

演示

整數(shù)部分轉(zhuǎn)換:用除法

■十進(jìn)制數(shù)整數(shù)部分不斷除以基數(shù)2或16,并記下

余數(shù),直到商為0為止

■由最后一個(gè)余數(shù)起逆向取各個(gè)余數(shù),則為轉(zhuǎn)換

成的二進(jìn)制和十六進(jìn)制數(shù)

126=01111110B

126=7EH

第十進(jìn)制小數(shù)轉(zhuǎn)換為二或十六進(jìn)制數(shù)

K小數(shù)部分轉(zhuǎn)換:用乘法演示

■分別乘以各自的基數(shù),記錄整數(shù)部分,直到小

數(shù)部分為o為止

0.8125=0.1101

0.8125=0.DH

>小數(shù)轉(zhuǎn)換會(huì)發(fā)生總是無法乘到為0的情況

■可選取一定位數(shù)(精度)

■將產(chǎn)生無法避免的轉(zhuǎn)換誤差

第I工十二或十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)

方法:按權(quán)展開

?二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)

0011.1010B二進(jìn)制數(shù)用后綴字母B

=1X21+1X2°+1X2-1+0X2-2+1X2-3

=3.625

>十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)

1.2H|十六進(jìn)制綴字母H

=1X16°+2X16-1

=1.125

BCD石馬(BinaryCodedDecimal)

?二進(jìn)制編碼的十進(jìn)制數(shù)

■一個(gè)十進(jìn)制數(shù)位。?9用4位二進(jìn)制編碼來表示

■常用8421BCD碼:低10個(gè)4位二進(jìn)制編碼表示

■壓縮BCD碼:一個(gè)字節(jié)表達(dá)兩位BCD碼

■非壓縮BCD碼:一個(gè)字節(jié)表達(dá)一位BCD碼(低

4位表達(dá)數(shù)值,高4位常設(shè)置為0)

ABCD碼彳艮直觀

BCD碼:0100100101111000.000101001001

十進(jìn)制真值:4978.149

CD碼便于輸入輸出,表達(dá)數(shù)值準(zhǔn)確

第1章ASCII碼(美國標(biāo)準(zhǔn)信息交換碼)

上二進(jìn)制編碼,有儂個(gè)

A不可顯示的控制字符

前32個(gè)和最后一個(gè)編碼

回車CR:ODH換行LF:OAH響鈴BEL:07H

A可顯示和打印的字符:20H后的94個(gè)編碼

■數(shù)碼0?9:30H?39H

■大寫字母A?乙41H?5AH

■小寫字母a?z:61H?7AH

■空格:20H

A擴(kuò)展ASCH碼:最高D7位為1,表達(dá)制表符

第1章真值和機(jī)器數(shù)

?真值:現(xiàn)實(shí)中真實(shí)的數(shù)值

A機(jī)器數(shù):計(jì)算機(jī)中用0和1數(shù)碼組合表達(dá)的數(shù)值

?無符號數(shù):只表達(dá)0和正整數(shù)的定點(diǎn)整數(shù)

A有符號數(shù):表達(dá)負(fù)整數(shù)、0和正整數(shù)的定點(diǎn)整數(shù)

■符號位需要占用一個(gè)位

■常用機(jī)器數(shù)的最高位

■0表示正數(shù)、1表示負(fù)數(shù)

?定點(diǎn)數(shù):固定小數(shù)點(diǎn)的位置表達(dá)數(shù)值的機(jī)器數(shù)

■定點(diǎn)整數(shù):將小數(shù)點(diǎn)固定在機(jī)器數(shù)的最右側(cè)表達(dá)的整數(shù)

■定點(diǎn)小數(shù):將小數(shù)點(diǎn)固定在機(jī)器數(shù)的最左側(cè)表達(dá)的小數(shù)

A浮點(diǎn)數(shù):小數(shù)點(diǎn)浮動(dòng)表達(dá)的實(shí)數(shù)

第1章」A補(bǔ)碼

演示

>有符號整數(shù)在計(jì)算機(jī)中默認(rèn)采用補(bǔ)碼

■最高位表示符號:正數(shù)用0,負(fù)數(shù)用1

■正數(shù)補(bǔ)碼:直接表示數(shù)值大?。ㄍ瑹o符號數(shù))

■負(fù)數(shù)補(bǔ)碼:將對應(yīng)正數(shù)補(bǔ)碼取反加1

[105]補(bǔ)碼=01101001B

為什么是補(bǔ)碼:

[」05]補(bǔ)碼=[01101001B]取反+1/.....????...X\

£1\/\

7

=10010110B+1=10010111\/

A8位二進(jìn)制補(bǔ)碼表示的數(shù)值范圍:?128?+127

A16位二進(jìn)制補(bǔ)碼表示的數(shù)值范圍:?215?+2但1

A32位二進(jìn)制補(bǔ)碼表示的數(shù)值范圍:?231?+231-1

上??負(fù)數(shù)求補(bǔ)演示

W'=

?A負(fù)數(shù)真值“取反加1”得機(jī)器數(shù)補(bǔ)碼

A負(fù)數(shù)補(bǔ)碼“取反加1”得到負(fù)數(shù)真值

補(bǔ)碼:11100000B

真值:-([11100000]求反+1)=-(00011111+1)

=-00100000=-25=-32

A負(fù)數(shù)求補(bǔ)運(yùn)算,等效于用帶借位的0作減法

真值:?8,補(bǔ)碼:卜8]補(bǔ)碼=00H?08H=F8H

補(bǔ)碼:11111000,真值:-(00H-F8H)=-08H=-8

用十六進(jìn)制表達(dá)和運(yùn)算,方便!

第1十六進(jìn)制數(shù)的加減運(yùn)算

P二::和十六;;數(shù)之間具有對應(yīng)關(guān)系

■整數(shù)從左向右

■小數(shù)從右向左

■每4個(gè)二進(jìn)制位對應(yīng)一個(gè)十六進(jìn)制位

00111010B=3AH,F2H=11110010B

>十六進(jìn)制數(shù)的加減運(yùn)算類似十進(jìn)制

■逢16進(jìn)位1,借1當(dāng)16

23D9H+94BEH=B897H

A59FH-62H=42E7H

第1匕.?1.3Intel80x86系列微處理器

4004

第i匕一8086

A16位結(jié)構(gòu)的微處理器:數(shù)據(jù)總線為16位

A主存容量1MB:地址總線為20位

>時(shí)鐘頻率5MHz(IBMPC使用4.77MHz)

A準(zhǔn)16位微處理器8088:外部數(shù)據(jù)總線為8位

>IBMPC和PC/XT機(jī)使用Intel8088CPU

>8086的16位指令系統(tǒng):Intel80x86基本指令集

>80186/80188的核心是8086/8088,配以支持電路

A80186/80188指令系統(tǒng)比8086指令系統(tǒng)新增了若

干條實(shí)用的指令

■涉及堆棧操作、移位指令、輸入輸出指令、過程指令和

邊界檢測及乘法指令

第1匕.?80286

■?16位數(shù)據(jù)總線,24位地址總線(16MB主存)

A實(shí)方式(RealMode)

■與8086工作方式一樣

?保護(hù)方式(ProtectedMode)

■存儲(chǔ)管理、保護(hù)機(jī)制和多任務(wù)管理的硬件支持

>IBMPC/AT機(jī)使用Intel80286CPU

>80286指令系統(tǒng)新增15條保護(hù)方式指令

16位Intel80x86CPU:8086/80186/80286

32位Intel80x86CPU(IA-32微處理器):

80386,80486,Pentium系列

英特爾32位結(jié)構(gòu):IA?32(IntelArchitecture-32)

第1章80386

>32位結(jié)構(gòu)

■數(shù)據(jù)總線32位,地址總線32位,尋址4GB主存

A虛擬8086方式(Virtual8086Mode)

■保護(hù)方式下的8086工作方式

>系統(tǒng)管理方式(SystemManagementMode)

■低功耗節(jié)能狀態(tài)

>80386指令系統(tǒng)全面升級為32位

■兼容原來16位指令系統(tǒng)

■新增有關(guān)位操作、條件設(shè)置指令以及對控制、

調(diào)試和測試寄存器的傳送指令等

第80486

>80486=80386+80387+8KBCache

>浮點(diǎn)處理單元FPU

■8086/8088:8087

■80286:80287

■80386:80387

>高速緩沖存儲(chǔ)器Cache

>復(fù)雜指令集計(jì)算機(jī)CISC融合精簡指令集計(jì)算機(jī)

RISC的技術(shù)特點(diǎn)

>80486指令系統(tǒng)新增用于多處理器和內(nèi)部Cache操

作的6條指令

第1章Pentium

亡俗工的80586微處理器,奔騰微處理器

A32位結(jié)構(gòu),連接主存的數(shù)據(jù)總線是64位

?超標(biāo)量(Superscalar)技術(shù)

>Pentium指令系統(tǒng)新增

■一條8字節(jié)比較交換指令

■一條處理器識別指令

■4條系統(tǒng)專用指令

PentiumPro

A原稱P6,中文名稱為“高能奔騰”

A兩個(gè)芯片組成

A擴(kuò)展的超標(biāo)量技術(shù)

A動(dòng)態(tài)執(zhí)行技術(shù)

>PentiumPro新增3條指令

p"■PentiumII

?A多媒體擴(kuò)展指令(MMX指令)

■MMX(MutliMediaextension)

■整數(shù)運(yùn)算多媒體指令

■優(yōu)化圖像、音頻、視頻和通信方面的程序進(jìn)行

■提升微機(jī)對多媒體的處理能力

>PentiumMMX(多能奔騰):MMX指令應(yīng)

用于Pentium處理器

>PentiumII:MMX指令應(yīng)用于PentiumPro

■PentiumIII

士數(shù):流SIMD擴(kuò)展指令(SSE指令)

■SSE(StreamingSIMDExtensions)pentlum#-

■浮點(diǎn)單精度多媒體運(yùn)算指令

■提高浮點(diǎn)3D數(shù)據(jù)的處理能力。

■SSE指令類似于AMD公司發(fā)布的3DNow!指令

>PentiumIII:SSE指令應(yīng)用于PentiumII

A單指令多數(shù)據(jù)SIMD

■SingleInstructionMultipleData

■表示一條指令具有同時(shí)處理多組數(shù)據(jù)的能力

第1章Pentium4

>NetBurst的微結(jié)構(gòu)(Microarchitecture)

■進(jìn)一步發(fā)掘指令之間可以同時(shí)執(zhí)行的能力

A超線程HT(HyperThreading)

■發(fā)掘程序中的并行性

■一個(gè)物理處理器形成兩個(gè)邏輯處理器

ASSE2指令

■增強(qiáng)浮點(diǎn)雙精度多媒體運(yùn)算能力

ASSE3指令

■增強(qiáng)和完善MMX,SSE和SSE2指令

第i匕AIntel80x86微處理器

>Celeron(賽揚(yáng))微處理器

■面向低端(低價(jià)位)PC機(jī)

>Xeon(至強(qiáng))微處理器

■面向高端服務(wù)器、工作站

>AMD微處理器

■AMD公司生產(chǎn)的IA-32微處理器兼容芯片

■Intel公司最主要的競爭對手

>雙核微處理器

■單芯片多處理器SMP技術(shù)

■Intel的PentiumD:單芯片雙Pentium4核心

>64位微處理器

■AMD的K8核心:兼容IA?32的64位微處理器

■Intel的EM64T(擴(kuò)展64位技術(shù)):IA?32的64位擴(kuò)展

,第?匕本匕上:采用16位1.或43P2C位微個(gè)型人計(jì)計(jì)算算機(jī)機(jī)

A16位PC機(jī)

■8088CPU的IBMPC和IBMPC/XT

■80286CPU的IBMPC/AT

■16位80x86CPU的PC兼容機(jī)

A32位PC機(jī)

■采用32位80x86CPU而形成的微機(jī)

■基本結(jié)構(gòu)仍然源于PC/AT機(jī)

>人們?nèi)粘U務(wù)摰腜C機(jī)或微機(jī)是上述微型計(jì)

算機(jī)系統(tǒng)的統(tǒng)稱

主存空間的分配

FFFFFFFFH復(fù)制ROMH

^擴(kuò)

1

?展

3

2

()位

00100000HHMA64KB

-UP

系統(tǒng)ROMMC

000E0000H128KBA機(jī)

P主

擴(kuò)展ROM>GC

8存

4/

128KBX(

000C0000HKT4

B喜G

顯示RAM)B

)

128KB「

000A0000H(

I

常)

系統(tǒng)RAM>規(guī)

1主

640KB存

00000000H

第1匕.?PC機(jī)最低1MB主存

口「1

IA系統(tǒng)RAM區(qū)

■地址最低端的640KB空間

■由DOS進(jìn)行管理

>顯示RAM區(qū)

■128KB主存空間保留給顯示緩沖存儲(chǔ)區(qū)

■顯示RAM區(qū)并沒有被完全使用

A擴(kuò)展ROM區(qū)

■I/O接口電路卡上的ROM

A系統(tǒng)ROM區(qū)

■ROM-BIOS程序

口第1匕h.?微機(jī)的軟件

I》系統(tǒng)軟件:DOS平臺(tái)

■MS-DOS6.22實(shí)地址方式

■Windows的MS-DOS模擬環(huán)境

?應(yīng)用軟件:開發(fā)匯編語言程序涉及

■文本編輯器

■匯編程序

■連接程序[?本教材提供一

■調(diào)試程序;DOS?MASM615.EXE

■集成化開發(fā)環(huán)境

第?工上文本編輯器(Editor)

■政文本編輯器用于編輯無任何格式的文檔

>程序設(shè)計(jì)要采用文本編輯器編寫源程序

A常見的文本編輯軟件有很多,如

■MS-DOS的EDIT全屏幕編輯器

■Windows的Notepad計(jì)事本

■程序開發(fā)系統(tǒng)中的程序編輯器

■TurboC

■VisualStudio

■MASM的PWB

比立■■匯編程序(Assembler)

?匯編程序?qū)R編語言源程序翻譯(稱為“匯

編”)成機(jī)器代碼目標(biāo)模塊

A本課程采用微軟的MASM6.15

■MASM的最后一個(gè)獨(dú)立版本MASM6,11

■可免費(fèi)升級為MASM6.14(支持SSE)

■VisualC++中有MASM6.15(支持SSE2)

■VisualC++.NET2003有MASM7.10

■VisualC++-NET2005的MASM支持Penium4

的SSE3指令系統(tǒng),同時(shí)有ML64EXE程序用于

支持64位指令系統(tǒng)

第1工.?連接程序(Linker)

勻I■」

■口連接程序?qū)R編后的目標(biāo)模塊轉(zhuǎn)換為可執(zhí)行

程序

>每個(gè)程序開發(fā)環(huán)境都有連接程序

?連接程序的文件名通常是:LINK.EXE

A32位Windows連接程序不同于16位DOS連

接程序

源程序—目標(biāo)模塊可執(zhí)行文件

.???.::

??????

文本編輯器匯編程序連接程序調(diào)試程序

調(diào)試程序(Debugger)

金調(diào)W程序進(jìn)行程序排錯(cuò)、分析等

>本課程采用MASM的CodeView

ADOS的DEBUG程序

A還有TurboDebugger等

潺程序丁目標(biāo)模塊k可執(zhí)行京牛

文本編輯器匯編程序連接程序調(diào)試程序

第I匕上集成化開發(fā)環(huán)境

??進(jìn)行程序設(shè)計(jì)使用的各種軟件的有機(jī)集合,

有文本編輯器,有語言翻譯程序,有連接程

序,還組合有調(diào)試程序等

>大型的程序設(shè)計(jì)項(xiàng)目往往要借助這種集成開

發(fā)環(huán)境,也就是軟件開發(fā)工具(包)

AMASM提供程序員工作平臺(tái)PWB

?微軟的VisualStudio開發(fā)系統(tǒng)

第i"■MASM編程環(huán)境的使用

口「1

■l.進(jìn)入模擬DOS環(huán)境

2.將MASM目錄作為當(dāng)前目錄

3.開發(fā)匯編語言程序

mlZFIfilename.asm

4.運(yùn)行可執(zhí)行程序

5.調(diào)試可執(zhí)行程序

與定制進(jìn)入MASM快捷方式ML615、

V創(chuàng)建快速開發(fā)文件MLLBAT

第1匕A1,58086微處理器

?微處理器是微機(jī)的硬件核心,主要包含指令

執(zhí)行的運(yùn)算和控制部件,還有多種寄存器

?對程序員來說,微處理器抽象為以名稱存取

的寄存器

A8086內(nèi)部結(jié)構(gòu)有兩個(gè)功能模塊,完成一條

指令的取指和執(zhí)行功能

?:?總線接口單元BIU:負(fù)責(zé)讀取指令和操作數(shù)

?:?執(zhí)行單元EU:負(fù)責(zé)指令譯碼和執(zhí)行

8086的內(nèi)部結(jié)構(gòu)

通用寄存器

輸入/輸出一

控制電路

16位線

執(zhí)行部分

控制電路123456

指令隊(duì)列緩沖器

標(biāo)志寄存器

執(zhí)行

執(zhí)行部件(EU)總線接口部件(BIU)

8086的寄存器組

r數(shù)懶存器

通用寄存器

變址寄存器

15

指針寄存器

CS代眄段寄存器

麟段寄存器

SS段寄存器

DS轆段寄存器

ES附加段寄存器

第1章8086的通用寄存器

A8086的16位通用寄存器是:

AXXCXDX

SIDIPSP

?其中前4個(gè)數(shù)據(jù)寄存器都還可以分成高8位和

低8位兩個(gè)獨(dú)立的寄存器

A8086的8位通用寄存器是:

AHHCHDH

ALLCLDL

?對其中某8位的操作,并不影響另外對應(yīng)8位

的數(shù)據(jù)

第I匕1數(shù)據(jù)寄存器

尹「

數(shù)據(jù)寄存器用來存放計(jì)算的結(jié)果和操作數(shù),

也可以存放地址

>每個(gè)寄存器又有它們各自的專用目的

■AX——累加器,使用頻度最高,用于算術(shù)、邏

輯運(yùn)算以及與外設(shè)傳送信息等;

■BX——基址寄存器,常用做存放存儲(chǔ)器地址;

■CX——計(jì)數(shù)器,作為循環(huán)和串操作等指令中的

隱含計(jì)數(shù)器;

■DX——數(shù)據(jù)寄存器,常用來存放雙字長數(shù)據(jù)的

高16位,或存放外設(shè)端口地址。

第■變址及指針寄存器

|>變址寄存器常用于存儲(chǔ)器尋址時(shí)提供地址

■SI是源變址寄存器

■DI是目的變址寄存器

>指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù)

■SP為堆棧指針寄存器,指示棧頂?shù)钠频刂罚?/p>

不能再用于其他目的,具有專用目的

■BP為基址指針寄存器,表示數(shù)據(jù)在堆棧段中的

基地址

>SI和DI在串操作指令有特殊用法

>SP和BP寄存器與SS段寄存器聯(lián)合使用確定堆棧段

中的存儲(chǔ)單元地址

二匕堆棧(Stack)

r堆屋是主存中一個(gè)特殊的區(qū)丁

》它采用先進(jìn)后出FILO(FirstInLastOut)

或后進(jìn)先出LIFO(LastInFirstOut)的

原則進(jìn)行存取操作,而不是隨機(jī)存取操作

方式

>堆棧通常由處理器自動(dòng)維持

A在8086中,由堆棧段寄存器SS和堆棧指針

寄存器SP共同指示

工工.■指令指針I(yè)P

》指;指針寄存器IP,指示代碼段中指令的偏

移地址

A它與代碼段寄存器CS聯(lián)用,確定下一條指

令的物理地址

?計(jì)算機(jī)通過CS:IP寄存器來控制指令序列

的執(zhí)行流程

>IP寄存器是一個(gè)專用寄存器

第I七1標(biāo)志寄存器

標(biāo)志(Flag)用于反映指令執(zhí)行結(jié)果或控制指令

執(zhí)行形式,形成16位標(biāo)志寄存器FLAGS(程序狀

態(tài)字PSW寄存器)

?狀態(tài)標(biāo)志一一用來記錄程序運(yùn)行結(jié)果的狀態(tài)信息,

許多指令的執(zhí)行都將相應(yīng)地設(shè)置它

CFZFSFPFOFAF

A控制標(biāo)志一一可由程序根據(jù)需要用指令設(shè)置,用

于控制處理器執(zhí)行指令的方式

DFIFTF

151211109876543210

OFIDFIIFITFISFIZFIAFPFPcF

進(jìn)位標(biāo)志CF(CarryFlag)

A當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或

借位(減法)時(shí),進(jìn)位標(biāo)志置1,即CF=1;

否則CF=O。

3AH+7cH=B6H,沒有進(jìn)位:CF=0

AAH+7cH=(1)26H,有進(jìn)位:CF=1

第1章零標(biāo)志ZF(ZeroFlag)

A若運(yùn)算結(jié)果為0,貝!JZF=1;

否則ZF=0

?,注意:ZF為1表示的結(jié)果是0

3AH+7cH=B6H,結(jié)果不是零:ZF=0

84H+7CH=(1)00H,結(jié)果是零:ZF=1

捫4.■符號標(biāo)志SF(SignFlag)

口h,

萬運(yùn)算結(jié)果最高位為1,貝[JSF=1;否則

SF=O

-

4T:工/丁7三,:':產(chǎn)=,::『二,''產(chǎn),三.

>有符號數(shù)據(jù)用最高有效位表示數(shù)據(jù)的符號

所以,最高有效位就是符號標(biāo)志的狀態(tài)

V________________________________________

3AH+7CH=B6H,最高位口7=1:SF=1

84H+7CH=(1)OOH,最高位口7=0:SF=0

第1章奇偶標(biāo)志PF(ParityFlag)

?當(dāng)運(yùn)算結(jié)果最低字節(jié)中“1〃的個(gè)數(shù)為零或偶

數(shù)時(shí),PF=1;否則PF=0

%PF標(biāo)志僅反映最低8位中“1”的個(gè)數(shù)

<是偶或奇,即使是進(jìn)行16位字操作

3AH+7cH=B6H=10110110

結(jié)果中有5個(gè)1,是奇數(shù):PF=0

溢出標(biāo)志OF(OverflowFlag)

■■二

A若算術(shù)運(yùn)算的結(jié)果有溢出,則OF=1;

否則否=0

3AH+7CH=B6H,產(chǎn)生溢出:OF=1

AAH+7CH=(1)26H,沒有溢出:OF=0

(q問題

什么是溢出?

溢出和進(jìn)位有什么區(qū)別?

處理器怎么處理,程序員如何運(yùn)用?

■□何判斷是否溢出?______________

第什么是溢出

>>處理器內(nèi)部以補(bǔ)碼表示有符號數(shù)

>8位表達(dá)的整數(shù)范圍是:+127?―128

>16位表達(dá)的范圍是:+32767?一32768

>如果運(yùn)算結(jié)果超出這個(gè)范圍,就產(chǎn)生了溢出

A有溢出,說明有符號數(shù)的運(yùn)算結(jié)果不正確

3AH+7cH=B6H,就是58+124=182,

已經(jīng)超出一128?+127范圍,產(chǎn)生溢出,故0F=1;

另一方面,補(bǔ)碼B6H表達(dá)真值是?74,

顯然運(yùn)算結(jié)果也不正確

二工起溢出和進(jìn)位

士溢工標(biāo)志OF和進(jìn)位標(biāo)志CF是兩個(gè)意義不同

的標(biāo)志

A進(jìn)位標(biāo)志表示無符號數(shù)運(yùn)算結(jié)果是否超出范

圍,超出范圍后加上進(jìn)位或借位運(yùn)算結(jié)果仍

然正確;

?溢出標(biāo)志表示有符號數(shù)運(yùn)算結(jié)果是否超出范

圍,超出范圍后運(yùn)算結(jié)果不正確。

第1匕.?溢出和進(jìn)位的對比

例1:3AH+7cH=B6H

無符號數(shù)運(yùn)算:58+124=182

范圍內(nèi),無進(jìn)位

有符號數(shù)運(yùn)算:58+124=182

范圍外,有溢出

例2:AAH+7CH=(1)26H

無符號數(shù)運(yùn)算:170+124=294

范圍外,有進(jìn)位

有符號數(shù)運(yùn)算:-86+124=28

范圍內(nèi),無溢出

第1工A如何運(yùn)用溢出和進(jìn)位

?處理器對兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),按照無符

號數(shù)求得結(jié)果,并相應(yīng)設(shè)置進(jìn)位標(biāo)志CF;

同時(shí),根據(jù)是否超出有符號數(shù)的范圍設(shè)置溢

出標(biāo)志OF

?應(yīng)該利用哪個(gè)標(biāo)志,則由程序員來決定。也

就是說,如果將參加運(yùn)算的操作數(shù)認(rèn)為是無

符號數(shù),就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號數(shù),

則要注意是否溢出

第1章溢出的判斷

金判;運(yùn)算結(jié)果是否溢出的簡量規(guī)則:

A只有當(dāng)兩個(gè)相同符號數(shù)相加(包括不同

符號數(shù)相減),而運(yùn)算結(jié)果的符號與原

數(shù)據(jù)符號相反時(shí),產(chǎn)生溢出;因?yàn)椋?/p>

時(shí)的運(yùn)算結(jié)果顯然不正確

?其他情況下,則不會(huì)產(chǎn)生溢出

r.輔助進(jìn)位標(biāo)志AF(AuxiliaryCarryFlag)

1A運(yùn)算時(shí)D3位(低半字節(jié))有進(jìn)位或

借位時(shí),AF=1;否則AF=Oo

3AH+7cH=B6H,D3有進(jìn)位:AF=1

為這個(gè)標(biāo)志主要由處理器內(nèi)部使用,

用于十進(jìn)制算術(shù)運(yùn)算調(diào)整指令中,用

了一般不必關(guān)心

「匚則方向標(biāo)志DF(DirectionFlag)

士用T串操作指令,控制地址的變化方向:

。設(shè)置DF=0,存儲(chǔ)器地址自動(dòng)增加;

。設(shè)置DF=1,存儲(chǔ)器地址自動(dòng)減少。

ACLD指令復(fù)位方向標(biāo)志:DF=0

ASTD指令置位方向標(biāo)志:DF-1

第1章■中斷允許標(biāo)志IF(Interrupt-enableFlag)

力用于控制外部可屏蔽中斷是否可以被處

理器響應(yīng):

。設(shè)置IF=1,則允許中斷;

。設(shè)置IF=O,則禁止中斷。

ACLI指令復(fù)位中斷標(biāo)志:IF=O

ASTI指令置位中斷標(biāo)志:IF=1

陷阱標(biāo)志TF(TrapFlag)

?用于控制處理器進(jìn)入單步操作方式:

。設(shè)置TF=O,處理器正常工作;

。設(shè)置TF=1,處理器單步執(zhí)行指令。

>單步執(zhí)行指令一一處理器在每條指令執(zhí)行結(jié)束時(shí),

便產(chǎn)生一個(gè)編號為1的內(nèi)部中斷

>這種內(nèi)部中斷稱為單步中斷

A所以TF也稱為單步標(biāo)志

■利用單步中斷可對程序進(jìn)行逐條指令的調(diào)試

■這種逐條指令調(diào)試程序的方法就是單步調(diào)試

■■數(shù)據(jù)信息的表達(dá)單位

?計(jì)算機(jī)中信息的單位

■二進(jìn)制位Bit:存儲(chǔ)一位二進(jìn)制數(shù):0或1

■字節(jié)Byte:8個(gè)二進(jìn)制位,D7~D0

■字Word:16位,2個(gè)字節(jié),D15?Do

■雙字DWord:32位,4個(gè)字節(jié),D31?D。

A最低有效位LSB:數(shù)據(jù)的最低位,Do位

A最高有效位MSB:數(shù)據(jù)的最高位,對應(yīng)字節(jié)、

字、雙字分別指D7、Di5、D31位

第1匕.?數(shù)據(jù)的存儲(chǔ)格式

D7Do

低地址

第1章存儲(chǔ)單元及其存儲(chǔ)內(nèi)容

弓?■?

?7主存儲(chǔ)器需要利用地址區(qū)別

?每個(gè)存儲(chǔ)單元都有一個(gè)編號;被稱為

存儲(chǔ)器地址

>每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)的內(nèi)容

0002H單元存放有一個(gè)數(shù)據(jù)34H

表達(dá)為[0002H]=34H

廣F多字節(jié)數(shù)據(jù)存放方式

>多字節(jié)數(shù)據(jù)在存儲(chǔ)器中占連續(xù)的多個(gè)存儲(chǔ)單元:

>存放:低字節(jié)存入低地址,高字節(jié)存入高地址

A表達(dá):用低地址表示多字節(jié)數(shù)據(jù)占據(jù)的地址空間

2號“字”單元的內(nèi)容為:

[0002H]=1234H

2號“雙字”單元的內(nèi)容為:

[0002H]=78561234H

a80x86處理器采用“低對低、高

<_對__高_(dá)_”__:__小__端__方__式__L__it_tl_e__E_n_d__ia_n

巴第I工1£存儲(chǔ)器數(shù)地?fù)?jù)址的可地以址是對字齊節(jié)單元地址、

字單元地址、雙字單元地址等等

?字單元安排在偶地址(xxxOB)、雙字單元

安排在模4地址(xxOOB)等,被稱為“地址

對齊(Align)”

?對于不對齊地址的數(shù)據(jù),處理器訪問時(shí),

需要額外的訪問存儲(chǔ)器時(shí)間

?應(yīng)該將數(shù)據(jù)的地址對齊,以取得較高的存

取速度

二工存儲(chǔ)器的分段管理

,80器CPU有20條地址線

■最大可尋址空間為22。=1MB

■物理地址范圍從00000H?FFFFFH

>8086CPU將1MB空間分成許多邏輯段

(Segment)

■每個(gè)段最大限制為64KB

■段地址的低4位為0000B

?這樣,一個(gè)存儲(chǔ)單元除具有一個(gè)唯一的物理

地址外,還具有多個(gè)邏輯地址

第1工.?物理地址和邏輯地址

??每個(gè)物理存儲(chǔ)單元有一個(gè)唯一的20位

編號,即物理地址:

00000H-FFFFFH

?分段后用戶編程時(shí),采用邏輯地址:

段基地址:段內(nèi)偏移地址

第■邏輯地址

十段說明邏輯段在主存中的起始位置

A8086規(guī)定段地址必須是模16地址:xxxxOH

?省略低4位0000B,段地址就可以用16位數(shù)

據(jù)表示,就能用16位段寄存器表達(dá)段地址

?偏移地址說明主存單元距離段起始位置的偏

移量

?每段不超過64KB,偏移地址也可用16位數(shù)

據(jù)表示

二匕.■物理地址和邏輯地址的轉(zhuǎn)換

E蔡輯地址中的段地址左移4位,加上

偏移地址就得到20位物理地址

>一個(gè)物理地址可以有多個(gè)邏輯地址

邏輯地址1460:100、1380:F00

物理地址14700H14700H

因&址左移建——14600H13800H

加上偏移地址——>+100H+F00H

得到物理地址——14700H14700H

第1匕.?段寄存器

I》8086有4個(gè)16位段寄存器,每個(gè)段寄存器確定一個(gè)

邏輯段的起始地址,每種邏輯段均有各自的用途

>CS(CodeSegment)

■指明代碼段的起始地址

>SS(StackSegment)

■指明堆棧段的起始地址

>DS(DataSegment)

■指明數(shù)據(jù)段的起始地址

>ES(ExtraSegment)

■指明附加段的起始地址

第1章代碼段(CodeSegment)

■/>代■碼段用來存放程序的指令序列

?:?代碼段寄存器CS存放代碼段的段地址

?:?指令指針寄存器IP指示下條指令的偏移地址

A處理器利用CS:IP取得下一條要執(zhí)行的

指令

「第i章

J.堆棧段(StackSegment)

■1堆棧段確定堆棧所在的主存區(qū)域

?:?堆棧段寄存器SS存放堆棧段的段地址

。堆棧指針寄存器SP指示堆棧棧頂?shù)钠频刂?/p>

A處理器利用SS:SP操作堆棧頂?shù)臄?shù)據(jù)

第1章數(shù)據(jù)段(DataSegment)

金數(shù)7段存放運(yùn)行程序所用的數(shù)據(jù)

。數(shù)據(jù)段寄存器DS存放數(shù)據(jù)段的段地址

.:?各種主存尋址方式(有效地址EA)得到存

儲(chǔ)器中操作數(shù)的偏移地址

A處理器利用DS:EA存取數(shù)據(jù)段中的數(shù)

據(jù)

附力口段(ExtraSegment)

A附加段是附加的數(shù)據(jù)段,也用于數(shù)據(jù)的保存:

?:?附加段寄存器ES存放附加段的段地址

?:?各種主存尋址方式(有效地址EA)得到存儲(chǔ)器中

操作數(shù)的偏移地址

A處理器利用ES:EA存取附加段中的數(shù)據(jù)

>串操作指令將附加段作為其目的操作數(shù)的存

放區(qū)域

第1章如何分配各個(gè)邏輯段

A程序的指令序列必須安排在代碼段

A程序使用的堆棧一定在堆棧段

A程序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,

也經(jīng)常安排在附加段,尤其是串操作

的目的區(qū)必須是附加段

A數(shù)據(jù)的存放比較靈活,實(shí)際上可以存

放在任何一種邏輯段中

第I匕上段超越前綴指令

沒有指明時(shí),一般的數(shù)據(jù)訪問在DS段;使用

BP訪問主存,則在SS段

?默認(rèn)的情況允許改變,需要使用段超越前綴

指令;8086指令系統(tǒng)中有4個(gè):

CS;代碼段超越,使用代碼段的數(shù)據(jù)

SS;堆棧段超越,使用堆棧段的數(shù)據(jù)

DS;數(shù)據(jù)段超越,使用數(shù)據(jù)段的數(shù)據(jù)

ES;附加段超越,使用附加段的數(shù)據(jù)

:段超越的示例

土沒二段超越的指令實(shí)例:二

MOVAX,[2000H];AX-DS:[2000H]

;從默認(rèn)的DS數(shù)據(jù)段取出數(shù)據(jù)

>采用段超越前綴的指令實(shí)例:

MOVAX,ES:[2000H];AX-ES:[2000H]

;從指定的ES附加段取出數(shù)據(jù)

段寄存器的使用規(guī)定

一|]

訪問存儲(chǔ)器的方式默認(rèn)可超越偏移地址

取指令CS無IP

堆棧操作SS無SP

一般數(shù)據(jù)訪問DSCSESSS有效地址EA

BP基址的尋址方式SSCSESDS有效地址EA

串操作的源操作數(shù)DSCSESSSSI

串操作的目的操作數(shù)ES無DI

第1章存儲(chǔ)器的分段

中■一

■>8086對邏輯段要求:

■段地址低4位均為0

■每段最大不超過64KB

A8086對邏輯段并不要求:

■必須是64KB

■各段之間完全分開(即可以重疊)

第1匕.?各個(gè)邏輯段獨(dú)立

存儲(chǔ)器物理地址

⑤各段獨(dú)立

第1章各個(gè)邏輯段重疊

存儲(chǔ)器物理地址

段寄存器

堆棧段256B

CS04800H

DS

數(shù)據(jù)段2KB

SS04000H

ES

代碼段8KB

02000H

00000H

(b)各段重疊

審.?1MB空間的分段

>1MB空間最多能分成多少個(gè)段?

■每隔16個(gè)存儲(chǔ)單元就可以開始一個(gè)段

■所以1MB最多可以有:

220^16=216=64K個(gè)段

>1MB空間最少能分成多少個(gè)段?

■每隔64K個(gè)存儲(chǔ)單元開始一個(gè)段

■所以1MB最少可以有:

220?216=16個(gè)段

第1匕.?1,68086的尋址方式

指令系統(tǒng)設(shè)計(jì)了多種操作數(shù)的來源

>尋找操作數(shù)的過程就是操作數(shù)的尋址

?操作數(shù)采取哪一種尋址方式,會(huì)影響機(jī)器運(yùn)行的

速度和效率

>如何尋址一個(gè)操作數(shù)對程序設(shè)計(jì)很重要

4上機(jī)實(shí)踐的建議

配合調(diào)試程序單步執(zhí)行每條指令

[或調(diào)用IO.UB的子程序顯示結(jié)果)

感性認(rèn),象深刻

第1章指令的組成

操作碼操作數(shù)

>指令由操作碼和操作數(shù)兩部分組成

A操作碼說明計(jì)算機(jī)要執(zhí)行哪種操作,如傳送、運(yùn)

算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的

組成部分

A操作數(shù)是指令執(zhí)行的參與者,即各種操作的對象

?有些指令不需要操作數(shù),通常的指令都有一個(gè)或

兩個(gè)操作數(shù),個(gè)別指令有3個(gè)甚至4個(gè)操作數(shù)

第1匕.?指令的操作碼和操作數(shù)

口「——I

??每種指令的操作碼:

■用一個(gè)唯一的助記符表示(指令功能的英文縮

寫)

■對應(yīng)著機(jī)器指令的一個(gè)二進(jìn)制編碼

A指令中的操作數(shù):

■可以是一個(gè)具體的數(shù)值

■可以是存放數(shù)據(jù)的寄存器

■或指明數(shù)據(jù)在主存位置的存儲(chǔ)器地址

第1匕.?8086的機(jī)器代碼格式

1/2字節(jié)0/1字節(jié)0/1/2字節(jié)0/1/2字節(jié)

>給出立即尋址方式需要的數(shù)值本身

標(biāo)準(zhǔn)機(jī)器代碼示例

1/2字節(jié)0/1字節(jié)0/1/2字節(jié)0/1/2包

操作碼|modregr/m位移量立即數(shù)

movax,[BP+0];機(jī)器代碼是8B4600

>前一個(gè)字節(jié)8B是操作碼(含w=1表示字操作)

A中間一個(gè)字節(jié)46(01000110)是“modreg

r/m”字節(jié)

■reg=000表示目的操作數(shù)為AX

■mod=01和17m=110表示源操作數(shù)為[BP+D8]

A最后一個(gè)字節(jié)就是8位位移量〔D8=〕00

第1章其它機(jī)器代碼形式

操作碼操作數(shù)

moval,05;機(jī)器代碼是BO05

?前一個(gè)字節(jié)B0是操作碼(含一個(gè)操作

數(shù)AL),后一個(gè)字節(jié)05是立即數(shù)

movax,0102H;機(jī)器代碼是B0201

A前一個(gè)字節(jié)B8是操作碼(含一個(gè)操作

數(shù)AX),后兩個(gè)字節(jié)0201是16位立即

數(shù)(低字節(jié)02在低地址)

F第1匕將上操指令作的助記―符格式注釋

?操作數(shù)2,稱為源操作數(shù)src,它表示參與

指令操作的一個(gè)對象

?操作數(shù)1,稱為目的操作數(shù)dest,它不僅可

以作為指令操作的一個(gè)對象,還可以用來存

放指令操作的結(jié)果

>分號后的內(nèi)容是對指令的解釋

第1工??傳送指令MOV的格式

MOVdest,src;dest^-src

>功能:將源操作數(shù)src傳送至目的操作數(shù)dest

MOVAL,05H;AL-05H

MOVBX,AX;BX-AX

MOVAX,[SI];AX—DS:[SI]

MOVAX,[BP+06H];AX-SS:[BP+06H]

MOVAX,[BX+SI];AX-DS:[BX+SI]

第?傳送指令MOV的功能

第1匕.?立即數(shù)尋址方式

?指令中的操作數(shù)直接存放在機(jī)器代碼中,緊

跟在操作碼之后(操作數(shù)作為指令的一部分

存放在操作碼之后的主存單元中)

>這種操作數(shù)被稱為立即數(shù)imm

■它可以是8位數(shù)值i8(OOH-FFH)

■也可以是16位數(shù)值i16(0000H?FFFFH)

?立即數(shù)尋址方式常用來給寄存器賦值

MOVAL,05H;AL―05H

MOVAX,0102H;AX-0102H

第1章.立即數(shù)尋址指令

MOVAX,0102H;AX―0102H

存儲(chǔ)器

高地址

—立即數(shù)高字節(jié)

?—

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論