第4講 變量定義及常用偽指令2_第1頁
第4講 變量定義及常用偽指令2_第2頁
第4講 變量定義及常用偽指令2_第3頁
第4講 變量定義及常用偽指令2_第4頁
第4講 變量定義及常用偽指令2_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、成功學(xué)院信工系成功學(xué)院信工系 張莉張莉第第4講講 變量定義及常用偽指令變量定義及常用偽指令熟悉常數(shù)的分類及其正確的表示方法熟悉常數(shù)的分類及其正確的表示方法了解表達(dá)式中涉及到的運(yùn)算符的功能作用了解表達(dá)式中涉及到的運(yùn)算符的功能作用掌握變量定義偽指令掌握變量定義偽指令DB/DW,理解變量在內(nèi)存存儲,理解變量在內(nèi)存存儲空間中的分布空間中的分布掌握掌握OFFSET、SEG、PTR、$偽指令,了解其他常偽指令,了解其他常用地址操作符和類型操作符用地址操作符和類型操作符掌握字符串的輸入輸出方法掌握字符串的輸入輸出方法成功學(xué)院信工系成功學(xué)院信工系 張莉張莉第第4講講 變量定義及常用偽指令變量定義及常用偽指令硬

2、指令和偽指令硬指令和偽指令n硬指令硬指令使使CPU產(chǎn)生動作、并在程序執(zhí)行時才處理的產(chǎn)生動作、并在程序執(zhí)行時才處理的語句,如語句,如mov、add等等n偽指令偽指令(Directive)不產(chǎn)生不產(chǎn)生CPU動作、在程序執(zhí)動作、在程序執(zhí)行前由匯編程序處理的說明性語句,例如,數(shù)據(jù)說明、行前由匯編程序處理的說明性語句,例如,數(shù)據(jù)說明、變量定義等等變量定義等等n偽指令與具體的處理器類型無關(guān),但與匯編程序的版本偽指令與具體的處理器類型無關(guān),但與匯編程序的版本有關(guān)有關(guān) 本課程采用微軟宏匯編程序本課程采用微軟宏匯編程序 MASM 6.15成功學(xué)院信工系成功學(xué)院信工系 張莉張莉匯編語言程序的語句格式匯編語言程序的

3、語句格式 執(zhí)行性語句執(zhí)行性語句由硬指令構(gòu)成的語句,它通常對應(yīng)由硬指令構(gòu)成的語句,它通常對應(yīng)一條機(jī)器指令,出現(xiàn)在程序的代碼段中:一條機(jī)器指令,出現(xiàn)在程序的代碼段中:標(biāo)號標(biāo)號: 硬指令助記符硬指令助記符 操作數(shù)操作數(shù),操作數(shù)操作數(shù);注釋;注釋 說明性語句說明性語句由偽指令構(gòu)成的語句,它通常指示由偽指令構(gòu)成的語句,它通常指示匯編程序如何匯編源程序:匯編程序如何匯編源程序:名字名字 偽指令助記符偽指令助記符 參數(shù)參數(shù),參數(shù)參數(shù),;注釋;注釋標(biāo)號標(biāo)號是反映硬指令位置(邏輯地址)的標(biāo)識符,是反映硬指令位置(邏輯地址)的標(biāo)識符,后跟一個冒號分隔后跟一個冒號分隔名字名字是反映偽指令位置(邏輯地址)和屬性的標(biāo)識

4、符,是反映偽指令位置(邏輯地址)和屬性的標(biāo)識符,后跟空格或制表符分隔,后跟空格或制表符分隔,沒有一個冒號沒有一個冒號處理器指令的處理器指令的操作數(shù)操作數(shù)可以是可以是立即數(shù)、寄存器和存儲單元立即數(shù)、寄存器和存儲單元偽指令的偽指令的參數(shù)參數(shù)可以是常數(shù)、變量名、可以是常數(shù)、變量名、表達(dá)式等,可以有多個,參數(shù)之間表達(dá)式等,可以有多個,參數(shù)之間用逗號分隔用逗號分隔語句中由分號語句中由分號“;”開始的部分為注釋內(nèi)容,用以增加開始的部分為注釋內(nèi)容,用以增加源程序的可讀性源程序的可讀性必要時,一個語句行也可以由分號開始作為階段性注釋必要時,一個語句行也可以由分號開始作為階段性注釋匯編程序在翻譯源程序時將跳過該

