第三章匯編語言程序設(shè)計_第1頁
第三章匯編語言程序設(shè)計_第2頁
第三章匯編語言程序設(shè)計_第3頁
第三章匯編語言程序設(shè)計_第4頁
第三章匯編語言程序設(shè)計_第5頁
已閱讀5頁,還剩145頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、123.13.1匯編語言概述匯編語言概述 1 1、機器語言機器語言二進制數(shù)形式的指令和數(shù)據(jù)。二進制數(shù)形式的指令和數(shù)據(jù)。 B0 64 B0 64 是什么意思?這就是機器語言。既不直觀是什么意思?這就是機器語言。既不直觀, ,又不易理解和記憶又不易理解和記憶. . 2 2、匯編語言匯編語言- MOV AL MOV AL,64H64H ;很容易記憶理解,這就是很容易記憶理解,這就是助記符助記符。 助記符助記符用便于記憶的英語單詞表示的指令操作碼。用便于記憶的英語單詞表示的指令操作碼。它反映了指令它反映了指令的功能和主要特征的功能和主要特征, ,便于人們理解和記憶。便于人們理解和記憶。 指令除了操作碼

2、以外指令除了操作碼以外, ,還有一個操作數(shù)問題。還有一個操作數(shù)問題。 操作數(shù)可能放在存儲器中操作數(shù)可能放在存儲器中, ,這就涉及操作數(shù)的地址。程序中遇到轉(zhuǎn)移這就涉及操作數(shù)的地址。程序中遇到轉(zhuǎn)移指令或調(diào)用指令指令或調(diào)用指令, ,也需要知道轉(zhuǎn)移地址也需要知道轉(zhuǎn)移地址, ,若采用具體地址就很不方便若采用具體地址就很不方便, ,一旦有一旦有錯,改動也很麻煩。于是人們錯,改動也很麻煩。于是人們采用標(biāo)號或符號來代替地址。采用標(biāo)號或符號來代替地址。3 LP1LP1: mov ax,: mov ax,VARVAR loop loop LP1LP1 匯編語言匯編語言指令助記符指令助記符, ,符號地址,標(biāo)號,偽指

3、令等語言元素的集合符號地址,標(biāo)號,偽指令等語言元素的集合以及這些元素使用的規(guī)則。以及這些元素使用的規(guī)則。 用匯編語言編寫的程序叫用匯編語言編寫的程序叫匯編語言源程序匯編語言源程序。 匯編源程序需翻譯成機器語言匯編源程序需翻譯成機器語言, ,變成可執(zhí)行文件變成可執(zhí)行文件, ,機器才能執(zhí)行機器才能執(zhí)行, ,這個翻這個翻譯過程叫譯過程叫匯編匯編。高級語言中稱該過程為高級語言中稱該過程為“解釋解釋”或或“編譯編譯”。執(zhí)行。執(zhí)行翻譯的程序稱為翻譯的程序稱為“匯編程序匯編程序”。源程序的編譯程序源程序的編譯程序匯編程序匯編程序匯編語言源程序匯編語言源程序機器語言目標(biāo)程序機器語言目標(biāo)程序4匯編語言程序設(shè)計與

4、執(zhí)行過程匯編語言程序設(shè)計與執(zhí)行過程輸入?yún)R編語言源程序輸入?yún)R編語言源程序 源文件源文件 .ASM匯編(編譯)匯編(編譯) 目標(biāo)文件目標(biāo)文件 .OBJ鏈接鏈接 可執(zhí)行文件可執(zhí)行文件 .EXE調(diào)試調(diào)試 最終程序最終程序小匯編:小匯編:ASM 宏匯編:宏匯編:MASM3、高級語言:通用性強。例:、高級語言:通用性強。例:MATLAB、C、Pascal53.2 3.2 匯編語言源程序的格式匯編語言源程序的格式 匯編語言源程序通常由一個或幾個程序模塊組成匯編語言源程序通常由一個或幾個程序模塊組成, ,每個模塊一般由三每個模塊一般由三個邏輯段組成:個邏輯段組成: 數(shù)據(jù)段數(shù)據(jù)段存放數(shù)據(jù)、變量存放數(shù)據(jù)、變量 D

5、ATA SEGMENT DATA SEGMENT DATA ENDS DATA ENDS 堆棧段堆棧段堆棧區(qū)域堆棧區(qū)域 STACK SEGMENTSTACK SEGMENT STACK ENDS STACK ENDS 代碼段代碼段存放程序指令存放程序指令 CODE SEGMENT CODE SEGMENT CODE ENDSCODE ENDS3.2.1 分段結(jié)構(gòu)分段結(jié)構(gòu)6 一個基本的匯編語言程序框架如下: stack SEGMENT PARA stack DB 100 DUP(stack) stack ENDS data SEGMENT data ENDS code SEGMENT ASSUM

6、E CS:code, DS:data, ES:data start: MOV AX, data MOV DS, AX MOV ES, AX MOV AH, 4CH INT 21H code ENDS END start 堆棧段堆棧段數(shù)據(jù)段數(shù)據(jù)段代碼段代碼段7例:將兩個五字節(jié)的例:將兩個五字節(jié)的16進制數(shù)相加進制數(shù)相加DATA SEGMENT ;定義數(shù)據(jù)段;定義數(shù)據(jù)段DATA1 DB 0F8H,60H,0ACH,74H,3BH ;變量一,字節(jié);變量一,字節(jié)DATA2 DB 0C1H,36H,93H,0D5H,20H ;變量二,字節(jié);變量二,字節(jié)DATA ENDS ;數(shù)據(jù)段結(jié)束;數(shù)據(jù)段結(jié)束CODE

7、 SEGMENT ;定義代碼段;定義代碼段 ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX ;初始化;初始化DS MOV CX,5 ;置循環(huán)次數(shù)送;置循環(huán)次數(shù)送CX MOV SI,0 ;(SI)=0 CLC ;(CF)=08LOOPER: MOV AL,DATA2SI ;取一個字節(jié)加數(shù);取一個字節(jié)加數(shù) ADC DATA1SI,AL ;與被加數(shù)相加,帶進位加法;與被加數(shù)相加,帶進位加法 INC SI ;SI加加1 DEC CX ;CX減減1 JNZ LOOPER ;若;若(CX)不等于不等于0,轉(zhuǎn),轉(zhuǎn)LOOPER MOV AH,4CH INT

