工編語言程序設(shè)計(jì)課件_第1頁
工編語言程序設(shè)計(jì)課件_第2頁
工編語言程序設(shè)計(jì)課件_第3頁
工編語言程序設(shè)計(jì)課件_第4頁
工編語言程序設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩101頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

工編語言程序設(shè)計(jì)

向軍

0

第工幸預(yù)備知詼

1.1匯編語言的由來及其特點(diǎn)

1.1.1機(jī)器語言

機(jī)器指令是CPU能直接識(shí)別并執(zhí)行的指令,它的表現(xiàn)形式是二進(jìn)

制編碼。

機(jī)器指令通常由操作碼和操作數(shù)兩部分組成:

?操作碼指出該指令所要完成的操作,即指令的功能;

?操作數(shù)指出參與運(yùn)算的對(duì)象,以及運(yùn)算結(jié)果所存放的位置等。

機(jī)器指令與CPU緊密相關(guān),所以,不同種類的CPU所對(duì)應(yīng)的機(jī)器

指令也就不同。

第工幸預(yù)備知詼

1.1.2匯編語言

用通俗易懂、具有一定含義的符號(hào)來代表機(jī)器指令,這些符號(hào)稱為助憶符,用

指令助憶符、符號(hào)地址等組成的符號(hào)指令稱為匯編格式指令(或匯編指令)。

匯編語言是匯編指令集、偽指令集和使用它們規(guī)則的統(tǒng)稱。

偽指令是在程序設(shè)計(jì)時(shí)所需要的一些輔助性說明指令,它不對(duì)應(yīng)具體的機(jī)器指

令。

用匯編語言編寫的程序稱為匯編語言程序,或匯編語言源程序,在本教材中簡(jiǎn)

稱為源程序。匯編語言程序要比用機(jī)器指令編寫的程序容易理解和維護(hù)。

第工幸預(yù)備知詼

1.1.3匯編程序

用匯編語言編寫的程序大大提高了程序的可讀性,但失去了CPU能直接

識(shí)別的特性。

把匯編語言編寫的源程序翻譯成CPU能識(shí)別的機(jī)器指令序列,我們稱該

翻譯程序?yàn)閰R編程序。圖1.1是翻譯程序的翻譯過程示意圖。

目前,常用的匯編程序有:MASM、TASM和DEBUG等。

匯薪源程序

圖1.1匯編語言指令到機(jī)器指令的示意圖

第工幸預(yù)備知詼

1.1.4匯編語言程序的主要特點(diǎn)

匯編語言程序歸納起來大概有以下幾個(gè)主要特性。

?與機(jī)器相關(guān)性

?執(zhí)行的高效率

?編寫程序的復(fù)雜性

?調(diào)試的復(fù)雜性

現(xiàn)在在調(diào)試方面有所改善,CV(CodeView)>TD(TurboDebug)等軟件可在源

程序級(jí)進(jìn)行符號(hào)跟蹤。

第工幸預(yù)備知詼

14.5匯編語言的使用領(lǐng)域

根據(jù)應(yīng)用程序的“可移植性”和“執(zhí)行效率”來確定是否選用匯編語言。

下面簡(jiǎn)單列舉幾個(gè)領(lǐng)域以示說明,但不要把它們絕對(duì)化。

1、適用的領(lǐng)域

?要求執(zhí)行效率高、反應(yīng)快的領(lǐng)域,如:操作系統(tǒng)內(nèi)核,實(shí)時(shí)系統(tǒng)等;

?系統(tǒng)性能的瓶頸,或頻繁被使用子程序或程序段;

?與硬件資源密切相關(guān)的軟件開發(fā),如:設(shè)備驅(qū)動(dòng)程序等;

?受存儲(chǔ)容量限制的應(yīng)用領(lǐng)域,如:家用電器的計(jì)算機(jī)控制功能等;彳

2、不宜使用的領(lǐng)域

■大型軟件的整體開發(fā);

■沒有特殊要求的一般應(yīng)用系統(tǒng)的開發(fā)等。

第工幸預(yù)備知詼

1.2數(shù)據(jù)的表示和類型

用匯編語言進(jìn)行程序設(shè)計(jì)時(shí),程序員可以直接訪問內(nèi)存,對(duì)數(shù)據(jù)在存儲(chǔ)器內(nèi)

的表示形式要有清晰的認(rèn)識(shí)。有關(guān)“數(shù)據(jù)表示”的詳細(xì)內(nèi)容請(qǐng)參閱《計(jì)算機(jī)組

成原理》中的章節(jié)。

1.2.1數(shù)值數(shù)據(jù)的表示

1、二進(jìn)制

二進(jìn)制的表示元素是:。和1。書寫時(shí),在數(shù)據(jù)后面緊跟一個(gè)字母B。如:?

0101B、10101B等。

數(shù)據(jù)的二進(jìn)制寫起來比較長(zhǎng),通常情況下,程序中不直接用二進(jìn)制來書寫具

體的數(shù)值,而改用八進(jìn)制、十進(jìn)制或十六進(jìn)制。

第工幸預(yù)備知詼

2、八進(jìn)制

八進(jìn)制是一種二進(jìn)制的變形,三位二進(jìn)制可變?yōu)橐晃话诉M(jìn)制,反之也然。

八進(jìn)制的表示元素是:0、1、…、7o

書寫時(shí),在數(shù)據(jù)后面緊跟一個(gè)字母Q。如:1234Q、7654Q、54Q等。

3、十進(jìn)制

十進(jìn)制是我們最熟悉的一種數(shù)據(jù)表示形式,其基本元素是:0、1........9O

書寫時(shí),在數(shù)據(jù)后面緊跟一個(gè)字母D。如:1234D、7674D、5411D等。

4、十六進(jìn)制1

十六進(jìn)制是另一種二進(jìn)制的變形,四位二進(jìn)制可變?yōu)橐晃皇M(jìn)制,反之也

然。其基本元素是:0~9、A?F、a-f,其中:A?F依次代表10?15。

書寫時(shí),數(shù)據(jù)后面緊跟一個(gè)字母H。當(dāng)十六進(jìn)制數(shù)的第一個(gè)字符是字母時(shí),

在其之前必須添加一個(gè)'0'。如:100H、56EFH、OFFH、0ABCDH等。

第工幸預(yù)備知詼

1.2.2進(jìn)制在編程環(huán)境中的表示