5、部分,不對它們做任何處理匯編程序在翻譯源程序時將跳過該部分,不對它們做任何處理成功學(xué)院信工系成功學(xué)院信工系 張莉張莉標(biāo)識符標(biāo)識符標(biāo)識符標(biāo)識符(Identifier)一般最多由)一般最多由31個字母、數(shù)字及規(guī)定的個字母、數(shù)字及規(guī)定的特殊符號(如特殊符號(如 _、 、$、?、%)組成,不能以數(shù)字開頭。)組成,不能以數(shù)字開頭。默認(rèn)情況下,匯編程序不區(qū)別標(biāo)識符中的字母大小寫默認(rèn)情況下,匯編程序不區(qū)別標(biāo)識符中的字母大小寫一個程序中,每個標(biāo)識符的定義是唯一的,還不能是匯編一個程序中,每個標(biāo)識符的定義是唯一的,還不能是匯編語言采用的保留字語言采用的保留字o硬指令助記符硬指令助記符例如:例如:MOV、ADDo

6、偽指令助記符偽指令助記符例如:例如:DB、EQUo操作符操作符例如:例如:OFFSET、PTRo寄存器名寄存器名例如:例如:AX、CSo預(yù)定義符號預(yù)定義符號例如:例如:data成功學(xué)院信工系成功學(xué)院信工系 張莉張莉第第4講講 變量定義及常用偽指令變量定義及常用偽指令1 數(shù)值型參數(shù)數(shù)值型參數(shù)2 變量定義偽指令變量定義偽指令3 變量和標(biāo)號的屬性變量和標(biāo)號的屬性4 字符串的輸入輸出方法字符串的輸入輸出方法成功學(xué)院信工系成功學(xué)院信工系 張莉張莉1 數(shù)值型參數(shù)數(shù)值型參數(shù)在源程序語句格式的在源程序語句格式的4個組成部分中,參數(shù)是指令的操作對個組成部分中,參數(shù)是指令的操作對象(學(xué)習(xí)硬指令時被稱為操作數(shù)),參

7、數(shù)之間用逗號分隔象(學(xué)習(xí)硬指令時被稱為操作數(shù)),參數(shù)之間用逗號分隔匯編語言程序中,指令參數(shù)有數(shù)值型,它的主要形式是常匯編語言程序中,指令參數(shù)有數(shù)值型,它的主要形式是常數(shù)和數(shù)值表達(dá)式;數(shù)和數(shù)值表達(dá)式;匯編語言程序中,指令參數(shù)還有地址型,它的主要形式是標(biāo)匯編語言程序中,指令參數(shù)還有地址型,它的主要形式是標(biāo)號和名字(變量名、段名、過程名等)號和名字(變量名、段名、過程名等)成功學(xué)院信工系成功學(xué)院信工系 張莉張莉(1) 常數(shù)常數(shù)常數(shù)(常量)常數(shù)(常量)表示一個固定的數(shù)值表示一個固定的數(shù)值它又分成多種形式:它又分成多種形式:(1)十進(jìn)制常數(shù))十進(jìn)制常數(shù)(2)十六進(jìn)制常數(shù))十六進(jìn)制常數(shù)(3)二進(jìn)制常數(shù))二

