• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 79  文章 - 58  trackbacks - 0
            <2008年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(9)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊(cè)

            搜索

            •  

            積分與排名

            • 積分 - 296544
            • 排名 - 88

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            (1)存儲(chǔ)模型說(shuō)明偽指令

            在使用簡(jiǎn)化的段定義方式之前,必須使用存儲(chǔ)模式說(shuō)明偽指令來(lái)描述源程序所采用的存儲(chǔ)模式。該偽指令說(shuō)程序所使用的存儲(chǔ)模式,匯編程序?qū)⒂迷摯鎯?chǔ)模式生成相應(yīng)的ASSUME和GROUP語(yǔ)句,同時(shí)也為其它的簡(jiǎn)化段創(chuàng)建等價(jià)的預(yù)定義。

            程序存儲(chǔ)模式說(shuō)明偽指令的格式如下:

            .MODEL  存儲(chǔ)模式[,語(yǔ)言類型] [,操作系統(tǒng)類型] [,堆棧類型]

            程序可選的存儲(chǔ)模式有:TINY、SMALL、COMPACT、MEDIUM、LARGE、HUGE和FLAT。

            偽指令.MODEL必須寫在源程序的首部,且只能出現(xiàn)一次,其前內(nèi)容只能是注釋。

            如果用偽指令來(lái)指定程序所遵循的語(yǔ)言類型,那么,將不允許子程序的嵌套定義。

            一、存儲(chǔ)模式

            如果要用匯編語(yǔ)言編寫被高級(jí)語(yǔ)言調(diào)用的子程序,那么,該匯編程序的存儲(chǔ)模式必須與該高級(jí)語(yǔ)言編譯(或解釋)程序所使用的存儲(chǔ)模式相匹配。匯編語(yǔ)言程序所能使用的存儲(chǔ)模式、符號(hào)及其相關(guān)信息如表6.2所列。

            在程序中,還可偽指令OPTION SEGMENT和SEGMENT來(lái)指定段的規(guī)模。

            有關(guān)存儲(chǔ)模式的具體規(guī)定如下:

            、TINY

            在匯編程序MASM 6.11和TASM 4.0,該存儲(chǔ)類型是為編寫COM文件類型而設(shè)置的。程序員還可用匯編命令行選項(xiàng)/AT和連接命令選項(xiàng)/TINY來(lái)達(dá)到此目的。

            、SMALL

            所有的數(shù)據(jù)變量必須在一個(gè)數(shù)據(jù)段之內(nèi),所有的代碼也必須在一個(gè)代碼段之內(nèi)。在這種模型下,數(shù)據(jù)段寄存器的內(nèi)容保持不變,所有轉(zhuǎn)移也都是段內(nèi)轉(zhuǎn)移。

            該存儲(chǔ)類型是獨(dú)立匯編語(yǔ)言源程序常用的存儲(chǔ)模型。

            、MEDIUM

            所有的數(shù)據(jù)變量必須在一個(gè)數(shù)據(jù)段之內(nèi),但代碼段可以有多個(gè)。在這種模型下,數(shù)據(jù)段寄存器的內(nèi)容保持不變,轉(zhuǎn)移可以是段間轉(zhuǎn)移。

            、COMPACT

            數(shù)據(jù)段可以有多個(gè),但代碼段只能有一。

            、LARGE

            數(shù)據(jù)段和代碼段都可以有多個(gè),但一個(gè)數(shù)組的字節(jié)數(shù)不能超過(guò)64KB。

            、HUGE

            數(shù)據(jù)段和代碼段都可以有多個(gè),一個(gè)數(shù)組的字節(jié)數(shù)也可以超過(guò)64KB。

            、FLAT

            FLAT存儲(chǔ)模式在創(chuàng)建執(zhí)行文件時(shí),將使該程序僅含一個(gè)包括程序數(shù)據(jù)和代碼的32位段,并且只能在80386及其以后的計(jì)算機(jī)系統(tǒng)中運(yùn)行。該程序的文件類型為EXE。

            在使用該存儲(chǔ)模式之前,必須先用偽指令.386、.486或其它偽指令來(lái)說(shuō)明更高性能的CPU類型。也就是說(shuō):FLAT模式僅在386及其以后CPU模式下才能使用。

            在該程序中,所有代碼和數(shù)據(jù)位距的缺省值都是NEAR,子程序的類型也是NEAR,并且標(biāo)識(shí)符@CodeSize,@DataSize和@Model的值分別為:0、0和7。

            在FLAT存儲(chǔ)模式下,程序?qū)⒉皇褂枚渭拇嫫鱂S和GS。匯編程序在處理說(shuō)明語(yǔ)句“.MODEL  FLAT”時(shí),將自動(dòng)生成下列段寄存器說(shuō)明語(yǔ)句:

            ASSUME  CS:FLAT, DS:FLAT, SS:FLAT, ES:FLAT, FS:ERROR, GS:ERROR

            當(dāng)然,程序員也可把該段寄存器說(shuō)明語(yǔ)句寫在其指令序列之中。

            二、語(yǔ)言類型

               如C。

            三、操作系統(tǒng)類型

            OS_DOS是當(dāng)前唯一支持的選項(xiàng)值,也是該選項(xiàng)的缺省值。

            四、堆棧類型

            堆棧類型的值主要影響偽指令.STARTUP所生成的指令序列。該選項(xiàng)有二個(gè)可選值:NEARSTACK和FARSTACK。其中:NEARSTACK是該選項(xiàng)的缺省堆棧類型。

            、NEARSTACK——堆棧段和數(shù)據(jù)段是同一段;

            、FARSTACK——堆棧段和數(shù)據(jù)段是不同的段,且堆棧不在段組DGROUP中。

            例如:

            .MODEL  SMALL, C, OS_DOS, FARSTACK

            (2)具體的偽指令說(shuō)明形式及其功能描述如下:

            1、代碼段定義

            .CODE

            作用:說(shuō)明其下面的內(nèi)容是代碼段中內(nèi)容。

            2、堆棧段定義

            .STACK  [堆棧字節(jié)數(shù)]

            其中,“堆棧字節(jié)數(shù)”可以不寫,其缺省值為1024B。

            3、數(shù)據(jù)段定義

            .DATA / .DATA? / .CONST

            作用:說(shuō)明其下面的內(nèi)容是數(shù)據(jù)段中的變量定義。

            在一個(gè)源程序中,可以有多個(gè)偽指令.DATA定義的數(shù)據(jù)段,這就好象在源程序中定義多個(gè)同段名的數(shù)據(jù)段一樣。

            偽指令.DATA?說(shuō)明下面是一個(gè)未初始化數(shù)據(jù)段的開始,偽指令.CONST說(shuō)明下面是一個(gè)常數(shù)數(shù)據(jù)段的開始。這二條偽指令很少使用,除非在與高級(jí)語(yǔ)言編寫的程序相結(jié)合時(shí),為了遵守高級(jí)語(yǔ)言的某些約定,而需要特殊說(shuō)明時(shí)才使用。

            匯編程序在處理簡(jiǎn)化的堆棧段和數(shù)據(jù)段定義時(shí),它會(huì)自動(dòng)地把偽指令.STACK、.DATA、.DATA?和.CONST所定義的段組合成一個(gè)段組。如果想定義一個(gè)獨(dú)立的、不與其它段組合在一起的數(shù)據(jù)段的話,那么,就可選用下面的數(shù)據(jù)段定義方式。

            4、遠(yuǎn)程數(shù)據(jù)段定義

            .FARDATA  [段名] / .FARDATA?  [段名]

            其中:“段名”是可選項(xiàng),如果不指定的話,則該段名就取其缺省段名。

            作用:說(shuō)明一個(gè)獨(dú)立的數(shù)據(jù)段。

            偽指令.FARDATA?說(shuō)明下面是一個(gè)未初始化的、獨(dú)立數(shù)據(jù)段的開始。

            posted on 2007-07-16 20:46 merlinfang 閱讀(2376) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 匯編語(yǔ)言
            国产精品久久网| 中文字幕久久欲求不满| 性高湖久久久久久久久| 日韩精品久久久久久| 99久久精品九九亚洲精品| 久久九九兔免费精品6| 久久久亚洲欧洲日产国码二区| 99久久精品免费国产大片| 中文字幕久久波多野结衣av| 色综合久久最新中文字幕| A狠狠久久蜜臀婷色中文网| 久久精品国产久精国产果冻传媒| 久久精品成人一区二区三区| 久久人妻少妇嫩草AV无码专区| 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲国产精品久久久久久| 亚洲精品视频久久久| 亚洲性久久久影院| 中文字幕久久精品| 久久婷婷五月综合国产尤物app | 亚洲精品无码专区久久同性男| 久久WWW免费人成—看片| 久久久久18| 久久精品国产亚洲av影院| 狠狠色丁香婷综合久久| 久久久久亚洲精品中文字幕| 伊人久久大香线蕉无码麻豆| 久久99国产综合精品免费| 日本加勒比久久精品| 欧美亚洲另类久久综合| 久久热这里只有精品在线观看| www.久久热.com| 中文字幕久久波多野结衣av| 色综合久久久久| 精品久久人人妻人人做精品 | 国内精品九九久久久精品| 国产精品99久久久精品无码| 91麻精品国产91久久久久| 精品久久久久一区二区三区| 一本久久a久久精品综合夜夜 | 精品永久久福利一区二区 |