程序員在用匯編語言進(jìn)行程序設(shè)計(jì)時(shí),需要知道當(dāng)前環(huán)境的數(shù)據(jù)表示符號(hào)。

進(jìn)制字符例子

二進(jìn)制B/Y以1010B、1011B

八進(jìn)制Q/01234Q、311Q

十進(jìn)制D/T1234D、512D

十六進(jìn)制H1234H、1011H

O字符Y、0和T是宏匯編MASM系統(tǒng)所增加的進(jìn)制表示符。

第工幸預(yù)備知詼

1.2.3非數(shù)值數(shù)據(jù)的表示

1、ASCH碼

在ASCII碼表中,對(duì)學(xué)習(xí)本課程有用的主要信息有:

A字符'。'?9是連續(xù)編碼的,其ASCII碼的低4位就是該字符在十進(jìn)制中的數(shù)值;

A小寫字母的ASCII碼比大寫字母的編碼大,對(duì)應(yīng)字母的編碼之間相差20H。

2、漢字編碼

我國(guó)在1981年5月對(duì)6000多個(gè)常用的漢字制定了交換碼的國(guó)家標(biāo)準(zhǔn),即:

GB2312-80o

該標(biāo)準(zhǔn)給定每個(gè)字符的二進(jìn)制編碼,即國(guó)標(biāo)碼。

第工幸預(yù)備知詼

1.2.4基本的數(shù)據(jù)類型

1、字節(jié)

一個(gè)字節(jié)有8位二進(jìn)制組成,其最高位是第7位,最低位是第0位。

通常情況下,存儲(chǔ)器按字節(jié)編址,讀寫存儲(chǔ)器的最小信息單位就是字節(jié)。

2、字

由2個(gè)字節(jié)組成一個(gè)字,其最高位是第15位,最低位是第0位。高8位稱為高

字節(jié),低8位稱為低字節(jié)。

3、雙字高字節(jié)低字節(jié)

用2個(gè)字(4個(gè)字節(jié))來組成一個(gè)雙字,其高16位稱為高字,低16位稱為低字。

雙字有較大的數(shù)據(jù)表示范圍,它通常是為了滿足數(shù)據(jù)的表示范圍而選用的數(shù)

據(jù)類型,也可用于存儲(chǔ)遠(yuǎn)指針。

高手低字

第工幸預(yù)備知詼

4、四字

由4個(gè)字(8個(gè)字節(jié))組成一個(gè)四字類型,它總共有64個(gè)二進(jìn)制位,有更大的數(shù)

據(jù)表示范圍,但在匯編語言中很少使用該數(shù)據(jù)類型。

5、十字節(jié)

由10個(gè)字節(jié)組成一個(gè)十字節(jié)類型,它總共有80個(gè)二進(jìn)制位。在匯編語言中很

少使用該數(shù)據(jù)類型。

6、字符串

字符串是由若干個(gè)字節(jié)組成的,字節(jié)數(shù)不定,通常每個(gè)字節(jié)存儲(chǔ)一個(gè)字符,

該數(shù)據(jù)形式是匯編語言程序中經(jīng)常使用的一種數(shù)據(jù)形式。

匯編語言中沒有C語言中的規(guī)定:以ASCII碼0為字符串的結(jié)束符。

第2幸CPU資源和存儲(chǔ)器

計(jì)算機(jī)的硬件資源是用匯編語言編程所必須要了解的重要內(nèi)容,因?yàn)閰R編語

言允許、也需要程序員直接使用這些硬件資源,只有這樣才能編寫出高效的目■1

標(biāo)代碼。!

2.1寄存器組I

2.1.116位寄存器組|

?4個(gè)數(shù)據(jù)寄存器:AX、BX、CX和DX,每個(gè)寄存器又可分為2個(gè)8位寄存器

?2個(gè)變址寄存器:DI和SI

?2個(gè)指針寄存器:SP和BP

?4個(gè)段寄存器:ES、CS、SS和DS

?1個(gè)標(biāo)志寄存器:FLAG

?1個(gè)指令指針寄存器:IP

第2幸CPU資源和存儲(chǔ)器

2.1.232位寄存器組

32位CPU把通用寄存器、指令指針和標(biāo)志寄存器從16位擴(kuò)充成32位,而且還

增加了2個(gè)16位的段寄存器:FS和GS。如下圖所示。

32位CPU有8個(gè)32位的通用寄存器EAX、EBX、ECX、EDX、ESI、EDI、

ESP和EBP,這些通用寄存器的低16位就是先前CPU中的AX、BX、CX、DX、

SI、DI、SP和BP。對(duì)其低16位數(shù)據(jù)的存取,不會(huì)影響高16位的數(shù)據(jù)。

3116150

指令指針和標(biāo)志寄存器

151410

段寄存器

第2幸CPU資源和存儲(chǔ)器

2.1.3通用寄存器的作用

1.數(shù)據(jù)寄存器

數(shù)據(jù)寄存器主要用來保存操作數(shù)和運(yùn)算結(jié)果等信息,從而節(jié)省讀取操作數(shù)所需

占用總線和訪問存儲(chǔ)器的時(shí)間。

?4個(gè)32位寄存器:EAX、EBX、ECX和EDX

?4個(gè)16位寄存器:AX、BX、CX和DX

?8個(gè)8位寄存器:AH和AL、BH和BL、CH和CL、DH和DL

每個(gè)寄存器都有自己的名稱,可獨(dú)立存取。程序員可利用數(shù)據(jù)寄存器“能分可

合”的特性,靈活地處理雙字、字和字節(jié)等信息。

第2率CPU資源和存儲(chǔ)器

2.變址寄存器(IndexRegister)

寄存器SI和DI稱為變址寄存器,它們可作一般的存儲(chǔ)器指針使用。在字符串操)

作指令的執(zhí)行過程中,對(duì)它們有特定的要求,且具有特殊的功能。

3.指針寄存器(PointerRegister)

寄存器BP和SP稱為指針寄存器,它們主要用于訪問堆棧內(nèi)的存儲(chǔ)單元,并且

規(guī)定:I

?BP為基指針(BasePointer)寄存器,用它可直接存取堆棧中的數(shù)據(jù)

?SP為堆棧指針(StackPointer)寄存器,用它只可訪問棧頂。

第2幸CPU資源和存儲(chǔ)器

表2.1通用寄存器的主要用途