8、進(jìn)制常數(shù)(4)八進(jìn)制常數(shù))八進(jìn)制常數(shù)(5)字符串常數(shù))字符串常數(shù)(6)符號常數(shù))符號常數(shù)成功學(xué)院信工系成功學(xué)院信工系 張莉張莉十進(jìn)制常數(shù)十進(jìn)制常數(shù)由由0 9數(shù)字組成,以字母數(shù)字組成,以字母D或或d結(jié)尾結(jié)尾缺省情況下,后綴缺省情況下,后綴D或或d可以省略可以省略匯編語言大小寫不敏感,匯編語言大小寫不敏感,D和和d通用通用例如:例如:100、255DDEBUG下默認(rèn)的是十六進(jìn)制數(shù)據(jù),但在編寫匯編語言下默認(rèn)的是十六進(jìn)制數(shù)據(jù),但在編寫匯編語言源程序的時候默認(rèn)的是十進(jìn)制!源程序的時候默認(rèn)的是十進(jìn)制!成功學(xué)院信工系成功學(xué)院信工系 張莉張莉十六進(jìn)制常數(shù)十六進(jìn)制常數(shù)由由09、AF組成,以字母組成,以字母H或或

9、h結(jié)尾結(jié)尾以字母以字母AF開頭的十六進(jìn)制數(shù),前面要用開頭的十六進(jìn)制數(shù),前面要用0表表達(dá),以避免與其他符號混淆達(dá),以避免與其他符號混淆匯編語言大小寫不敏感,匯編語言大小寫不敏感, H和和h 通用通用例如:例如:64H、0FFh、0B800H成功學(xué)院信工系成功學(xué)院信工系 張莉張莉二進(jìn)制常數(shù)二進(jìn)制常數(shù)由由0或或1兩個數(shù)字組成,以字母兩個數(shù)字組成,以字母B或或b結(jié)尾結(jié)尾匯編語言大小寫不敏感,匯編語言大小寫不敏感,B和和b通用通用例如:例如:01101100B成功學(xué)院信工系成功學(xué)院信工系 張莉張莉字符串常數(shù)字符串常數(shù)用單引號或雙引號括起來用單引號或雙引號括起來的單個字符或多個字的單個字符或多個字符,其數(shù)

10、值是每個字符對應(yīng)的符,其數(shù)值是每個字符對應(yīng)的ASCII碼的值碼的值例如:例如:d = 64HAB= 4142HHello, Everybody !成功學(xué)院信工系成功學(xué)院信工系 張莉張莉符號常數(shù)符號常數(shù)利用一個標(biāo)識符表達(dá)的一個數(shù)值,用于常量定義利用一個標(biāo)識符表達(dá)的一個數(shù)值,用于常量定義等價等價EQU偽指令偽指令符號名符號名 EQU EQU 數(shù)值表達(dá)式數(shù)值表達(dá)式符號名符號名 EQU EQU 等號等號=偽指令偽指令符號名符號名 = = 數(shù)值表達(dá)式數(shù)值表達(dá)式常數(shù)若使用有意義的符號名來表示,可以提高程序的可常數(shù)若使用有意義的符號名來表示,可以提高程序的可讀性,同時更具有通用性讀性,同時更具有通用性EQU

11、EQU不允許重復(fù)賦值,但不允許重復(fù)賦值,但= =則無此限制則無此限制成功學(xué)院信工系成功學(xué)院信工系 張莉張莉符號定義符號定義DosWriteChar equ 2DosWriteChar equ 2CarriageReturn = 13CarriageReturn = 13CallDOS equ CallDOS equ 符號應(yīng)用(左邊程序段等價右側(cè)的符號形式)符號應(yīng)用(左邊程序段等價右側(cè)的符號形式)mov ah,2mov ah,2;mov ah,DosWriteChar;mov ah,DosWriteCharmov dl,13mov dl,13;mov dl,CarriageReturn;mov

12、dl,CarriageReturnint 21hint 21h;CallDOS;CallDOS符號常數(shù)實(shí)例符號常數(shù)實(shí)例成功學(xué)院信工系成功學(xué)院信工系 張莉張莉(2) 數(shù)值表達(dá)式數(shù)值表達(dá)式數(shù)值表達(dá)式一般是指由運(yùn)算符連接的各種常數(shù)所構(gòu)成的表數(shù)值表達(dá)式一般是指由運(yùn)算符連接的各種常數(shù)所構(gòu)成的表達(dá)式達(dá)式匯編程序在匯編過程中計算表達(dá)式,最終得到一個數(shù)值匯編程序在匯編過程中計算表達(dá)式,最終得到一個數(shù)值程序運(yùn)行之前,就已經(jīng)計算出了表達(dá)式;所以,程序運(yùn)行程序運(yùn)行之前,就已經(jīng)計算出了表達(dá)式;所以,程序運(yùn)行速度沒有變慢,但增強(qiáng)程序的可讀性速度沒有變慢,但增強(qiáng)程序的可讀性成功學(xué)院信工系成功學(xué)院信工系 張莉張莉運(yùn)算符運(yùn)算