8、 21H ;返回;返回DOSCODE ENDS ;代碼段結(jié)束;代碼段結(jié)束 END START ;源程序結(jié)束;源程序結(jié)束注:注:MOV AH,4CH INT 21H ;DOS功能調(diào)用,結(jié)束正在運行的程序,返回功能調(diào)用,結(jié)束正在運行的程序,返回DOS93.2.2 3.2.2 匯編語言語句的類型和組成匯編語言語句的類型和組成匯編語言的語句有兩種:匯編語言的語句有兩種:指令性語句指令性語句由由80868086指令助記符構(gòu)成的語句指令助記符構(gòu)成的語句指令性語句指令性語句的格式為:的格式為: 標(biāo)號標(biāo)號: : 指令助記符指令助記符 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù) ; ;注釋注釋注:各部分之間至少要

9、用一個空格作為分隔符。注:各部分之間至少要用一個空格作為分隔符。l 指令性語句指令性語句由由CPU執(zhí)行,每一條指令性語句都有一條機器碼指令與其對應(yīng)執(zhí)行,每一條指令性語句都有一條機器碼指令與其對應(yīng) 指令性語句匯編時生成機器碼指令性語句匯編時生成機器碼; ; 例:例:LOOPER: MOV AL,DATASILOOPER: MOV AL,DATASI10匯編語言的語句有兩種:匯編語言的語句有兩種:指示性語句指示性語句由偽指令構(gòu)成的語句由偽指令構(gòu)成的語句指示性語句指示性語句的格式為:的格式為: 名字名字 偽指令偽指令 操作數(shù)操作數(shù)1,1,操作數(shù)操作數(shù)2,2,操作數(shù)操作數(shù)n n ; ;注釋注釋注:各部

10、分之間至少要用一個空格作為分隔符。注:各部分之間至少要用一個空格作為分隔符。l 指示性語句指示性語句由匯編程序執(zhí)行。它指出匯編程序應(yīng)如何對源程序進行匯編,由匯編程序執(zhí)行。它指出匯編程序應(yīng)如何對源程序進行匯編,如何定義變量、分配存儲單元以及指示程序開始和結(jié)束等。指示性語句無如何定義變量、分配存儲單元以及指示程序開始和結(jié)束等。指示性語句無機器碼指令與其相對應(yīng)。機器碼指令與其相對應(yīng)。 指示性語句匯編時指示性語句匯編時不不生成機器碼。生成機器碼。例:例:DATA DB 0FBH,60HDATA DB 0FBH,60H11標(biāo)號有三個屬性:標(biāo)號有三個屬性: 段地址段地址:即標(biāo)號所在段的段地址;:即標(biāo)號所在

11、段的段地址; 程序中引用一個標(biāo)號,該標(biāo)號的段地址應(yīng)在程序中引用一個標(biāo)號,該標(biāo)號的段地址應(yīng)在CSCS中。中。 偏移量偏移量:標(biāo)號所代表存儲單元的段內(nèi)偏移地址;:標(biāo)號所代表存儲單元的段內(nèi)偏移地址;1616位的無符號數(shù)位的無符號數(shù) 類類 型型:NEARNEAR或或FARFAR: NEARNEAR表示標(biāo)號所在語句與轉(zhuǎn)移指令表示標(biāo)號所在語句與轉(zhuǎn)移指令/ /調(diào)用指令在同一碼段內(nèi)調(diào)用指令在同一碼段內(nèi), ,跳轉(zhuǎn)時只需改變跳轉(zhuǎn)時只需改變IPIP即可。即可。 FARFAR標(biāo)號所在語句與轉(zhuǎn)移指令標(biāo)號所在語句與轉(zhuǎn)移指令/ /調(diào)用指令不在同一代碼段內(nèi)。調(diào)用指令不在同一代碼段內(nèi)。 若沒有對類型進行說明若沒有對類型進行說明

12、, ,默認(rèn)為默認(rèn)為NEARNEAR。標(biāo)號通常作為標(biāo)號通常作為轉(zhuǎn)移指令轉(zhuǎn)移指令或或CALLCALL指令指令的轉(zhuǎn)移地址。的轉(zhuǎn)移地址。3.2.3 3.2.3 名字名字12匯編語言的一個實例匯編語言的一個實例: hello.asm: hello.asm Hello Hello DB DB Hello, world!Hello, world!,0DH,0AH,0DH,0AH,$ $ ASSUMEASSUME CS: CS:progprog,DS:,DS:datadatastartstart: MOV AX,: MOV AX,datadata MOV DS,AX MOV DS,AX LEA DX,LEA

13、DX,hellohello; ;取字符串首地址取字符串首地址 MOV AH,9MOV AH,9 INT 21H INT 21H; ;顯示字符串顯示字符串 MOV AH,4CH MOV AH,4CH INT 21H INT 21H; ;退回退回DOSDOS名字標(biāo)號13 3.2.4 3.2.4 助記符和偽操作助記符和偽操作助記符:助記符:80868086、8088CPU8088CPU指令的助記符,例如:指令的助記符,例如:MOV, ADD,MULMOV, ADD,MUL等等偽操作指令:如偽操作指令:如DBDB、SEGMENTSEGMENT、ENDSENDS、ASSUMEASSUME、ENDSEND

14、S3.2.5 3.2.5 操作數(shù)操作數(shù)操作數(shù)包括操作數(shù)包括常量常量、寄存器寄存器、標(biāo)號標(biāo)號、變量變量及及表達式表達式。1.1.常量常量 二進制數(shù)二進制數(shù), ,以以B B結(jié)尾。如結(jié)尾。如01001101B01001101B。 十進制數(shù)十進制數(shù), ,如如8585。 八進制數(shù)八進制數(shù), ,以以Q Q結(jié)尾。如結(jié)尾。如174Q174Q。14 十六進制數(shù)十六進制數(shù), ,以以H H結(jié)尾。第結(jié)尾。第1 1個數(shù)字為個數(shù)字為A-FA-F時,時,前面應(yīng)加前面應(yīng)加0 0,如,如0 0F160HF160H。字符串:用引號括起來的字符串:用引號括起來的1 1個或多個字符。如個或多個字符。如ERROR!, a,ERROR!