寄存器名稱寄存器符號(hào)主要用途

乘、除、I/O、快速的算術(shù)運(yùn)算,中間結(jié)果

累加器EAX、AX、AL

的緩存

基地址寄存器EBX、BX在數(shù)據(jù)段中作基地址指針

循環(huán)計(jì)數(shù)器、重復(fù)操作計(jì)算器、移位操作

計(jì)數(shù)器ECX、CX、CL

計(jì)數(shù)器

數(shù)據(jù)寄存器EDX、DX字的乘、除運(yùn)算,間接的輸入輸出

源變址寄存器ESI、SI存儲(chǔ)器指針、串指令中的源操作數(shù)指針

源目標(biāo)變址寄存器EDI、DI存儲(chǔ)器指針、串指令中的目的操作數(shù)指針

基地址指針EBP、BP存儲(chǔ)器指針、存取堆棧的指針

棧頂指針ESP、SP堆棧的棧頂指針

第2幸CPU資源和存儲(chǔ)器

2.1.4段寄存器的作用

?CS-----代碼段寄存器(CodeSegmentRegister)

?DS----數(shù)據(jù)段寄存器(DataSegmentRegister)

?SS----堆棧段寄存器(StackSegmentRegister)

?ES----附加段寄存器(ExtraSegmentRegister)

?FS——386CPU增力口段寄存器(ExtraSegmentRegister)

?GS——386CPU增加段寄存器(ExtraSegmentRegister)

有關(guān)寄存器的作用詳細(xì)描述。

第2幸CPU資源和存儲(chǔ)器

24.5專用寄存器的作用

1、指令指針寄存器(InstructionPointer)

指令指針I(yè)P和EIP是16位和32位的寄存器,它們分別位于16位和32位處理器之

中。指令指針寄存器存放著下次將要執(zhí)行的指令在代碼段的偏移量。

在80386及其高檔處理器處于保護(hù)模式時(shí),其指令指針寄存器是32位的EIP。

在實(shí)方式下,由于每個(gè)段的最大范圍就是64K,所以,EIP中的高16位肯定都

為0,相當(dāng)于只用其低16位來反映程序中指令的執(zhí)行次序,這樣,EIP低16位與先

前CPU中的IP作用相同。

2、標(biāo)志寄存器(FlagsRegister)

有關(guān)標(biāo)志位寄存器的詳細(xì)描述。

第2幸CPU資源和存儲(chǔ)器

2.2存儲(chǔ)器的管理模式

2.2.116位微機(jī)的內(nèi)存管理模式

1.存儲(chǔ)器的分段

計(jì)算機(jī)的內(nèi)存單元是以“字節(jié)”為最小單位進(jìn)行線性編址的。為了標(biāo)識(shí)每個(gè)

存儲(chǔ)單元,就給每個(gè)存儲(chǔ)單元規(guī)定一個(gè)編號(hào),此編號(hào)就是該存儲(chǔ)單元的物理地

址。

?四鶴枷螂?花('喇御障觸例雛勵(lì)必須卷瞰段的UUUUOH

倍數(shù),即最低4位二進(jìn)制必須全為0;

■邏輯段的最大容量為64K,這由16位寄存器的尋址空WW0H

間所決定。XXXXDH

按上述規(guī)定,1M內(nèi)存最多可分成64K個(gè)段,即65536個(gè)段.“?出

(段之間相互重疊),至少可分成16個(gè)相互不重疊的段。

第2幸CPU資源和存儲(chǔ)器

2.物理地址的形成方式

存儲(chǔ)單元的邏輯地址分為兩部分:段地址和偏移量。由邏輯地址得到其物理

地址(PA—PhysicalAddress)的計(jì)算方法如下:

物理地址PA=段地址X16+偏移量

計(jì)算存儲(chǔ)單元物理地址的公式可用“左移4位”和“加”運(yùn)算來實(shí)現(xiàn)。

對(duì)物理地址來說,當(dāng)其段地址變化時(shí),只要對(duì)其偏移量進(jìn)行相應(yīng)的調(diào)整就可得

到同一個(gè)物理地址,所以,同一個(gè)物理地址可有多個(gè)邏輯地址。

第2幸CPU資源和存儲(chǔ)器

3、段寄存器的引用

段寄存器是因?yàn)閷?duì)內(nèi)存的分段管理而設(shè)置的。一般情況下,段寄存器及其指針

寄存器的引用關(guān)系方面有如下規(guī)定:

?取指令所用的段寄存器和偏移量一定是用CS和IP;

?堆棧操作所用的段寄存器和偏移量一定是SS和SP;)

?串操作的目標(biāo)操作數(shù)所用的段寄存器和偏移量一定是ES和DI;)

?其它情況,段寄存器除其默認(rèn)段寄存器外,還可以強(qiáng)行改變?yōu)槠渌渭拇嫫鳌?/p>

第2幸CPU資源和存儲(chǔ)器

表2.3段寄存器及其指針寄存器的引用關(guān)系

訪問存儲(chǔ)器方式缺省的段寄存器可選用的段寄存器偏移量

取指令CSIP

堆棧操作SSSP

?般取操作數(shù)DSCS、ES、SS后效地址

源操作數(shù)DSSI

串操作

目標(biāo)操作數(shù)ESDI

使用指針寄存器BPSSCS、DS、ES有效地址

第2率CPU資源和存儲(chǔ)器

1.存儲(chǔ)單元的內(nèi)容

存儲(chǔ)單元中所存放的二進(jìn)制信息稱為該存儲(chǔ)單元的內(nèi)容或值,并且規(guī)定:j

?一個(gè)字節(jié)的內(nèi)容是該字節(jié)單元內(nèi)存放的二進(jìn)制信息;:

?一個(gè)字的內(nèi)容是該字地址所指向的單元及其后繼一個(gè)單元的內(nèi)容拼接而成;(

?一個(gè)雙字的內(nèi)容是該字地址所指向的單元及其后三個(gè)單元的內(nèi)容拼接而成。|

在拼接“字內(nèi)容”時(shí),我們按“高高低低”的原則來處理,即:高存儲(chǔ)單元j

(地址大的存儲(chǔ)單元)的值是“字內(nèi)容”的高8位,低存儲(chǔ)單元(地址小的存儲(chǔ)單;

元)的值是“字內(nèi)容”的低8位。

在拼接“雙字內(nèi)容”時(shí)也是如此。)