13、符算術(shù)運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符邏輯運(yùn)算符移位運(yùn)算符移位運(yùn)算符關(guān)系運(yùn)算符關(guān)系運(yùn)算符高低分離符高低分離符成功學(xué)院信工系成功學(xué)院信工系 張莉張莉算術(shù)算術(shù)運(yùn)算符運(yùn)算符實(shí)現(xiàn)加、減、乘、除、取余的算術(shù)運(yùn)算實(shí)現(xiàn)加、減、乘、除、取余的算術(shù)運(yùn)算+ - * / MODmov ax,3mov ax,3* *4+54+5; ;等價于等價于 mov ax,17mov ax,17MODMOD也稱為取模,它產(chǎn)生除法之后的余數(shù),如也稱為取模,它產(chǎn)生除法之后的余數(shù),如19 mod 7 19 mod 7 結(jié)果是結(jié)果是5 5加加+和減和減-運(yùn)算符還可以用于地址表達(dá)式運(yùn)算符還可以用于地址表達(dá)式除加、減外,其他運(yùn)算符的參數(shù)必須是整數(shù)

14、除加、減外,其他運(yùn)算符的參數(shù)必須是整數(shù)成功學(xué)院信工系成功學(xué)院信工系 張莉張莉邏輯邏輯運(yùn)算符運(yùn)算符實(shí)現(xiàn)按位相與、相或、異或、求反的邏輯運(yùn)算實(shí)現(xiàn)按位相與、相或、異或、求反的邏輯運(yùn)算AND OR XOR NOTmov al,03h AND 45hmov al,03h AND 45h; ;等價于等價于 mov al,01hmov al,01h成功學(xué)院信工系成功學(xué)院信工系 張莉張莉移位移位運(yùn)算符運(yùn)算符實(shí)現(xiàn)對數(shù)值的左移、右移的邏輯操作;移入低實(shí)現(xiàn)對數(shù)值的左移、右移的邏輯操作;移入低位或高位的是位或高位的是0 0SHL SHR格式為:格式為:數(shù)值表達(dá)式數(shù)值表達(dá)式 SHL/SHR SHL/SHR 移位次數(shù)移位

15、次數(shù)mov al,0101b SHL (2mov al,0101b SHL (2* *2)2); ;等價于等價于 mov al,01010000bmov al,01010000b成功學(xué)院信工系成功學(xué)院信工系 張莉張莉關(guān)系關(guān)系運(yùn)算符運(yùn)算符用于比較和測試符號數(shù)值用于比較和測試符號數(shù)值EQ NE GT LT GE LEMASMMASM用用0FFFFH0FFFFH(補(bǔ)碼(補(bǔ)碼 -1-1)表示條件為真)表示條件為真MASMMASM用用0000H0000H表示條件為假表示條件為假mov bx,PORT LT 5mov bx,PORT LT 5; ;當(dāng)當(dāng)PORT5PORT5時,匯編結(jié)果為時,匯編結(jié)果為mov

16、 bx,0ffffhmov bx,0ffffh; ;否則,匯編結(jié)果為否則,匯編結(jié)果為mov bx,0000hmov bx,0000h成功學(xué)院信工系成功學(xué)院信工系 張莉張莉高低分離符高低分離符取數(shù)值的高半部分或低半部分取數(shù)值的高半部分或低半部分HIGH LOW HIGHWORD LOWWORDHIGHHIGH、LOWLOW從一個從一個字?jǐn)?shù)值字?jǐn)?shù)值或或符號常量符號常量中得到高、低字節(jié)中得到高、低字節(jié)mov ah,HIGH 8765hmov ah,HIGH 8765h; ;等價于等價于mov ah,87hmov ah,87h從從MASM 6.0MASM 6.0引入的引入的HIGHWORDHIGHWO