15、, a,匯編匯編時被時被 翻譯成對應(yīng)的翻譯成對應(yīng)的ASCIIASCII碼碼4 45H,52H,52H,4FH,52H,21H5H,52H,52H,4FH,52H,21H和和61H61H。十進制科學(xué)計數(shù)法。如:十進制科學(xué)計數(shù)法。如:8.75E-48.75E-4十六進制實數(shù)。如:十六進制實數(shù)。如:10A4E87R10A4E87R2 2、寄存器、寄存器8 8位寄存器:位寄存器:AHAH、ALAL、BHBH、BLBL、CHCH、CLCL、DHDH、DLDL1616位寄存器:位寄存器:AXAX、BXBX、CXCX、DXDX、SISI、DIDI、BPBP、SPSP、DSDS、CSCS、SSSS、DSDS3

16、 3、標(biāo)號:代表一條指令的、標(biāo)號:代表一條指令的符號地址符號地址15 變量名變量名是存儲單元是存儲單元( (數(shù)據(jù)區(qū)數(shù)據(jù)區(qū)) )的符號地址或名字。的符號地址或名字。 變量也有三個屬性變量也有三個屬性: :段地址段地址變量所在段的段地址變量所在段的段地址偏移量偏移量變量單元地址與段首地址之間的位移量。變量單元地址與段首地址之間的位移量。類類 型型有有BYTEBYTE、WORDWORD和和DWORDDWORD三種。三種。 變量在程序中作為變量在程序中作為存儲器操作數(shù)存儲器操作數(shù)被引用。被引用。標(biāo)號和變量名的使用規(guī)則標(biāo)號和變量名的使用規(guī)則 組成:組成:A-Z(不不分大小寫分大小寫), 0-9, ? .

17、 _ $ 不不能以數(shù)字開頭能以數(shù)字開頭 長度小于長度小于31個字符個字符 不不能與保留字能與保留字(指令助記符、偽指令、預(yù)定義符號等指令助記符、偽指令、預(yù)定義符號等)重名重名 不不能重復(fù)定義能重復(fù)定義例如:例如: 正確的:正確的:LP1, AGAIN, NEXT, _GO, OK_1 錯誤的:錯誤的:4M, LOOP, AAA, #HELP, +ONE4.4.變量變量-即內(nèi)存中的存儲單元或數(shù)據(jù)區(qū)。即內(nèi)存中的存儲單元或數(shù)據(jù)區(qū)。165.5.表達式表達式 表達式是常數(shù)、寄存器、標(biāo)號、變量與運算符的組合。表達式是常數(shù)、寄存器、標(biāo)號、變量與運算符的組合。 有有數(shù)字表達式數(shù)字表達式和和地址表達式地址表達式

18、兩種。兩種。 匯編時按優(yōu)先規(guī)則對表達式進行計算,計算出具體的數(shù)值或地址。運匯編時按優(yōu)先規(guī)則對表達式進行計算,計算出具體的數(shù)值或地址。運行時不能改變。行時不能改變。 表達式中的運算符有表達式中的運算符有6 6類:算術(shù)、邏輯、關(guān)系、取地址、屬性、雜類。類:算術(shù)、邏輯、關(guān)系、取地址、屬性、雜類。(1)1)算術(shù)運算符算術(shù)運算符 + +、- -、* *、/ /,MODMOD 用于數(shù)字表達式用于數(shù)字表達式, ,例:例: MOV AX,4MOV AX,4* *10241024匯編后的形式為匯編后的形式為: : MOV AX,4096 MOV AX,4096 用于地址表達式用于地址表達式, ,例例: : LE

19、A SI,TAB+3LEA SI,TAB+3若若TABTAB的偏移地址為的偏移地址為1000H1000H,則匯編后的形式為:,則匯編后的形式為:LEA SI,1003H LEA SI,1003H 17邏輯運算符只能用于數(shù)字表達式中。邏輯運算符只能用于數(shù)字表達式中。 例:例:MOVMOVCL,36H AND 0FHCL,36H AND 0FH 經(jīng)匯編后:經(jīng)匯編后:MOV CL,06HMOV CL,06H注意,不要把邏輯運算符與邏輯運算指令混淆:注意,不要把邏輯運算符與邏輯運算指令混淆: 例:例:AND AX, AND AX, 3FC0H AND 0FF00H3FC0H AND 0FF00H匯編后

20、源操作數(shù)被翻譯為:匯編后源操作數(shù)被翻譯為:3F00H3F00H,所以上述指令與,所以上述指令與AND AX, 3F00HAND AX, 3F00H等價。等價。(2)2)邏輯運算符邏輯運算符 AND AND、OROR、XORXOR、NOTNOT 關(guān)系運算的結(jié)果是一個邏輯值:關(guān)系運算的結(jié)果是一個邏輯值:真真或或假假 關(guān)系為真關(guān)系為真, ,結(jié)果為全結(jié)果為全1 1; 關(guān)系為假關(guān)系為假, ,結(jié)果為全結(jié)果為全0 0例:例: MOV BX,PORT GT 300HMOV BX,PORT GT 300H 若若PORTPORT的值大于的值大于300H,300H,則匯編后為:則匯編后為:MOV BX,0FFFFH

21、MOV BX,0FFFFH 否則匯編后為:否則匯編后為: MOV BX,0MOV BX,0(3)3)關(guān)系運算符關(guān)系運算符EQEQ、NENE、LTLT、GTGT、LELE、GEGE18OFFSET:取變量:取變量/標(biāo)號的偏移地址標(biāo)號的偏移地址注意,以下指令的異同:注意,以下指令的異同: MOV BX, OFFSET VAR LEA BX, VAROFFSET只能取靜態(tài)的偏移地址;只能取靜態(tài)的偏移地址;LEA指令即可取靜態(tài)的偏移地址,也可取動態(tài)的偏移地址。指令即可取靜態(tài)的偏移地址,也可取動態(tài)的偏移地址。SEG:取變量:取變量/標(biāo)號的段地址。標(biāo)號的段地址。例:例:MOV AX, SEG DATA M