第2幸CPU資源和存儲(chǔ)器

下圖是一段內(nèi)存單元存放數(shù)據(jù)的例子。從圖中可看出下列存儲(chǔ)結(jié)果:

?字節(jié)12340H、12341H的內(nèi)容分別為:12H和34H

?字12340H、12341H的內(nèi)容分別為:3412H和5634H

?雙字12340H、12341H的內(nèi)容分別為:78563412H和90785634H

第3幸操作教的尋址方式

微機(jī)系統(tǒng)有七種基本的尋址方式:立即尋址方式、寄存器尋址方式、直接尋

址方式、寄存器間接尋址方式、寄存器相對(duì)尋址方式、基址加變址尋址方式、

相對(duì)基址加變址尋址方式等。其中,后五種尋址方式是確定內(nèi)存單元有效地址

的五種不同的計(jì)算方法,用它們可方便地實(shí)現(xiàn)對(duì)數(shù)組元素的訪問。

另外,在32位微機(jī)系統(tǒng)中,為了擴(kuò)大對(duì)存儲(chǔ)單元的尋址能力,增加了一種新

的尋址方式——32位地址的尋址方式。

第3幸操作教的尋址方式

3.1立即尋址方式

操作數(shù)作為指令的一部分而直接寫在指令中,這種操作數(shù)稱為立即數(shù),這種

尋址方式也就稱為立即數(shù)尋址方式。

立即數(shù)可以是8位、16位或32位數(shù),該數(shù)值緊跟在操作碼之后。如果立即數(shù)為

16位或32位,那么,它將按“高高低低”的原則進(jìn)行存儲(chǔ)。例如:

MOVAH,80HADDAX,1234HMOVECX,123456H

MOVB1,12HMOVW1.3456HADDD1,32123456H

其中:B1、W1和D1分別是字節(jié)、字和雙字單元。

立即數(shù)尋址方式通常用于對(duì)通用寄存器或內(nèi)存單元賦初值。

第3幸操作教的尋址方式

下圖是指令“MOVAX,4576H”的存儲(chǔ)形式和執(zhí)行情況示意圖。

AX

MOVAX.4576H

A76H

指令的存儲(chǔ)形式

45H

第3幸操作教的尋址方式

3.2寄存器尋址方式

指令所要的操作數(shù)已存儲(chǔ)在某寄存器中,或把目標(biāo)操作數(shù)存入寄存器。把在指

令中指出所使用寄存器(即:寄存器的助憶符)的尋址方式稱為寄存器尋址方式。

指令中可以引用的寄存器及其符號(hào)名稱如下:

?8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;

?16位寄存器有:AX、BX、CX、DX、SLDLSP、BP和段寄存器等;

?32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。

寄存器尋址方式是一種簡(jiǎn)單快捷的尋址方式,源和目的操作數(shù)都可以是寄存器。

由于指令所需的操作數(shù)已存儲(chǔ)在寄存器中,或操作的結(jié)果存入寄存器,這樣,

在指令執(zhí)行過程中,會(huì)減少讀/寫存儲(chǔ)器單元的次數(shù)。

通常情況下,我們提倡應(yīng)盡可能地使用寄存器尋址方式,但也不要絕對(duì)化。

第3幸操作教的尋址方式

3.3直接尋址方式

指令所要的操作數(shù)存放在內(nèi)存中,在指令中直接給出該操作數(shù)的有效地址,這

種尋址方式為直接尋址方式。

通常情況下,操作數(shù)存放在數(shù)據(jù)段中,所以,其物理地址將由數(shù)據(jù)段寄存器

DS和指令中給出的有效地址直接形成,但如果使用段超越前綴,那么,操作數(shù)可

存放在其它段。

第3幸操作教的尋址方式

例3.1假設(shè)有指令:MOVBX,[1234H],在執(zhí)行時(shí),(DS)=2000H,內(nèi)存單元

21234H的值為5213H。問該指令執(zhí)行后,BX的值是什么?

解:根據(jù)直接尋址方式的尋址規(guī)則,把該指令的具體執(zhí)行過程如下圖所示。

第3幸操作教的尋址方式

3.4寄存器間接尋址方式

操作數(shù)在存儲(chǔ)器中,操作數(shù)的有效地址用SI、DI、BX和BP等四個(gè)寄存器之一

來指定,稱這種尋址方式為寄存器間接尋址方式。

該尋址方式物理地址的計(jì)算方法如下:

(S如

?S)3)>

PA=?>xl6+<

■9

(BP)[

在不使用段超越前綴的情況下,有下列規(guī)定:

?若有效地址用SI、DI和BX等之一來指定,則其缺省的段寄存器為DS;

?若有效地址用BP來指定,則其缺省的段寄存器為SS(即:堆棧段)。

第3幸操作教的尋址方式

例3.2假設(shè)有指令:MOVBX,[DI],在執(zhí)行時(shí),(DS)=1000H,(DI)=2345H,存

儲(chǔ)單元12345H的內(nèi)容是4354H。問執(zhí)行指令后,BX的值是什么?

解:根據(jù)寄存器間接尋址方式的規(guī)則,在執(zhí)行本例指令時(shí),寄存器DI的值不是操

作數(shù),而是操作數(shù)的地址。該操作數(shù)的物理地址應(yīng)由DS和DI的值形成,即:

PA=(DS)*16+(DI)=1000H*16+2345H=12345H。

該指令的執(zhí)行效果:把從物理地址為12345H開始的一個(gè)字的值傳送給BX。

DS:1000H

?DI:2345H,代碼段

12345H

①I10000H

-L^.12345H

,數(shù)據(jù)段

第3幸操作教的尋址方式

3.5寄存器相對(duì)尋址方式

操作數(shù)在存儲(chǔ)器中,其有效地址是一個(gè)基址寄存器(BX、BP)或變址寄存器(SI、

DI)的內(nèi)容和指令中的8位/16位偏移量之和。

其有效地址的計(jì)算公式如下:

8位1

EA16位j偏移量

⑻)

在不使用段超越前綴的情況下,有下列規(guī)定:

?若有效地址用SI、DI和BX等之一來指定,則其缺省的段寄存器為DS;

?若有效地址用BP來指定,則其缺省的段寄存器為SS(即:堆棧段)。

第3幸操作教的尋址方式

例3.3假設(shè)指令:MOVBX,[SI+100H],在執(zhí)行它時(shí),(DS)=1000H,