17、RD、LOWWORDLOWWORD取一個取一個符號常量符號常量(不能是其他常數(shù))的高字或低字部分(不能是其他常數(shù))的高字或低字部分dd_value equ 0ffff1234hdd_value equ 0ffff1234h; ;定義一個符號常量定義一個符號常量mov ax,LOWWORD dd_valuemov ax,LOWWORD dd_value; ;等價于等價于mov ax,1234hmov ax,1234h成功學(xué)院信工系成功學(xué)院信工系 張莉張莉2 變量定義偽指令變量定義偽指令變量定義(變量定義(Define)偽指令為變量申請固定長度)偽指令為變量申請固定長度的存儲空間,并可同時將相應(yīng)的

18、存儲單元初始化的存儲空間,并可同時將相應(yīng)的存儲單元初始化變量名變量名 偽指令助記符偽指令助記符 初值表初值表 變量定義偽指令最常使用變量定義偽指令最常使用成功學(xué)院信工系成功學(xué)院信工系 張莉張莉變量名變量名變量名為用戶自定義標(biāo)識符,變量名為用戶自定義標(biāo)識符,表示初值表首元素的邏表示初值表首元素的邏輯地址輯地址;用這個符號表示地址,常稱為符號地址;用這個符號表示地址,常稱為符號地址設(shè)置變量名是為了方便存取它指示的存儲單元設(shè)置變量名是為了方便存取它指示的存儲單元變量名可以沒有。這種情況,匯編程序?qū)⒅苯訛槌踔底兞棵梢詻]有。這種情況,匯編程序?qū)⒅苯訛槌踔当矸峙淇臻g,無符號地址表分配空間,無符號地址成功

19、學(xué)院信工系成功學(xué)院信工系 張莉張莉初值表初值表初值表是用逗號分隔的參數(shù)初值表是用逗號分隔的參數(shù)主要由常數(shù)、表達(dá)式或?、主要由常數(shù)、表達(dá)式或?、DUP組成組成?表示初值不確定,即未賦初值;表示初值不確定,即未賦初值;DUP表示重復(fù)初值表示重復(fù)初值DUP的格式為:的格式為:重復(fù)次數(shù)重復(fù)次數(shù) DUP(重復(fù)參數(shù)重復(fù)參數(shù))成功學(xué)院信工系成功學(xué)院信工系 張莉張莉變量定義偽指令助記符變量定義偽指令助記符變量定義偽指令根據(jù)申請的主存空間單位分類變量定義偽指令根據(jù)申請的主存空間單位分類DB定義字節(jié)偽指令定義字節(jié)偽指令DW定義字偽指令定義字偽指令DD定義雙字偽指令定義雙字偽指令DF定義定義3字偽指令字偽指令DQ定

20、義定義4字偽指令字偽指令DT定義定義10字節(jié)偽指令字節(jié)偽指令還有定位偽指令還有定位偽指令成功學(xué)院信工系成功學(xué)院信工系 張莉張莉定義字節(jié)單元偽指令定義字節(jié)單元偽指令DBDBDB偽指令用于分配一個或多個字節(jié)單元,并可以將它偽指令用于分配一個或多個字節(jié)單元,并可以將它們初始化為指定值們初始化為指定值初值表中每個數(shù)據(jù)一定是字節(jié)量(初值表中每個數(shù)據(jù)一定是字節(jié)量(Byte),存放一個),存放一個8位數(shù)據(jù):位數(shù)據(jù):n 可以是可以是0255的無符號數(shù)的無符號數(shù)n 或是或是128127帶符號數(shù)帶符號數(shù) 也可以是字符串常數(shù)也可以是字符串常數(shù)成功學(xué)院信工系成功學(xué)院信工系 張莉張莉datadatasegmentseg