22、OV DS,AX ;取變量;取變量DATA的段地址的段地址(4)4)分析運算符和合成運算符分析運算符和合成運算符19TYPE 取變量的類型(取變量的類型(1,2,4)VAR DW ? ;字字ARRAY DD 10DUP(?) ;雙字雙字STR DB This is a test ;字節(jié)字節(jié) MOV AX,TYPE VAR ;(AX)=2 MOV BX, TYPE ARRAY ;(BX)=4 MOV CX, TYPE STR ;(CX)=1LENGTH 取所定義變量的長度(即變量中元素的個數(shù))取所定義變量的長度(即變量中元素的個數(shù))未使用重復(fù)操作符未使用重復(fù)操作符DUP,變量個數(shù)為,變量個數(shù)為1

23、;否則如上例中的變量否則如上例中的變量ARRAY的個數(shù)為的個數(shù)為10;20SIZE 取所定義存儲區(qū)的字節(jié)數(shù)(取所定義存儲區(qū)的字節(jié)數(shù)(=TYPE*LENGTH)例:例:VAR DW 1,2,3,4,5 則則 TYPE VAR = 2,LENGTH VAR = 5,SIZE VAR = 10合成運算符合成運算符PTR:用來指定地址操作數(shù)的類型用來指定地址操作數(shù)的類型格式:格式: PTR 類型類型BYTE, WORD, DWORD, NEAR, FARBYTE、WORD、DWORD 用于描述數(shù)據(jù)存儲單元用于描述數(shù)據(jù)存儲單元(變量變量)地址地址NEAR、FAR 用于描述轉(zhuǎn)移、調(diào)用的目的地址用于描述轉(zhuǎn)移

24、、調(diào)用的目的地址例:例:MOVMOV BYTE PTRDI,0 ; BYTE PTRDI,0 ;字節(jié)類型字節(jié)類型 MOV MOV WORD PTRDI,0 ; WORD PTRDI,0 ;字類型字類型 MOVMOV DI,0B5H ; DI,0B5H ;類型不定類型不定21PTRPTR也可用來進行強制類型轉(zhuǎn)換也可用來進行強制類型轉(zhuǎn)換例:例:STR1 DW STR1 DW ? ;STR1 ;STR1定義為字類型定義為字類型 MOV AX,STR1 ; MOV AX,STR1 ;合法合法 MOV MOV AL,STR1 ; AL,STR1 ;非法非法 MOV AL, MOV AL, BYTE PT

25、RBYTE PTR STR1 ; STR1 ;合法合法合成運算符合成運算符THIS:用來指定存儲器操作數(shù)的類型用來指定存儲器操作數(shù)的類型合成運算符合成運算符SHORTSHORT:地址操作數(shù):地址操作數(shù)22(5)5)其他運算符其他運算符方括號方括號:存儲器地址:存儲器地址MOV CL,BX ;MOV CL,BX ;間址尋址間址尋址MOV AL,SI+5 ;MOV AL,SI+5 ;變址尋址變址尋址段超越運算符:段超越運算符:MOV AX,ES:DIMOV AX,ES:DIHIGHHIGH、LOWLOW:獲取數(shù)值或地址表達式的高位和低位字節(jié):獲取數(shù)值或地址表達式的高位和低位字節(jié)VAR EQU 0A

26、BCDHVAR EQU 0ABCDH MOV AH,HIGH VAR ; (AH)=0ABH MOV AH,HIGH VAR ; (AH)=0ABH MOV AL,LOW VAR ; (AL)=0CDH MOV AL,LOW VAR ; (AL)=0CDH233.2.6 注釋注釋 注釋注釋以分號開頭,可放在指令后,也可單獨一行。以分號開頭,可放在指令后,也可單獨一行。 注意注解的寫法。要寫指令(段)在程序中的作用,而注意注解的寫法。要寫指令(段)在程序中的作用,而不不要寫指令要寫指令的操作。的操作。 例如:以下為同一條指令寫的注釋例如:以下為同一條指令寫的注釋 1)MOV CX,100 ;傳送

27、傳送100到到CX 2)MOV CX,100 ;循環(huán)計數(shù)器置初值循環(huán)計數(shù)器置初值 顯然,第二種寫法要比第一種寫法要好。顯然,第二種寫法要比第一種寫法要好。 243.3 3.3 偽操作命令偽操作命令 數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令 符號定義偽指令符號定義偽指令 段定義和段寄存器指定偽指令段定義和段寄存器指定偽指令 過程定義偽指令過程定義偽指令 結(jié)束偽指令結(jié)束偽指令253.3.2 3.3.2 數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令 用于定義變量,即內(nèi)存單元或數(shù)據(jù)區(qū)。數(shù)據(jù)定義偽指令的格式為:用于定義變量,即內(nèi)存單元或數(shù)據(jù)區(qū)。數(shù)據(jù)定義偽指令的格式為:變量名變量名 數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令 操作數(shù),操作數(shù),操作

28、數(shù),操作數(shù),常用的數(shù)據(jù)定義偽指令有如下幾種:常用的數(shù)據(jù)定義偽指令有如下幾種: DB DB 定義定義字節(jié)、字節(jié)、DW DW 定義定義字、字、DD DD 定義定義雙字、雙字、DQ DQ 定義定義八八字節(jié)字節(jié) DT DT 定義定義十字節(jié)十字節(jié)操作數(shù)可以是常數(shù)、變量或表達式操作數(shù)可以是常數(shù)、變量或表達式例例1 1:DATA_B DB 10,5,10HDATA_B DB 10,5,10H DATA_W DW 100H,-4 DATA_W DW 100H,-4 DATA_D DD 0FFFBH DATA_D DD 0FFFBH 匯編后的內(nèi)存分配情況如右圖所示匯編后的內(nèi)存分配情況如右圖所示。05H10H00

29、H01HFCHFFHFBHFFH00H00H0AH26例例2 2:DATA DB 100,0FFH ;DATA DB 100,0FFH ;存入存入64H64H,0FFH0FFH EXPR DB 2 EXPR DB 2* *3+7 ;3+7 ;存入存入0DH=13D0DH=13D STR DB WELCOME! ; STR DB WELCOME! ;存入存入8 8個字符個字符 AB DB AB ;AB DB AB ;存入存入41H41H,42H42H BA DW AB ; BA DW AB ;存入存入42H42H,41H41H ABDD DD AB ; ABDD DD AB ;存入存入42H42