(SI)=2345H,內(nèi)存單元12445H的內(nèi)容為2715H,問該指令執(zhí)行后,BX

的值是什么?

解:根據(jù)寄存器相對(duì)尋址方式的規(guī)則,在本指令中的源操作數(shù)的有效地址EA為:

EA=(SI)+100H=2345H+100H=2445H

該操作數(shù)的物理地址應(yīng)由DS和EA的值形成,即:

PA=(DS)*16+EA=1000H*16+2445H=12445H。

該指令的執(zhí)行效果是:把從物理地址為12445H開始的一個(gè)字的值傳送給BX。

第3幸操作教的尋址方式

3.6基址加變址尋址方式

操作數(shù)在存儲(chǔ)器中,其有效地址是一個(gè)基址寄存器(BX、BP)和一個(gè)變址寄存

器(SI、DI)的內(nèi)容之和。

其有效地址的計(jì)算公式如下:

EA“嗎+[叫

在不使用段超越前綴的情況下,有下列規(guī)定:

?若有效地址用SI、DI和BX等之一來指定,則其缺省的段寄存器為DS;

?若有效地址用BP來指定,則其缺省的段寄存器為SS(即:堆棧段)。

第3幸操作教的尋址方式

例3.4假設(shè)指令:MOVBX,[BX+SI],在執(zhí)行時(shí),(DS)=1000H,(BX)=2100H,

(SI)=0011H,內(nèi)存單元12111H的內(nèi)容為1234H。問指令執(zhí)行后,BX的值

是什么?/

解:根據(jù)基址加變址尋址方式的規(guī)則,在本指令的源操作數(shù)的有效地址EA為:

EA=(BX)+(SI)=2100H+0011H=2111H

該操作數(shù)的物理地址應(yīng)由DS和EA的值形成,即:

PA=(DS)*16+EA=1000H*16+2111H=12111H

該指令的執(zhí)行效果是:把從物理地址為12111H開始的一個(gè)字的值傳送給BX。

BX:2100H

*SI:0011H_

-------------------①

EA:2111H

*DS:1000H

,代碼段

PA:12111H

BX1234

②I10000H

34H

12H

第3幸操作教的尋址方式

3.7相對(duì)基址加變址尋址方式

操作數(shù)在存儲(chǔ)器中,其有效地址是一個(gè)基址寄存器(BX、BP)的值、一個(gè)變址

寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。

其有效地址的計(jì)算公式如下:

EA=.X)M網(wǎng)偏移量

I(BP)J[(DI)J116位J

在不使用段超越前綴的情況下,有下列規(guī)定:

?若有效地址用SI、DI和BX等之一來指定,則其缺省的段寄存器為DS;

?若有效地址用BP來指定,則其缺省的段寄存器為SS(即:堆棧段)。

第3幸操作教的尋址方式

例3.5假設(shè)指令:MOVAX,[BX+SI+200H],在執(zhí)行時(shí),(DS)=1000H,(BX)=

2100H,(SI)=0010H,內(nèi)存單元12310H的內(nèi)容為1234H。問指令執(zhí)行后,

AX的值是什么?

解:根據(jù)相對(duì)基址加變址尋址方式的規(guī)則,本指令中源操作數(shù)的有效地址EA為:I

EA=(BX)+(SI)+200H=2100H+0010H+200H=2310H

該操作數(shù)的物理地址應(yīng)由DS和EA的值形成,即:

PA=(DS)*16+EA=1000H*16+2310H=12310H

該指令的執(zhí)行效果是:把從物理地址為12310H開始的一個(gè)字的值傳送給AX。

BX:2100H

SI:0010H

+0200H_

-------------------①

EA:2310H

OP

DS:1000H-代碼段

AX12310H

②10000H

12310H

34H-數(shù)據(jù)段

.12H

第3幸操作教的尋址方式

相對(duì)基址加變址尋址方式有多種等價(jià)的書寫方式,書寫格式:

[BX+SI+1000H]>1000H[BX+SI]>1000H[BX][SI]和1000H[SI][BX]等格式都是

正確的,并且其尋址含義也是一致的,

但格式:BX[1000H+SI].SI[1000H+BX]等是錯(cuò)誤的,即所用寄存器不能

在之外,該限制對(duì)寄存器相對(duì)尋址方式的書寫也同樣起作用。

第3幸操作教的尋址方式

相對(duì)基址加變址尋址方式與其它尋址方式之間的變形關(guān)系

源操作數(shù)指令的變形源操作數(shù)的尋址方式

只有,個(gè)偏移量MOVAX,[100H]直接尋址方式

只有一個(gè)寄存器MOVAX,[BX]或寄存器間接尋址方式

MOVAX,[SI]

有?個(gè)寄存器和偏移量MOVAX,[BX+100H]或寄存器相對(duì)尋址方式

MOVAX,[SI+100H]

有二個(gè)寄存器MOVAX,[BX+SI]基址加變址尋址方式

有一個(gè)寄存器和常數(shù)項(xiàng)MOVAX,[BX+SI+100H]相對(duì)基址加變址尋址方式

第3幸操作教的尋址方式

3.832位地址的尋址方式

在32位微機(jī)系統(tǒng)中,除了支持前面的七種尋址方式外,又提供了一種更靈活、;

方便,但也更復(fù)雜的內(nèi)存尋址方式。

用16位寄存器來訪問存儲(chǔ)單元時(shí),只能使用基地址和變址寄存器來作為地址偏

移量的一部分,但在用32位寄存器尋址時(shí),不存在上述限制,所有32位寄存器

(EAX、EBX、ECX、EDX、ESkEDkEBP和ESP)者B可以是地址偏移量的一個(gè)

組成部分。)

當(dāng)用32位地址偏移量進(jìn)行尋址時(shí),內(nèi)存地址的偏移量可分為三部分:一個(gè)32位!

基址寄存器,一個(gè)可乘1、2、4或8的32位變址寄存器,一個(gè)8位/32位的偏移常量,

并且這三部分還可進(jìn)行任意組合,省去其中之一或之二。)

基址寄存器是:EAX、EBX、ECX、EDX、ESkEDkEBP和ESP;

變址寄存器是:EAX、EBX、ECX、EDX、ESkEDI和EBP(除ESP之外)。

第3幸操作教的尋址方式