21、ment;數(shù)據(jù)段;數(shù)據(jù)段X Xdb a,0-5db a,0-5db 2 dup(100),?db 2 dup(100),?Y Ydb ABCdb ABCdatadataendsends字節(jié)單元定義實(shí)例字節(jié)單元定義實(shí)例成功學(xué)院信工系成功學(xué)院信工系 張莉張莉mov al,Xmov al,X; ;此處此處X X表示它的第表示它的第1 1個數(shù)據(jù),故個數(shù)據(jù),故ALaALadec X+1dec X+1; ;對對X X為始的第為始的第2 2個數(shù)據(jù)減個數(shù)據(jù)減1 1,故成為,故成為-6-6mov Y,almov Y,al; ;現(xiàn)在現(xiàn)在Y Y這個字符串成為這個字符串成為 aaBCBC字節(jié)變量的應(yīng)用字節(jié)變量的應(yīng)用成

22、功學(xué)院信工系成功學(xué)院信工系 張莉張莉定義字單元偽指令定義字單元偽指令DWDWDW偽指令用于分配一個或多個字單元,并可以將偽指令用于分配一個或多個字單元,并可以將它們初始化為指定值它們初始化為指定值初值表中每個數(shù)據(jù)一定是字量(初值表中每個數(shù)據(jù)一定是字量(Word),一個字),一個字單元可用于存放任何單元可用于存放任何16位數(shù)據(jù):位數(shù)據(jù):n 一個段地址一個段地址n一個偏移地址一個偏移地址n 兩個字符兩個字符n 065535之間的無符號數(shù)之間的無符號數(shù) 3276832767之間的帶符號數(shù)之間的帶符號數(shù)成功學(xué)院信工系成功學(xué)院信工系 張莉張莉datadatasegmentsegment;數(shù)據(jù)段;數(shù)據(jù)段c

23、ountcount dw 8000h,?,ABdw 8000h,?,ABmaxintmaxint equ 64hequ 64hnumbernumber dw maxintdw maxintarrayarray dw maxint dup(0)dw maxint dup(0)datadataendsends字單元定義實(shí)例字單元定義實(shí)例成功學(xué)院信工系成功學(xué)院信工系 張莉張莉定義雙字單元偽指令定義雙字單元偽指令DDDDDD偽指令偽指令用于分配一個或多個雙字單元,并可以將它用于分配一個或多個雙字單元,并可以將它們初始化為指定值們初始化為指定值初值表中每個數(shù)據(jù)是一個初值表中每個數(shù)據(jù)是一個3232位的雙字

24、量(位的雙字量(Double Double WordWord):):n 可以是有符號或無符號的可以是有符號或無符號的3232位整數(shù)位整數(shù)n 也可以用來表達(dá)也可以用來表達(dá)1616位段地址(高位字)和位段地址(高位字)和1616位的位的偏移地址(低位字)的遠(yuǎn)指針偏移地址(低位字)的遠(yuǎn)指針varddvarddDD 0,?,12345678hDD 0,?,12345678hfarpointfarpointDD 00400078hDD 00400078h成功學(xué)院信工系成功學(xué)院信工系 張莉張莉字變量和字常量的定義:字變量和字常量的定義:WNUMWNUM EQU 5678HEQU 5678H; ;定義定義W

25、NUMWNUM為常量為常量COUNT DW 20HCOUNT DW 20H; ;定義定義COUNTCOUNT變量,假設(shè)在數(shù)據(jù)段的偏移地址為變量,假設(shè)在數(shù)據(jù)段的偏移地址為10H10H字變量和字常量的應(yīng)用:字變量和字常量的應(yīng)用:MOV AX,BX+SI+WNUMMOV AX,BX+SI+WNUMMOV AX,COUNTMOV AX,COUNTMOV AX,SI+COUNTMOV AX,SI+COUNTLEA BX,COUNTLEA BX,COUNT字變量和字常量字變量和字常量; MOV AX,BX+SI+5678H; MOV AX,0010H; MOV AX,COUNTSI; MOV AX,SI+