30、H,41H41H,0000,0000 OFFAB DW AB ; OFFAB DW AB ;存入變量存入變量ABAB的偏移地址的偏移地址 ADRS DW TABLE,TABLE+5,TABLE+10 ; ADRS DW TABLE,TABLE+5,TABLE+10 ;存入存入3 3個偏移地址個偏移地址 TOTAL DD TABLE ; TOTAL DD TABLE ;先存入先存入TABLETABLE偏移地址,再存段地址偏移地址,再存段地址 NUM DQ 00 11 22 33 44 55 66 77H NUM DQ 00 11 22 33 44 55 66 77H ; ;存入存入77H77H,

31、66H66H,55H55H,44H44H,33H33H,22H22H,11H11H,00H00H, DECML DT 1234567890H DECML DT 1234567890H ; ;存入存入90H90H,78H78H,56H56H,34H34H,12H12H,0000,0000,0000,0000,0000 HEXTAB DB 01,02,03,04,05,06,07,08,09 HEXTAB DB 01,02,03,04,05,06,07,08,09 DB 0AH,0BH,0CH,0DH,0EH,0FH DB 0AH,0BH,0CH,0DH,0EH,0FH 27例例3 3:操作數(shù)可以

32、是字符串,例如:操作數(shù)可以是字符串,例如STR DBHELLO 匯編后的情況如圖:匯編后的情況如圖:注意下面兩個定義的不同之處:注意下面兩個定義的不同之處:DBAB ;41H ;41H在低字節(jié),在低字節(jié),42H42H在高字節(jié)在高字節(jié)DW AB ;42H ;42H在低字節(jié),在低字節(jié),41H41H在高字節(jié)在高字節(jié)STRHELLO48H45H4CH4CH4FH操作數(shù)操作數(shù)?用來保留存儲空間用來保留存儲空間,但不存入數(shù)據(jù)但不存入數(shù)據(jù).例例4:ABC DB 0,1,2,3,4,OK,$ RSV DW ?,?,?,?,?,?,?,?28l復(fù)制操作符復(fù)制操作符DUP:重復(fù)的數(shù)據(jù)可以使用復(fù)制操作符重復(fù)的數(shù)據(jù)可

33、以使用復(fù)制操作符DUP, ,如上面如上面RSV亦可寫成亦可寫成: : RSV DW 8 DUP(?)若操作數(shù)中若使用若操作數(shù)中若使用$, ,則表示的是地址計數(shù)器的當(dāng)前值。則表示的是地址計數(shù)器的當(dāng)前值。例:例: TABLE DB 10 DUP(?) BUFFER DW TABLE,$+3設(shè)設(shè)TABLE的偏移地址為的偏移地址為0080H, ,則匯編后如下圖所示:則匯編后如下圖所示:BUFFER0080H80HTABLE.8FH00H0089H10 Bytes293.3.3 3.3.3 符號定義偽指令符號定義偽指令1 1、 EQU 格式:名字格式:名字 EQU 表達式表達式 把一個表達式用一個符號表

34、示,以后凡出現(xiàn)該表達式的地方都可用把一個表達式用一個符號表示,以后凡出現(xiàn)該表達式的地方都可用這個符號表示。類似于這個符號表示。類似于C C語言中的語言中的#define#define。用用EQUEQU定義的符號未清除前不能重新定義。清除定義的符號未清除前不能重新定義。清除EQUEQU定義用定義用PURGEPURGE偽指令。偽指令。不占用存儲空間不占用存儲空間, ,僅是給符號賦值僅是給符號賦值 CR EQU ODH ;CR EQU ODH ;常數(shù)常數(shù)A EQU ASCII_TABLE A EQU ASCII_TABLE ;變量;變量STR EQU 64STR EQU 64* *1024 1024

35、 ;數(shù)值表達式;數(shù)值表達式ADR EQU ES:BP+DI+5 ADR EQU ES:BP+DI+5 ;地址表達式;地址表達式CBD EQU AAM CBD EQU AAM ;指令助記符;指令助記符302 2、= 格式:名字格式:名字 = 表達式表達式區(qū)別:可對同一名字重復(fù)定義區(qū)別:可對同一名字重復(fù)定義不不占用存儲空間占用存儲空間, ,僅是給符號賦值僅是給符號賦值例例1:FIVE EQU 5 COUNT EQU CX TEN EQU 10 DIST = BYTE PTRSI+BP GOTO = JMP MOV AX, TEN MOV CX, COUNT ADD DIST, FIVE DIST

36、= WORD PTRSI+BP+1 ADD DIST, AX GOTO LABEL 定義定義引用引用31例例2 2:COUNT=10COUNT=10 MOV CX,COUNT ;(CX)=10 MOV CX,COUNT ;(CX)=10 COUNT=COUNT-1 COUNT=COUNT-1 MOV BX,COUNT ;(BX)=9 MOV BX,COUNT ;(BX)=9例例3 3: COLUMN COLUMN EQU 80 EQU 80 ROW ROW EQU 25 EQU 25 SCREENFUL SCREENFUL EQU COLUMN EQU COLUMN* *ROWROW3 3、L

37、ABEL 格式:名字格式:名字 LABEL 類型類型例:例:AREAW LABEL WORD ; AREAWAREAW LABEL WORD ; AREAW類型為類型為WORDWORD323.3.4 3.3.4 段定義偽操作段定義偽操作1 1、SEGMENT/ENDSSEGMENT/ENDS格式:格式: 段名段名 SEGMENT 定位類型定位類型組合方式組合方式類別類別 段名段名 ENDS 匯編語言程序是按段來組織程序和數(shù)據(jù)的。匯編語言程序是按段來組織程序和數(shù)據(jù)的。 和存儲器的物理段相對應(yīng),匯編語言程序中的段稱為邏輯段。匯編和存儲器的物理段相對應(yīng),匯編語言程序中的段稱為邏輯段。匯編連接后被映射

38、到物理段中。連接后被映射到物理段中。33邏輯段從一個節(jié)邏輯段從一個節(jié) (16個字節(jié)個字節(jié)) 的邊界開始。的邊界開始。 即即段的起始地址應(yīng)能被段的起始地址應(yīng)能被16整除整除, 或這說段或這說段起始物理地址應(yīng)為起始物理地址應(yīng)為0H。默認(rèn)類型默認(rèn)類型邏輯段從字節(jié)邊界開始,即段可以從任何地址開始。邏輯段從字節(jié)邊界開始,即段可以從任何地址開始。邏輯段從字邊界開始。即段的起始地址必須是偶數(shù)。邏輯段從字邊界開始。即段的起始地址必須是偶數(shù)。邏輯段從頁邊界開始。邏輯段從頁邊界開始。256字節(jié)稱為一頁,故段的起始字節(jié)稱為一頁,故段的起始物理地址應(yīng)為物理地址應(yīng)為00H。34 說明不同模塊中同名段的組合方式。說明不同