用32位地址偏移量進(jìn)行尋址的有效地址計(jì)算公式歸納如下:

無、

f「無■

EAX

EAX

EBX

EBX

ECX?無一

ECX

EA=<EDX>+EDX卜?8位■

ESI?32位?

ESI

EDI

EDI

EBP

〔EBP」

IESP〉

基址變址比例偏移

寄存器寄存器因子常量

MOVAX,[123456H]MOVEAX,[EBX]

MOVEBX,[ECX*2]MOVEBX,[EAX+100H]

MOVEDX,[EAX*4+200H]MOVEBX,[EAX+EDX*2]

MOVEBX,[EAX+EDX*2+300H]MOVAX,[ESP]

第3幸操作教的尋址方式

由于32位尋址方式能使用所有的通用寄存器,和該有效地址相組合的段寄存器

也就有新的規(guī)定。具體規(guī)定如下:

1、地址中寄存器的書寫順序決定該寄存器是基址寄存器,還是變址寄存器;如:

[EBX+EBP]中的EBX是基址寄存器,EBP是變址寄存器,而[EBP+EBX]中的

EBP是基址寄存器,EBX是變址寄存器;

2、默認(rèn)段寄存器的選用取決于基址寄存器;1

3、基址寄存器是EBP或ESP時(shí),默認(rèn)段寄存器是SS,否則,默認(rèn)段寄存器是DS;1

4、在指令中,如果使用段前綴的方式,那么,顯式段寄存器優(yōu)先。

第3幸操作教的尋址方式

F面列舉幾個(gè)32位地址尋址指令及其內(nèi)存操作數(shù)的段寄存器。

MOVAX,[123456H];默認(rèn)段寄存器DS

MOVEAX,[EBX+EBP];默認(rèn)段寄存器DS

MOVEBX,[EBP+EBX];默認(rèn)段寄存器SS

MOVEBX,[EAX+100H];默認(rèn)段寄存器DS

MOVEDX,ES:[EAX*4+200H];顯式段寄存器ES

MOV[ESP+EDX*2],AX;默認(rèn)段寄存器SS

MOVEBX,GS:[EAX+EDX*2+300H];顯式段寄存器GS

MOVAX,[ESP];默認(rèn)段寄存器SS

第4章標(biāo)詼符和表達(dá)式

標(biāo)識(shí)符和表達(dá)式是程序設(shè)計(jì)經(jīng)常用到的兩個(gè)基本概念。

4.1標(biāo)識(shí)符I

在匯編語言中,標(biāo)識(shí)符最多由31個(gè)字母、數(shù)字及規(guī)定的特殊字符(?、@、_、(

$)等組成,但它不能用數(shù)字開頭。)

標(biāo)號(hào)、內(nèi)存變量名、子程序名和宏名等都是標(biāo)識(shí)符。通常情況下,匯編語言不

區(qū)分標(biāo)識(shí)符中字母的大小寫。

和高級(jí)語言的變量名一樣,一般要求標(biāo)識(shí)符盡可能取得有點(diǎn)含義,這會(huì)有助于I

對(duì)程序的理解。)

第4章標(biāo)詼符和表達(dá)式

標(biāo)識(shí)符不能是匯編語言的保留字,匯編語言的保留字主要是指:指令助憶符、

偽指令定義符、寄存器名以及一些具有特殊含義的字符串等。

例如:MSG1、ERRMSG2、ASC1、asc2等是合法的標(biāo)識(shí)符,而1a、ah、

mov等就不是標(biāo)識(shí)符。

試比較ABCDH和0ABCDH之間的差異。前者是標(biāo)識(shí)符,而后者是十六進(jìn)制數(shù)

值。

第4章標(biāo)詼符和表達(dá)式

4.2簡(jiǎn)單內(nèi)存變量的定義

在高級(jí)語言程序中,要給存儲(chǔ)單元取一個(gè)符號(hào)名,然后通過引用該符號(hào)名來訪

問其所對(duì)應(yīng)的存儲(chǔ)單元。

在匯編語言程序中要靈活一些,它可以給存儲(chǔ)單元取符號(hào)名,也可以不取符號(hào)

名。

當(dāng)給存儲(chǔ)單元取符號(hào)名時(shí),則可通過該符號(hào)名來訪問其對(duì)應(yīng)的存儲(chǔ)單元;

當(dāng)不給存儲(chǔ)單元取符號(hào)名時(shí).,則可通過存儲(chǔ)單元的偏移量(有效地址)來訪問它。

第4章標(biāo)詼符和表達(dá)式

4.2.1內(nèi)存變量定義的一般形式

定義內(nèi)存變量語句是程序中經(jīng)常使用的偽指令語句,其一般格式如下:J

[變量名]數(shù)據(jù)定義符表達(dá)式兀表達(dá)式2,…,表達(dá)式n][;注釋];

該定義格式的主要解釋如下:I

?變量名必須是一個(gè)合法的標(biāo)識(shí)符,它可以寫,也可以不寫;

?數(shù)據(jù)定義符用于確定內(nèi)存單元的數(shù)據(jù)類型,常用定義符有:DB、DW和DD等;J

?表達(dá)式是定義內(nèi)存單元時(shí)的初值表達(dá)式,一個(gè)定義語句可以有多個(gè)初值表達(dá)式,1

各表達(dá)式之間必須用逗號(hào)分開;如果某個(gè)存儲(chǔ)單元沒有初值表達(dá)式,則必須用/

一個(gè)問號(hào)‘?'來表示;';:

?在定義語句的后面可以書寫注釋內(nèi)容,也可以不寫。

第4章標(biāo)詼符和表達(dá)式

在定義變量時(shí),雖然可以不寫變量名,但我們建議還是要寫,因?yàn)椴粚懽兞棵?

就意味著只能用內(nèi)存單元的偏移量來訪問它。

這時(shí),一旦內(nèi)存單元的偏移量發(fā)生變化,那么程序中所有引用都要修改。這不

僅增加了程序維護(hù)的工作量,而且也容易因遺漏修改而出錯(cuò)。

第4章標(biāo)詼符和表達(dá)式

4.2.2字節(jié)變量

字節(jié)變量的定義符為DB/BYTE(DefineByte)(*),每個(gè)字節(jié)變量只占一個(gè)字節(jié)

單元。

例如:

COUNTERDB6

DBA,D,ODh,$

TABLEDB1,3,5,7,9,11