26、10H; LEA BX,0010H成功學(xué)院信工系成功學(xué)院信工系 張莉張莉定位偽指令定位偽指令定位偽指令控制數(shù)據(jù)的偏移地址定位偽指令控制數(shù)據(jù)的偏移地址ORGORG 參數(shù)參數(shù)ORGORG偽指令是將當(dāng)前偏移地址指針指向參數(shù)表達(dá)的偽指令是將當(dāng)前偏移地址指針指向參數(shù)表達(dá)的偏移地址:偏移地址:ORG 100hORG 100h; ;從從100h100h處安排數(shù)據(jù)或程序處安排數(shù)據(jù)或程序ORG $+10ORG $+10; ;使偏移地址加使偏移地址加1010,即跳過,即跳過1010個字節(jié)空間個字節(jié)空間MASMMASM中,符號中,符號“$ $”表示當(dāng)前偏移地址值表示當(dāng)前偏移地址值array DB 12,34,56a

27、rray DB 12,34,56len equ $-array len equ $-array ; ;記錄變量記錄變量arrayarray所占字節(jié)數(shù)所占字節(jié)數(shù)成功學(xué)院信工系成功學(xué)院信工系 張莉張莉統(tǒng)計一個字變量中包含數(shù)據(jù)元素的個統(tǒng)計一個字變量中包含數(shù)據(jù)元素的個數(shù)數(shù).model small.stack.datav_word dw 3322h,6*4,3 dup (2),?, abcount equ ($-v_word)/2.code.startupmov dl,countadd dl,30hmov ah,02hint 21h.exit 0end成功學(xué)院信工系成功學(xué)院信工系 張莉張莉例題例題 .m

28、odel small .model small .stack .stack .data .dataX Xdw 5dw 5Y Ydw 6dw 6Z Zdw 7dw 7W Wdw ?dw ? .code .code.startup.startupmov ax,Xmov ax,Xadd ax,Yadd ax,Yadd ax,Zadd ax,Zmov W,axmov W,ax.exit 0.exit 0endend設(shè)有設(shè)有3個字變量個字變量X,Y和和Z,初值分別為,初值分別為5,6和和7,試求出三,試求出三者之和,并存入字變量者之和,并存入字變量W中。中。成功學(xué)院信工系成功學(xué)院信工系 張莉張莉3 變量

29、和標(biāo)號的屬性變量和標(biāo)號的屬性 地址屬性地址屬性v標(biāo)號和名字對應(yīng)存儲單元的邏輯地址標(biāo)號和名字對應(yīng)存儲單元的邏輯地址v邏輯地址包括:段地址和偏移地址邏輯地址包括:段地址和偏移地址 類型屬性類型屬性v標(biāo)號、子程序名的類型可以是標(biāo)號、子程序名的類型可以是NEAR(近)和(近)和FAR(遠(yuǎn)),分別表示段內(nèi)或段間(遠(yuǎn)),分別表示段內(nèi)或段間v變量名的類型可以是變量名的類型可以是BYTE(字節(jié))、(字節(jié))、WORD(字)(字)和和DWORD(雙字)等(雙字)等成功學(xué)院信工系成功學(xué)院信工系 張莉張莉地址操作符地址操作符取得名字或標(biāo)號的段地址和偏移地址兩個屬性取得名字或標(biāo)號的段地址和偏移地址兩個屬性 將括起的表達(dá)

30、式作為存儲器地址將括起的表達(dá)式作為存儲器地址$ $當(dāng)前偏移地址當(dāng)前偏移地址:采用指定的段地址寄存器采用指定的段地址寄存器OFFSET OFFSET 名字名字/ /標(biāo)號標(biāo)號返回名字或標(biāo)號的偏移地址返回名字或標(biāo)號的偏移地址SEG SEG 名字名字/ /標(biāo)號標(biāo)號返回名字或標(biāo)號的段地址返回名字或標(biāo)號的段地址成功學(xué)院信工系成功學(xué)院信工系 張莉張莉類型名類型名 PTR 名字名字/標(biāo)號標(biāo)號PTRPTR操作符使名字或標(biāo)號具有指定的類型操作符使名字或標(biāo)號具有指定的類型類型名類型名可以是可以是BYTE/WORD/DWORD/FWORD/QWORD/TBYTEBYTE/WORD/DWORD/FWORD/QWORD/