39、模塊中同名段的組合方式。 PUBLIC: 所有此類型的同名段組合成一個邏輯段,公用一個段地所有此類型的同名段組合成一個邏輯段,公用一個段地址,運行時裝入同一個物理段中。址,運行時裝入同一個物理段中。 COMMON : 所有此類型的同名段具有相同的起始地址所有此類型的同名段具有相同的起始地址(覆蓋覆蓋),共享相,共享相同的存儲區(qū)域。同的存儲區(qū)域。 AT : 按絕對地址定位,段地址就是表達式的值。按絕對地址定位,段地址就是表達式的值。 STACK : 專用于說明堆棧段,組合方式同專用于說明堆棧段,組合方式同PUBLIC35STACK SEGMENT STACK DB 100 DUP(?) STAC

40、K ENDSDATA1 SEGMENT BYTESTRING DB This is an example!DATA1 ENDSDATA2 SEGMENT WORDBUFFER DW 40 DUP(0) DATA2 ENDS 36CODE1 SEGMENT PAGE CODE1 ENDSCODE2 SEGMENT PAGE CODE2 ENDS START: MOV AX,STACK; MOV SS,AXCODE2 ENDS END START 37長度說明:長度說明:STACK的長度為的長度為100*1=100D=64HDATA1的長度為的長度為19*1=19D=13HDATA2的長度為的長度

41、為40*2=80D=50HCODE1的長度為的長度為13*1=13D=0DHCODE2的長度為的長度為52*1=52D=34H所占內(nèi)存地址:所占內(nèi)存地址:STACK:00000H00063H,占,占64H=100個字節(jié),從個字節(jié),從00H開始開始DATA1:00064H00076H,占,占13H=19個字節(jié),從個字節(jié),從任何地址開始任何地址開始DATA2:00078H000C7H,占,占50H=80個字節(jié),以偶數(shù)地址個字節(jié),以偶數(shù)地址開始開始CODE1:00100H0010CH,占,占0DH=13個字節(jié),從個字節(jié),從00H開始開始CODE2:00110H00143H,占,占34H=52個字節(jié),

42、從個字節(jié),從00H開始開始 382 2、 ASSUME偽指令偽指令在代碼段中,還必須明確段和段寄存器的關(guān)系,這由在代碼段中,還必須明確段和段寄存器的關(guān)系,這由ASSUME語句語句來指定。如來指定。如 ASSUME CS:code, DS:data, ES:dataASSUME CS:code, DS:data, ES:data 語句中的語句中的codecode和和datadata為段名。為段名。 這個語句說明:這個語句說明: CSCS將指向名字為將指向名字為codecode的代碼段的代碼段DSDS和和ESES將指向名字為將指向名字為datadata的數(shù)據(jù)段的數(shù)據(jù)段但要注意但要注意, ,ASSU

43、MEASSUME偽指令只是告知匯編程序有關(guān)段寄存器與段的關(guān)系偽指令只是告知匯編程序有關(guān)段寄存器與段的關(guān)系, ,并并沒有給段寄存器賦予實際的初值。故下面的語句沒有給段寄存器賦予實際的初值。故下面的語句 MOVMOV AX,DATA AX,DATA MOV MOV DS,AX DS,AX MOV MOV ES,AX ES,AX將段基址裝入段寄存器將段基址裝入段寄存器。如果程序中用到堆棧。如果程序中用到堆棧段,則段,則SS也需裝入實際的初值。也需裝入實際的初值。代碼段基地址代碼段基地址不需要程序員裝入不需要程序員裝入CS寄存器,而由寄存器,而由OS負(fù)責(zé)裝入。負(fù)責(zé)裝入。39例例1: CODE SEGM

44、ENT1: CODE SEGMENT ASSUME CS:CODE,DS:DATA1,SS:STACKASSUME CS:CODE,DS:DATA1,SS:STACK MOV AX, DATA1 MOV AX, DATA1 MOV DS, AX MOV DS, AX MOV AX, STACK MOV AX, STACK MOV SS, AX MOV SS, AX CODE ENDS CODE ENDS40例例2: .DOSSEG2: .DOSSEG .MODEL SMALL .MODEL SMALL .STACK 100H .STACK 100H .DATA .DATAIVAR DB 5IV

45、AR DB 5IARRAY DW 50DUP(5)IARRAY DW 50DUP(5)STRING DB This is a stringSTRING DB This is a string .CODE.CODE413.3.5 3.3.5 過程定義偽指令過程定義偽指令PROCPROC、ENDPENDP 過程就是子程序。一個過程可以被其它程序所調(diào)用過程就是子程序。一個過程可以被其它程序所調(diào)用( (用用CALLCALL指令指令) ),過,過程的最后一條指令一般是返回指令程的最后一條指令一般是返回指令(RET)(RET)。 過程定義偽指令的格式為過程定義偽指令的格式為 PROCPROC NEAR/F

46、AR NEAR/FAR RET RET ENDPENDP 注意:注意:PROCPROC和和ENDPENDP必須成對出現(xiàn)。必須成對出現(xiàn)。調(diào)用調(diào)用NEARNEAR過程:先將過程:先將IPIP內(nèi)容壓入堆棧,再將入口地址傳送到內(nèi)容壓入堆棧,再將入口地址傳送到IPIP(SP)(SP)(SP)-2, (SP)+1:SP) (IP)42調(diào)用調(diào)用FARFAR過程:先將過程:先將CSCS內(nèi)容壓入堆棧,再將內(nèi)容壓入堆棧,再將IPIP內(nèi)容壓入堆棧,最后內(nèi)容壓入堆棧,最后將段地址送將段地址送CSCS,偏移地址送,偏移地址送IPIP(SP)(SP)(SP)-2, (SP)+1:SP) (CS);(SP)(SP)(SP)