0641440D2401030507090B

t

COUNTERTABLE

(*)BYTE是MASM6.0及其以后版本的數(shù)據(jù)類型說明符,隨后的其它類型說明符

同此說明。

第4章標(biāo)詼符和表達(dá)式

用定義符DB還可定義一種特殊的數(shù)據(jù)形式——字符串。

在定義字符串時(shí),必須用成對(duì)的單引號(hào)或雙引號(hào)把所要的字符括起來,括號(hào)內(nèi)

字符的ASCII碼將依次存放在相應(yīng)的字節(jié)單元內(nèi)。例如:

MSG1DB1amastudent.,

46664644

'I't'ttJ

94a'm)6a)s)5u)d'e)n)

上面的例子也可改寫為另一種等價(jià)的語句:

MSG1DB'I',''a','m','匕','','s','t','u','d','e','n',

顯然,前者要比后者方便得多,所以,在程序中都采用前者的書寫方式。

第4章標(biāo)詼符和表達(dá)式

4.2.3字變量

字變量的定義符為DW/WORD(DefineWord),每個(gè)字變量占兩個(gè)連續(xù)的字節(jié)

單元。

例如:

WordlDW89H,1909H,-1

DWOabcdH,?,0

...89000919FFFFCDAB---0000...

由于字變量的數(shù)據(jù)是按照“高高低低”的原則存于存儲(chǔ)單元之中的,而字節(jié)

數(shù)據(jù)是按照排列順序存于存儲(chǔ)單元中的,所以,它們的存儲(chǔ)方式有所不同。

第4章標(biāo)詼符和表達(dá)式

試比較下面兩個(gè)定義的存儲(chǔ)順序。

B1DB'AB'

W1DW'AB'

其中:41H和42H分別是'A'和B的ASCII碼。

41424241

第4章標(biāo)詼符和表達(dá)式

4.2.4雙字變量

雙字變量的定義符為DD/DWORD(DefineDoubleword),每個(gè)雙字變量占用

二個(gè)連續(xù)的字單元(四個(gè)字節(jié))。

例如:

DD1DD12345678H,?

DD2DD0abcd1243H

上述定義的內(nèi)存分配如下所示,雙字的內(nèi)容也是按“高高低低”的原則來存儲(chǔ)

的。

785634124312CDAB

第4章標(biāo)詼符和表達(dá)式

4.2.5六字節(jié)變量

六字節(jié)變量的定義符為DF/FWORD(DefineFarword)每個(gè)六字節(jié)變量占用六

個(gè)連續(xù)的字節(jié)。o!

例如:(

DF1DF1234567890abH,0H,-1

DF1abcd23H1

第一個(gè)六字節(jié)常量1234567890abH在內(nèi)存中的分配方式如下所示,它也是按

“高高低低”的原則來存儲(chǔ)的。其它六字節(jié)常量的存儲(chǔ)方式與此一致?!?/p>

ab9078563412

第4章標(biāo)詼符和表達(dá)式

4.2.6八字節(jié)變量

八字節(jié)變量的定義符為DQ/QWORD(DefineQuadword)o每個(gè)八字節(jié)變量占用

八個(gè)連續(xù)的字節(jié)。

例如:

DQ1DQ12345678H,0H,-1234H

DQ?,1238H,?

第一個(gè)八字節(jié)常量12345678H在內(nèi)存中的分配方式如下所示,其存儲(chǔ)原則與

前面相同。其它八字節(jié)常量的存儲(chǔ)方式與此一致。

7856341200000000

第4章標(biāo)詼符和表達(dá)式

427十字節(jié)變量

定義十字節(jié)變量的定義符為DT/TBYTE(DefineTenbytes)0每個(gè)十字節(jié)變量占

用十個(gè)連續(xù)的字節(jié)。

例如:

DT1DT12345678H,?

DT2DT?,-1H

第一個(gè)十字節(jié)常量12345678H在內(nèi)存中的分配方式如下所示,它同樣按“高

高低低”的原則來存儲(chǔ)。其它十字節(jié)常量的存儲(chǔ)方式與此一致。

78563412000000000000

第4章標(biāo)詼符和表達(dá)式

4.3調(diào)整偏移量偽指令

調(diào)整偏移量偽指令是在內(nèi)存變量定義時(shí)用來調(diào)整內(nèi)存變量起始偏移量的,它們

是在把源程序匯編成目標(biāo)文件時(shí)起作用。

常用的調(diào)整偏移量偽指令有:EVEN、ALIGN和ORG。

4.3.1偶對(duì)齊偽指令EVEN

偶對(duì)齊偽指令格式:

EVEN

偽指令的作用是:告訴匯編程序(Assember),本偽指令下面的內(nèi)存變量從下

一個(gè)偶地址單元開始分配。

如果下一個(gè)偏移量是偶地址,那么,該偽指令不起作用;否則,匯編程序?qū)⒖?/p>

出一個(gè)字節(jié),從下一偶地址開始為其后變量分配內(nèi)存單元。

第4章標(biāo)詼符和表達(dá)式

假設(shè)有下列變量定義,并且變量B1的偏移量是偶數(shù)。

B1DB12H;為了表示方便,不妨再假設(shè)其偏移量為:xxxxOH

W1DW4567H

可把前面的變量定義改變成下列形式:

B1DB12H

EVEN

W1DW4567H

xxxxOH

xxxxOh-B1

xxxxlh

-W1xxxx2H

讀出字:

454567H

第4章標(biāo)詼符和表達(dá)式

4.3.2對(duì)齊偽指令A(yù)LIGN

對(duì)齊偽指令格式:

ALIGNNum

其中:Num必須是2的幕,如:2、4、8和16等。

偽指令的作用是:告訴匯編程序,本偽指令下面的內(nèi)存變量必須從下一個(gè)能被

Num整除的地址開始分配。

?如果下一個(gè)地址正好能被Num整除,那么,該偽指令不起作用;

?否則,匯編程序?qū)⒖粘鋈舾蓚€(gè)字節(jié),直到下一個(gè)地址能被Num整除為止。

試比較下面二組變量定義,它們的對(duì)齊效果一致嗎?

B1DB12HB1DB12H

EVENALIGN2

W1DW4567HW1DW4567H

第4章標(biāo)詼符和表達(dá)式

4.3.3調(diào)整偏移量偽指令ORG

調(diào)整偏移量偽指令格式::