31、TBYTE或者是或者是NEAR/FARNEAR/FARmov al,byte mov al,byte ptrptr w_var w_var;w_var;w_var是一個字變量是一個字變量使用使用PTRPTR操作符,可以臨時改變名字或標(biāo)號的類型操作符,可以臨時改變名字或標(biāo)號的類型成功學(xué)院信工系成功學(xué)院信工系 張莉張莉4 字符串的輸入輸出方法字符串的輸入輸出方法同字符的輸入輸出類似,字符串的輸入輸出也采用同字符的輸入輸出類似,字符串的輸入輸出也采用DOS提供給用戶的用于調(diào)用系統(tǒng)功能的提供給用戶的用于調(diào)用系統(tǒng)功能的21H號中斷來實(shí)現(xiàn)。號中斷來實(shí)現(xiàn)。通常按照如下通常按照如下4 4個步驟進(jìn)行:個步驟進(jìn)行

32、: 在在AHAH寄存器中設(shè)置系統(tǒng)功能調(diào)用號寄存器中設(shè)置系統(tǒng)功能調(diào)用號 在指定寄存器中設(shè)置入口參數(shù)在指定寄存器中設(shè)置入口參數(shù) 執(zhí)行指令執(zhí)行指令I(lǐng)NT 21HINT 21H(或(或ROM-BIOSROM-BIOS的中斷向量號)實(shí)現(xiàn)中的中斷向量號)實(shí)現(xiàn)中斷服務(wù)程序的功能調(diào)用斷服務(wù)程序的功能調(diào)用 根據(jù)出口參數(shù)分析功能調(diào)用執(zhí)行情況根據(jù)出口參數(shù)分析功能調(diào)用執(zhí)行情況成功學(xué)院信工系成功學(xué)院信工系 張莉張莉字符串輸出的功能調(diào)用字符串輸出的功能調(diào)用DOS功能調(diào)用功能調(diào)用INT 21Hn功能號:功能號:AH09Hn入口參數(shù):入口參數(shù):DS:DX欲顯示字符串在主存中的首地址欲顯示字符串在主存中的首地址字符串應(yīng)以字符串

33、應(yīng)以$(24H)結(jié)束)結(jié)束n功能:在顯示器輸出指定的字符串功能:在顯示器輸出指定的字符串可以輸出回車(可以輸出回車(0DH)和換行()和換行(0AH)字符產(chǎn)生)字符產(chǎn)生回車和換行的作用回車和換行的作用成功學(xué)院信工系成功學(xué)院信工系 張莉張莉例:顯示字符串例:顯示字符串.model small.model small.stack.stack.data.data b u f 1 d b H e l l o , , 0 d h , 0 a h , t h i s i s a n b u f 1 d b H e l l o , , 0 d h , 0 a h , t h i s i s a n exam

34、ple.$,0dh,0ahexample.$,0dh,0ah buf2 db -END-$ buf2 db -END-$.code.code.startup.startupmov dx, mov dx, offsetoffset buf1 buf1mov ah, 9mov ah, 9int 21hint 21h lea lea dx, buf2dx, buf2mov ah, 9mov ah, 9int 21hint 21h.exit 0 .exit 0 end end 如果去掉如果去掉“$”顯示的結(jié)果又會是什么?顯示的結(jié)果又會是什么?成功學(xué)院信工系成功學(xué)院信工系 張莉張莉字符串輸入的功能調(diào)用字符串輸入的功能調(diào)用DOS功能調(diào)用功能調(diào)用INT 21Hn功能號:功能號:AH0AHn入口參數(shù):入口參數(shù):DS:DX緩沖區(qū)首地址緩沖區(qū)首地址執(zhí)行該功能調(diào)用時,用戶按鍵,最后用回車確認(rèn)執(zhí)行該功能調(diào)用時,用戶按鍵,最后用回車確認(rèn)本調(diào)用可執(zhí)行全部標(biāo)準(zhǔn)鍵盤編輯命令;用戶按回車鍵本調(diào)用可執(zhí)行全部標(biāo)準(zhǔn)鍵盤編輯命令;用戶按回車鍵結(jié)束輸入,如按結(jié)束輸入,如按CtrlBreak或或Ctrl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論