47、-2, (SP)+1:SP) (IP)(CS)(CS)SEG far_proc, (IP) (IP) OFFSET far_proc, 例:例:NAME1 PROC FARNAME1 PROC FAR CALL NAME2 CALL NAME2 RET RET NAME2 PROC NEAR NAME2 PROC NEAR . . RET RET NAME2 ENDP NAME2 ENDP NAME1 ENDP NAME1 ENDP 433.3.6 模塊定義與連接偽操作模塊定義與連接偽操作1、NAME 模塊名模塊名 ;NAME前面不允許加標(biāo)號前面不允許加標(biāo)號2、END 標(biāo)號標(biāo)號 ;END后面語

48、句不予處理后面語句不予處理3、PUBLIC 符號符號, ;說明某些符號是公共的;說明某些符號是公共的4、EXTRN 名字:類型名字:類型, 若為變量,類型可以是若為變量,類型可以是BYTE、WORD、DWORD例:例:EXTRN ALPHA:BYTE, BETA:WORD若為過程,類型可以是若為過程,類型可以是NEAR、FAR例:例:EXTRN SBRT:FAR若為數(shù)值,類型可以是若為數(shù)值,類型可以是ABS443.4 3.4 DOS系統(tǒng)功能調(diào)用介紹系統(tǒng)功能調(diào)用介紹 系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用由由OSOS提供的一組實現(xiàn)特殊功能的子程序供程序員在提供的一組實現(xiàn)特殊功能的子程序供程序員在程序中調(diào)用,以

49、減輕編程工作量。程序中調(diào)用,以減輕編程工作量。 系統(tǒng)功能調(diào)用有兩種,一種稱為系統(tǒng)功能調(diào)用有兩種,一種稱為DOS功能調(diào)用,另一種稱為功能調(diào)用,另一種稱為BIOS功功能調(diào)用。能調(diào)用。 用戶程序在調(diào)用這些系統(tǒng)服務(wù)程序時,不是用用戶程序在調(diào)用這些系統(tǒng)服務(wù)程序時,不是用CALL命令,而是采用命令,而是采用軟中斷指令軟中斷指令I(lǐng)NT n來實現(xiàn)。來實現(xiàn)。n=5n=51FH,調(diào)用,調(diào)用BIOS中的服務(wù)程序;中的服務(wù)程序;n=20n=203FH,調(diào)用,調(diào)用DOS中的服務(wù)程序;中的服務(wù)程序; 在在DOS系統(tǒng)系統(tǒng)中,功能調(diào)用都是用軟中斷指令中,功能調(diào)用都是用軟中斷指令I(lǐng)NT 21H來實現(xiàn)的。來實現(xiàn)的。45關(guān)于數(shù)據(jù)輸

50、入和輸出我們這里只討論關(guān)于數(shù)據(jù)輸入和輸出我們這里只討論鍵盤輸入鍵盤輸入和和顯示輸出顯示輸出,調(diào)用系統(tǒng)調(diào)用系統(tǒng)功能需要提供入口參數(shù)及所調(diào)用的功能號功能需要提供入口參數(shù)及所調(diào)用的功能號,調(diào)用結(jié)束返回結(jié)果。調(diào)用結(jié)束返回結(jié)果。461. 1. DOSDOS鍵盤功能調(diào)用鍵盤功能調(diào)用( (1) 1) 檢查鍵盤狀態(tài)檢查鍵盤狀態(tài)( (功能號功能號=0BH=0BH) ) MOV AH,0BHMOV AH,0BH INT 21H INT 21H例例1 1: LOOP: LOOP: MOV AH, OBHMOV AH, OBH INT 21H INT 21H INC AL INC AL JNE LOOP ; JNE

51、LOOP ;無鍵入則循環(huán)無鍵入則循環(huán)LOOPLOOP RET ; RET ;有鍵入停止循環(huán)返回有鍵入停止循環(huán)返回 47( (2) 2) 單字符輸入一個字符單字符輸入一個字符( (功能號功能號=1=1) ) MOV AH,1MOV AH,1 INT 21H INT 21H AL 例例2: GET_KEY: 2: GET_KEY: MOV AH,1MOV AH,1; ;等待鍵入字符等待鍵入字符 INT 21HINT 21H; ;結(jié)果在結(jié)果在ALAL中中 CMP AL,Y CMP AL,Y ; ;是是Y?Y? JZ YES JZ YES; ;是是, ,轉(zhuǎn)轉(zhuǎn)YESYES CMP AL,N CMP AL

52、,N ; ;是是N?N? JZ NO JZ NO; ;是是, ,轉(zhuǎn)轉(zhuǎn)NONO JMP GET_KEY JMP GET_KEY ; ;否則繼續(xù)等待輸入否則繼續(xù)等待輸入 YES: YES: NO: NO: 48( (3) 3) 輸入字符串輸入字符串( (功能號功能號=0AH=0AH) ) 此功能調(diào)用從鍵盤輸入一串字符并把它存入用戶指定的緩沖區(qū)中。此功能調(diào)用從鍵盤輸入一串字符并把它存入用戶指定的緩沖區(qū)中。 MOV AH, 0AHMOV AH, 0AH LEA DX, LEA DX, INT 2 INT 21 1H H用戶定義的輸入字符串的緩沖區(qū)格式用戶定義的輸入字符串的緩沖區(qū)格式 (預(yù)留的預(yù)留的N1

53、個字節(jié)的存儲單元個字節(jié)的存儲單元) 0DHN2N1 N1: 緩沖區(qū)長度緩沖區(qū)長度(最大鍵入字符數(shù)最大鍵入字符數(shù)) N2: 實際鍵入的字符數(shù)實際鍵入的字符數(shù)(不包括回車符不包括回車符) 49例:例: DATA SEGMENT BUFSIZE DB 25 ACTCHAR DB ? CHARTEXT DB 25 DUP(?) DB $ CODE SEGMENT MOV DX, OFFSET BUFSIZE MOV AH,0AH INT 21H 50 若用戶鍵入的字符數(shù)若用戶鍵入的字符數(shù)( (包括回車包括回車) )定義的定義的N1, ,本功能調(diào)用將不再接本功能調(diào)用將不再接收新的鍵入,且光標(biāo)不再向右移動