ORG數(shù)值表達(dá)式|

偽指令的作用是:告訴匯編程序,本偽指令下面的內(nèi)存變量從該“數(shù)值表達(dá)式*

所指定的偏移量開始分配。

假設(shè)有下列變量定義,且變量wordl的偏移量土八

wordlDW1234h

bytelDB56hwordl

word2DWOabcdhbyte1->S

ORG1word3I

7

byte2DBword2

word3DW7byte3,

byte3DB?

第4章標(biāo)詼符和表達(dá)式

4.3.4偏移量計(jì)數(shù)器的值

匯編語言提供了一個(gè)特殊的符號(hào)“$”來引用偏移量計(jì)數(shù)器的值。

例如:

W1DW$,$

ORG$+3;從當(dāng)前地址開始空3個(gè)字節(jié)

B1DB43h

假設(shè):在給變量W1分配內(nèi)存單元時(shí),當(dāng)前偏移量計(jì)數(shù)字變量W1

器的值為2。

空出3個(gè)字節(jié)

字節(jié)變量B1

第4章標(biāo)詼符和表達(dá)式

4.4復(fù)合內(nèi)存變量的定義

4.4.1重復(fù)說明符DUP

匯編語言提供了變量的重復(fù)說明符DUP,其說明的一般形式如下:

countDUP(表達(dá)式,表達(dá)式,…,表達(dá)式)

解釋:count是重復(fù)次數(shù),(表達(dá)式,表達(dá)式,…,表達(dá)式)是被重復(fù)的部分,“表

達(dá)式”可以是存儲(chǔ)單元的初值,也可以是含義另一個(gè)DUP的式子。如果在表達(dá)式

的括號(hào)中有多個(gè)表達(dá)式,那么,它們之間要用逗號(hào)','分開。

例如:

BUFFERDB100DUP(?)

STRINGDB120DUP('ABODE'),0

DA7A1DW50DUP(10H,20DUP(1,2,3),20H)

POINTSDD12,30DUP(0)

第4章標(biāo)詼符和表達(dá)式

4.4.2結(jié)構(gòu)類型的定義

1、結(jié)構(gòu)類型的定義

用STRUC和ENDS可以把一系列數(shù)據(jù)定義語句括起來作為一種新的、用戶定

義的結(jié)構(gòu)類型。其一般說明格式如下:

結(jié)構(gòu)名STRUC[Alignment][,NONUNIQUE]

數(shù)據(jù)定義語句序列

結(jié)構(gòu)名ENDS

解釋:結(jié)構(gòu)名是一個(gè)合法的標(biāo)識(shí)符,且具有唯一性。結(jié)構(gòu)名代表整個(gè)結(jié)構(gòu)類型,

前后兩個(gè)結(jié)構(gòu)名必須一致。結(jié)構(gòu)內(nèi)被定義的變量為結(jié)構(gòu)字段,變量名即為字段名。

一個(gè)結(jié)構(gòu)中允許含有任意多個(gè)字段,各字段的類型和所占字節(jié)數(shù)也都可任意。

如果字段有字段名,則字段名必須唯一。每個(gè)字段可獨(dú)立存取。

第4章標(biāo)詼符和表達(dá)式

?對(duì)齊方式(Alignment):可用1、2或4來指定結(jié)構(gòu)中字段的字節(jié)邊界(Byte

boundary),其缺省值為1。

?NONUNIQUE:要求結(jié)構(gòu)中的字段必須用全名才能訪問,見本小節(jié)中的“結(jié)

構(gòu)類型字段的引用”。

例如:

COURSESTRUC

NODD?

CNAMEDB'Assember'

SCOREDW0

COURSEENDS

Assember

II]

NOCNAMESCORE

第4章標(biāo)詼符和表達(dá)式

結(jié)構(gòu)中的字段可以有字段名,也可以沒有字段名。有字段名的字段可直接用該

字段名來訪問它,沒有字段名的字段可以用該字段在結(jié)構(gòu)中的偏移量來訪問。

例如:

PEASONSTRUC

NODD?;偏移量為0

NAMEDB10dup(?);偏移量為4

DB1;偏移量為14

PEASONENDS

在結(jié)構(gòu)PEASON中,有二個(gè)字段有字段名,一個(gè)字段沒有字段名,但不管有

無字段名,我們都可用其偏移量來訪問它。

第4章標(biāo)詼符和表達(dá)式

2、結(jié)構(gòu)類型變量的定義

在定義某個(gè)結(jié)構(gòu)類型后,程序員就可以說明該結(jié)構(gòu)類型的內(nèi)存變量。它的說明)

形式與前面介紹的簡(jiǎn)單數(shù)據(jù)類型的變量說明基本上相一致。其說明格式如下:I

[變量名]結(jié)構(gòu)名v[字段值表卜I

解釋:1

?變量名即為該結(jié)構(gòu)類型的變量名,它可省缺。如果省缺,則不能用符號(hào)名來訪;

問該內(nèi)存單元;(

?字段值表是給字段賦初值,中間用逗號(hào)','分開,其字段值的排列順序及類,

型應(yīng)與該結(jié)構(gòu)說明時(shí)各字段相一致;I

?如果結(jié)構(gòu)變量中某字段用其定義時(shí)的缺省值,那么,可用逗號(hào)來表示;如果所

有字段都如此,則可省去字段值表,但必須保留尖括號(hào)“<”、O

第4章標(biāo)詼符和表達(dá)式

例如:

C0URSE1COURSE<>;使用缺省的初值

COURSE<1,Pascal',60>

COURSE3COURSE<2,,84>;使用缺省的課程名

PEASON1PEASON<1000,'張三',34>

3、結(jié)構(gòu)類型字段的引用

定義了結(jié)構(gòu)類型的變量后,若要訪問其結(jié)構(gòu)中的某字段,則可采用如下形式:

結(jié)構(gòu)變量名.字段名

該引用方式與高級(jí)語言的字段引用方式完全一致。

我們還可用偏移量來訪問其中的某個(gè)字段,但此方法不直觀,變動(dòng)性大,所以,

一般情況下,不提倡使用此方法。

第4章標(biāo)詼符和表達(dá)式

例如:

EXAM1STRUC

F1DW?

F2DB?

EVEN;偶對(duì)齊

F3DW?

EXAM1ENDS

E1EXAM1<1234H,'A),8765H>定義EXA

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論