54、。收新的鍵入,且光標(biāo)不再向右移動。例例2 2:設(shè)在數(shù)據(jù)段定義鍵盤緩沖區(qū)如下:設(shè)在數(shù)據(jù)段定義鍵盤緩沖區(qū)如下: STR1 DB 10,?,10 DUP(?) STR1 DB 10,?,10 DUP(?) 調(diào)用調(diào)用DOSDOS功能的功能的0AH0AH號功能的程序段為:號功能的程序段為: LEA DXLEA DX,STR1STR1 MOV AH MOV AH,0AH0AH INT 21H INT 21H 此程序段最多從鍵盤接收此程序段最多從鍵盤接收1010個按鍵(包括回車)。個按鍵(包括回車)。512. 2. DOSDOS顯示功能調(diào)用顯示功能調(diào)用(1) (1) 在顯示器上顯示一個字符在顯示器上顯示一個

55、字符( (功能號功能號=2=2) ) MOV AH, 2MOV AH, 2 MOV DL, MOV DL, INT 21H INT 21H 例:在顯示器上顯示一個字符例:在顯示器上顯示一個字符A MOV AH, 2 MOV AH, 2 MOV DL, MOV DL, A ; ;或或MOV DL,MOV DL, 41H41H INT 21H INT 21H(2)(2)顯示字符串顯示字符串( (功能號功能號=9=9) ) MOV AH, 9MOV AH, 9 LEA DX, LEA DX, INT 21H INT 21H ; ;注意:被顯示的字符串必須以注意:被顯示的字符串必須以$結(jié)束。結(jié)束。52

56、附:附:BIOS功能調(diào)用功能調(diào)用BIOS:基本輸入輸出系統(tǒng),是固化在:基本輸入輸出系統(tǒng),是固化在EPROM中的一組實現(xiàn)基本輸入中的一組實現(xiàn)基本輸入輸出功能的子程序。輸出功能的子程序。BIOS調(diào)用通過多個軟中斷提供,調(diào)用方法為調(diào)用通過多個軟中斷提供,調(diào)用方法為:MOV AH,INT BIOS中的幾個主要中斷類型如下:中的幾個主要中斷類型如下:INT 10H屏幕顯示屏幕顯示INT 13H磁盤操作磁盤操作INT 14H串行口操作串行口操作INT 16H鍵盤操作鍵盤操作INT 17H打印機操作打印機操作每類中斷由包含許多子功能,調(diào)用時通過功能號指定。每類中斷由包含許多子功能,調(diào)用時通過功能號指定。 B

57、IOS功能調(diào)用說明見附錄。功能調(diào)用說明見附錄。533.5 3.5 匯編語言程序設(shè)計舉例匯編語言程序設(shè)計舉例例例1:源數(shù)據(jù)區(qū)與目標(biāo)數(shù)據(jù)區(qū)地址可能重疊的數(shù)據(jù)塊傳送:源數(shù)據(jù)區(qū)與目標(biāo)數(shù)據(jù)區(qū)地址可能重疊的數(shù)據(jù)塊傳送圖圖3.15 源數(shù)據(jù)區(qū)與目標(biāo)數(shù)據(jù)區(qū)地址重疊示意圖源數(shù)據(jù)區(qū)與目標(biāo)數(shù)據(jù)區(qū)地址重疊示意圖54注注1:若源數(shù)據(jù)區(qū)的起始地址低于目:若源數(shù)據(jù)區(qū)的起始地址低于目標(biāo)數(shù)據(jù)區(qū)的起始地址,應(yīng)從高地址開標(biāo)數(shù)據(jù)區(qū)的起始地址,應(yīng)從高地址開始傳送;否則應(yīng)從低地址開始傳送。始傳送;否則應(yīng)從低地址開始傳送。注注2:數(shù)據(jù)塊的長度在:數(shù)據(jù)塊的長度在CX中。中。55CODE SEGMENT ASSUME CS:CODEBLK_MO

58、V PROC FARSTART: PUSH DS ;DS壓入堆棧壓入堆棧 MOV AX, 0 PUSH AX ;AX壓入堆棧壓入堆棧 MOV AX, SI ;計算源數(shù)據(jù)區(qū)物理地址的高;計算源數(shù)據(jù)區(qū)物理地址的高16位位 SHR AX, 1 SHR AX, 1 SHR AX, 1 SHR AX, 1 ;AX內(nèi)容右移內(nèi)容右移4位位 MOV DX, DS ;段地址存入;段地址存入DX ADD AX, DX ;物理地址高;物理地址高16位存入位存入AX中中 MOV DS, AX ;結(jié)果送;結(jié)果送DS AND SI, 0FH ;源數(shù)據(jù)區(qū)物理地址低;源數(shù)據(jù)區(qū)物理地址低4位送位送SI56 MOV BX, DI

59、 ;計算目標(biāo)數(shù)據(jù)區(qū)物理地址的高;計算目標(biāo)數(shù)據(jù)區(qū)物理地址的高16位位 SHR BX, 1 SHR BX, 1 SHR BX, 1 SHR BX, 1 ;BX內(nèi)容右移內(nèi)容右移4位位 MOV DX, ES ;段地址存入;段地址存入DX ADD BX, DX ;物理地址高;物理地址高16位存入位存入BX中中 MOV ES, BX ;結(jié)果送;結(jié)果送ES AND DI, 0FH ;源數(shù)據(jù)區(qū)物理地址低;源數(shù)據(jù)區(qū)物理地址低4位送位送DI CMP AX,BX ;比較;比較DS與與ES的高的高16位位 JA DOWN ;若;若DS高,則轉(zhuǎn)移到高,則轉(zhuǎn)移到DOWN JB UP ;若;若ES高,則轉(zhuǎn)移到高,則轉(zhuǎn)移到U

60、P 57 CMP SI,DI ;若相等,則比較低;若相等,則比較低4位地址位地址 JA DOWN ;若;若SI高,則轉(zhuǎn)高,則轉(zhuǎn)DOWN JB UP ;若;若DI高,則轉(zhuǎn)高,則轉(zhuǎn)UP JMP EXIT ;若相等,則無條件退出;若相等,則無條件退出UP: STD ;(DF)=1,從高地址開始傳送,從高地址開始傳送 MOV AX,CX ;將數(shù)據(jù)段長度送;將數(shù)據(jù)段長度送AX DEC AX ;AX減減1 ADD SI,AX ;(SI) (SI)+(AX) ADD DI,AX ;(DI) (DI)+(AX) JMP TRANS58DOWN: CLD ;(DF)=0,從低地址開始傳送,從低地址開始傳送TRA

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論