匯編語言課件_第1頁
匯編語言課件_第2頁
匯編語言課件_第3頁
匯編語言課件_第4頁
匯編語言課件_第5頁
已閱讀5頁,還剩105頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

匯編語言

匯編語言程序的開發(fā)過程編輯文本編輯器,如EDIT.COM源程序:文件名.asm匯編匯編程序,如ML.EXE目標模塊:文件名.obj連接連接程序,如LINK.EXE可執(zhí)行文件:文件名.exe調(diào)試調(diào)試程序,如DEBUG.EXE應(yīng)用程序錯誤錯誤錯誤錯誤5.18086匯編語言基礎(chǔ)4.2宏匯編基本語法匯編源程序不區(qū)分字母大小寫。(1)組成:數(shù)據(jù)段、代碼段、堆棧段、附加段。(2)段定義起始:段名

SEGMENT

段定義結(jié)束:段名

ENDS

前后段名要一致,

每個段不超過64KB。(3)程序語句組成:標號助記符操作數(shù);注釋(4)整個程序結(jié)束:

END起始地址AASEGMENTSTR1DB'HELLO!'AAENDSBBSEGMENTSTR2DB6DUP(?)

BBENDSCCSEGMENTASSUMECS:CC,DS:AA,ES:BBSTART:CLDMOVAX,AAMOVDS,AXLEASI,STR1MOVAX,SEGSTR2MOVES,AXMOVDI,OFFSETSTR2MOVCX,6REPMOVSBMOVAH,4CHINT21HCCENDSENDSTART●●1)效率低(與人們描述計算過程的需要差距大);2)機器硬件的具體結(jié)構(gòu)聯(lián)系過于緊密——在一種結(jié)構(gòu)的機器上開發(fā)

的程序極難移植到另一種不同結(jié)構(gòu)的機器上去。5.18086匯編語言基礎(chǔ)匯編語言進行程序設(shè)計的優(yōu)點1)充分利用機器的硬件功能和結(jié)構(gòu)特點,加快程序的執(zhí)行速度,

減少目標程序所占用的存儲空間;2)用來編寫實時控制程序、實時通信程序,有時也用來編制某些

系統(tǒng)軟件程序。匯編語言進行程序設(shè)計缺點匯編語言基本語法在8086匯編中使用的語句可以分成2種類型這類指令能夠產(chǎn)生目標代碼,是CPU可以執(zhí)行的能夠完成特定功能的語句,主要由機器指令組成。在匯編時一條指令語句被翻譯成對應(yīng)的機器碼,對應(yīng)著特定的操作。

指令語句:偽指令語句:偽指令語句是為匯編程序和連接程序提供一些必要控制的管理性語句,它不產(chǎn)生目標代碼,僅僅在匯編過程中告訴匯編程序應(yīng)如何匯編,并完成相應(yīng)的偽操作。5.1.1格式:指令語句:[標號:]

指令助記符

[操作數(shù)]

[;注釋]偽指令語句:[名字

]偽指令助記符

[操作數(shù)]

[;注釋]匯編語言源程序中的語句可以由四項組成,格式如下:

[名字]操作符

[操作數(shù)][;注釋]匯編語言語句5.1.2●1.匯編語言格式●名字項:是程序設(shè)計人員自己定義的符號,用于代表內(nèi)存單元的地址,表示本條語句的符號地址。一般來說,名字可以是和,統(tǒng)稱為標識符。變量標號名字項的組成規(guī)則

組成標號的字符:A?Z,a?z,0?9,?,@,$,下劃線;標號的最大長度為3l(字符個數(shù));標號的第一個字符不能是0?9的數(shù)字;機器指令語句中標號必須以冒號結(jié)束,偽指令語句中的標號不允許有冒號。匯編語言語句5.1.25.1.2匯編語言語句

●偽指令符:指定匯編程序要完成的具體操作如:數(shù)據(jù)定義偽指令DB、DW、DD,段定義偽指令SEGMENT,假定偽指令A(yù)SSUME等。

●操作數(shù):偽指令后面的操作數(shù)可以是常數(shù)、標號、變量、表達式等,其個數(shù)由具體的偽指令決定,各個操作數(shù)之間必須以“逗號”分隔?!褡⑨專簜沃噶畹淖⑨尡仨氁浴埃弧遍_始,其作用同指令語句中的注釋部分。

常量:匯編語句中出現(xiàn)的各種常數(shù)表達式數(shù)值常量

直接以數(shù)值形式出現(xiàn)在匯編語句中的常量(1)數(shù)字常量(2)字符常量:

字符常量是用單引號或雙引號引起來的一個或多個字符。字符串常量是以各字符的ASCⅡ碼表示的。

[例]‘A’用41H表示,字符串‘A1B2’用41H,31H,42H,32H表示。常量5.1.2匯編語言語句變量:是在程序運行期間可以隨時修改數(shù)值的數(shù)據(jù)對象。主要用來定義M中的數(shù)據(jù)。數(shù)據(jù)存放地址的符號表示。

變量的三種屬性段屬性:即指定義變量所在段的段首址;偏移屬性:該變量所在段的偏移地址;類型屬性:指在對該變量中每個元素所包含的字節(jié)數(shù);它可以是字節(jié)類型(BYTE,),字類型(WORD),雙字類型(DWORD)等.變量匯編語言語句5.1.2標號:是一條指令語句的符號地址。只有在需要轉(zhuǎn)向一條指令語句時,才為該指令語句設(shè)置標號,以便在轉(zhuǎn)移類指令(含子程序調(diào)用指令)中直接引用這個標號。標號可作為轉(zhuǎn)移類指令的操作數(shù),即轉(zhuǎn)移地址。格式:標號:指令標號也具有三種屬性(同變量)

段屬性偏移地址屬性類型屬性標號匯編語言語句5.1.2表達式:用來表達語句中的常量?變量和標號,其運算由匯編程序來完成,將得到的結(jié)果作為操作數(shù),參加指令所規(guī)定的操作。包括:數(shù)值表達式和地址表達式●數(shù)值表達式:由常量和算術(shù)運算符、邏輯運算符、關(guān)系運算符組合成的表達式,其結(jié)果為數(shù)值。算術(shù)運算符邏輯運算符關(guān)系運算符●地址表達式:其結(jié)果為存儲器的地址。匯編語言語句5.1.2表達式5.1.2匯編語言語句5.1.3偽指令2.數(shù)據(jù)定義偽指令

變量代表內(nèi)存中的數(shù)據(jù)區(qū),定義變量就是為數(shù)據(jù)區(qū)中的數(shù)據(jù)分配存儲單元,并給該數(shù)據(jù)區(qū)取一個名字——變量名。格式:[變量名]數(shù)據(jù)定義偽指令

操作數(shù)

[;...]變量名用符號地址表示,作用與指令的標號相同。偽指令助記符常用的有以下幾種:

DB(字節(jié))、DW(字)、DD(雙字)、

DQ(四字)、DT(五字),其中DB與DW最常用。操作數(shù)是賦給變量的初值。

[例]一組數(shù)據(jù)定義如下:D1DB12,10HD2DW10,100H,-4D3DD2*30,0ABFDHD4DB'HELLO'D5DB?,?,10D6DB2DUP(1,4,?)注釋:定義的數(shù)據(jù)按各自類型以二進制形式順序存入內(nèi)存中。如果是字符型數(shù)據(jù)則存放其ASCII碼。?表示不寫入任何數(shù)據(jù),只是分配空單元。NDUP(…)表示存入的數(shù)據(jù)以括號中的規(guī)律重復(fù)的排列N次,DUP可以嵌套.[例](1)ABDB0,?,?,?,0DFDW?,52,?(2)AY1DB2DUP(0,1,2,?)DFAY2DB100DUP(?)

52D

AY2

100個字節(jié)

00---00--3400--000102-000102--:-AY1AB操作數(shù)項5.1.2匯編語言程序格式表達式包括:數(shù)值表達式和地址表達式數(shù)值表達式:由常量和算術(shù)運算符、邏輯運算符、關(guān)系運算符組合成的表達式,其結(jié)果為數(shù)值。

★算術(shù)運算符

★邏輯運算符

★關(guān)系運算符地址表達式:其結(jié)果為存儲器的地址。說明:1.既可以用于數(shù)值表達式又可用于地址表達式;

2.除法表示兩個數(shù)相除只取商的整數(shù)部分;

3.而模除則表示兩個整數(shù)相除后取余數(shù)。包括:加(+)、減(-)、乘(*)、除(/)模除(MOD)、SHL(左移)、SHR(右移)1.算術(shù)運算符5.1.2匯編語言語句【例】用算術(shù)運算符進行數(shù)值表達式運算。

┆NUM1EQU 25*4–50 ;NUM1=50NUM2EQU NUM1/7;NUM2=7NUM3 DB NUM1MOD7;NUM3=1NUM5EQU 0FH ┆MOV AL,NUM5SHL4;(AL)=11110000BMOV BL,NUM5SHR4;(BL)=00000000B1.算術(shù)運算符5.1.2匯編語言語句包括:邏輯乘(AND)、邏輯加(OR)、按位加(XOR)、邏輯非(NOT)四種運算。說明:1.由于邏輯運算是按位操作,且在匯編過程中完成,2.運算的結(jié)果仍為整數(shù)常量。2.邏輯運算符5.1.2匯編語言語句【例】用邏輯運算符進行運算MOV AL,34HAND0FH ;04H→ALMOV BL,05HOR30H ;35H→BLMOV CX,NOT00FFH ;0FF00H→CXMOV DX,789AHXOR000FH ;7895H→DX2.邏輯運算符5.1.2匯編語言語句包括:相等(EQ),不等(NE),小于(LT),大于(GT),小于等于(LE)及大于等于(GE)。

說明:1.關(guān)系運算符是在兩個常量之間進行的;2.其結(jié)果只有兩種情況:若關(guān)系成立則結(jié)果為0FFFFH(16為全1);否則結(jié)果為零。3.因而運算的結(jié)果仍為整數(shù)常量。3.關(guān)系運算符5.1.2匯編語言語句【例】用關(guān)系運算符進行數(shù)值表達式運算。NUM1 DB 10LT5 ;NUM1=0NUM2DB 0AAAAHGT7FFFH

;NUM2=0FFFFHMOV AX,‘A‘EQ41H ;0FFFFH→AXMOV BX,NUM2LTNUM1;0→BX3.關(guān)系運算符5.1.2匯編語言語句包括:TYPE、、LENGTH、SIZEOFFSET、SEG操作符說明:1.地址操作符的返回值都是數(shù)值,相當于立即數(shù);是匯編時由MASM自動計算的。2.它們總是加在運算對象之前,3.返回的結(jié)果是運算對象的某個參數(shù)值。5.數(shù)值返回運算符5.1.2匯編語言語句包括:TYPE、、LENGTH、SIZEOFFSET、SEG操作符

類型

類型值字節(jié)1字2雙字4四字8五字10NEAR0FFFFH(-1)FAR0FFFEH(-2)1)取類型操作符TYPE

格式:TYPE變量/標號功能:取變量或標號的類型.5.數(shù)值返回運算符5.1.2匯編語言語句[例]ARRAY DW1,

2,

3MOVAX,05HADD AX,TYPEARRAY;AX=5+2=73)取變量所含M單元大小操作符SIZE

格式:SIZE變量 功能:返回直接分配給指定變量的字節(jié)數(shù)。即LENGTH*TYPE2)取變量所含M單元個數(shù)操作符LENGTH格式:LENGTH 變量功能:如果變量是用DUP說明,則返回DUP定義變量的重復(fù)次數(shù),否則,返回值為1。5.數(shù)值返回運算符4)取偏移地址操作符OFFSET

格式:OFFSET 地址表達式功能:加在變量和標號之前,返回地址表達式的偏移地址,作為立即數(shù)使用(匯編時求值)[例]設(shè)DAAS為標號,F1為變量

MOVSI,OFFSETDAASMOVDI,OFFSETF15.數(shù)值返回運算符5)取段地址操作符SEG

格式:SEG 地址表達式功能:加在變量和標號之前,返回地址表達式的段地址,作為立即數(shù)使用(匯編時求值)。[例]設(shè)DAAS為標號,F1為變量

MOVAX,

SEGDAASMOVAX,

SEGF1MOVDS,

AX;將段地址送DS5.數(shù)值返回運算符[例1]DATASEGMENTADW50,100,-70HBDW‘ABCDEF’DATAENDS…………..MOVAX,SEGBMOVBX,0FFSETBMOVCX,TYPEAMOVDX,TYPEB

5.數(shù)值返回運算符[例2]TYPE;LENGTH;

SIZE是什么?A1DB?,’ABCD’A2DD?,10DUP(0)A3DW10DUP(0)A4DW1,2,3,4;TYPE:1;LENGTH:1;SIZE:1;TYPE:4;LENGTH:1;SIZE:4;TYPE:2;LENGTH:10;SIZE:20;TYPE:2;LENGTH:1;SIZE:25.1.2匯編語言語句●

PTR操作符

格式:類型

PTR符號名功能:該操作符用于指定操作數(shù)的類型。屬性操作符6.●

段操作符格式:段寄存器名:地址表達式功能:用來表示變量或地址表達式的段屬性。6.屬性運算符1.PTR格式:類型PTR變量或標號功能:指定地址表達式的類型。說明:1.返回一個指定類型的內(nèi)存操作數(shù)或標號,而地址不變。2.對于內(nèi)存操作數(shù),類型包括BYTE、WORD、

DWORD等。對于標號,類型包括NEAR和FAR。3.PTR只是臨時改變操作數(shù)的類型,或必須明確指出類型的場合。5.1.2匯編語言語句包括:PTR;SHORT操作符[例]BUF DB31H,32HMOV AL,BUF ;(AL)=31HMOV BX,WORDPTRBUF ;臨時指定BUF為字型,(BX)=3231HLEA DI,BUFMOV BYTEPTR[DI],6 ;明確指出DI指向字節(jié)型單元,否則匯編時出錯2.SHORT格式:SHORT短標號功能:用來修飾JMP指令中轉(zhuǎn)向地址的屬性,指出轉(zhuǎn)向地址是在下一條指令地址的-128--+127字節(jié)范圍之內(nèi)。

包括:PTR;SHORT操作符

[例]

JMPSHORTLAB6.屬性運算符5.1.2匯編語言語句優(yōu)先級運算符(操作符)

低括號中的表達式LENGTH,SIZE,PRT,OFFSET,SEG,TYPE,段前綴HIGH,LOW*,/,MOD,SHL,SHR+,-EQ,NE,LT,TE,GT,GENOTOR,XORSHORT運算的優(yōu)先級別7.5.1.2匯編語言語句

格式:符號名EQU表達式功能:為常量、表達式及其他各種符號定義一個等價的符號名,但它不申請存儲單元。說明:EQU后的表達式可以是數(shù)值、字符串、寄存器名、指令助記符等.EQU不能重復(fù)定義,

CTEQU1CTEQUCT+1

偽指令語句1.符號定義偽指令5.1.3●等價偽指令●等號偽指令格式:符號名=常數(shù)表達式功能:為常量、表達式及其他各種符號定義一個等價的符號名,并能對所定義的符號多次重復(fù)定義,且以最后一次定義的值為準。說明:

=后的表達式只能是常數(shù),對于字符或字符串,匯編時按整數(shù)處理。例如:COUNT=20 MOVCX,COUNT;

等價于MOVCX,20=可重復(fù)定義,其作用域從定義點到重新定義之前。偽指令語句1.符號定義偽指令5.1.3

[例]X1EQU256BEQU[BP+6]B8EQUDS:[BP+34]LPNEQULP1+6SCAEQUSCASWX1=4X1=35表達式賦值偽指令格式:

5.1.3偽指令語句段定義偽指令段名SEGMENT[定位方式][組合方式][類別]

;段內(nèi)所有語句段名ENDS說明:同一個段的段名必須相同;段中間的語句可以是指令語句和偽指令語句;[例]定義數(shù)據(jù)段:將定義的一些數(shù)據(jù)放置在數(shù)據(jù)段,但并未指明所對應(yīng)的段寄存器。以后在代碼段中用ASSUME偽操作來指定其對應(yīng)關(guān)系,但也不能把段地址裝入相應(yīng)的段寄存器,需要在代碼段中用MOV指令實現(xiàn)。5.1.3偽指令語句段定義偽指令舉例DATASEGMENTDB5,?,78H;定義的數(shù)據(jù)

DW342H,0ABC8HDATAENDSCODE_SEGSEGMENTASSUMECS:CODE_SEG,DS:DATASTART:

MOVAX,DATA;將數(shù)據(jù)段的段基值裝入DS寄存器

MOVDS,AX

MOVAX,4C00H;結(jié)束程序

INT21HCODE_SEGENDSENDSTART上例中定義了一個數(shù)據(jù)段,將定義的一些數(shù)據(jù)放置在其中。但并未指明所對應(yīng)的段寄存器。以后在代碼段中用ASSUME偽操作來指定其對應(yīng)關(guān)系,但也不能把段地址裝入相應(yīng)的段寄存器,需要在代碼段中用MOV指令實現(xiàn)。ASSUME段寄存器名:段名1[,段名2……]段定義時,必須將段和段寄存器自之間建立對應(yīng)關(guān)系,可以用ASSUME偽操作來實現(xiàn),其格式為:

說明:定位方式(ALIGN_TYPE)

此參數(shù)給出了該段的起始地址確定方式。有四種類型:

PAGE:頁邊界,起始地址的低8位為0,即能被256整除。

PARA:段邊界,起始地址的低4位為0,即能被16整除。默認

WORD:字邊界,起始地址的最低位為0,即能被2整除。

BYTE:任意有效地址。組合方式(COMBINE_TYPE)

此參數(shù)通知鏈接程序本段與其他段的鏈接方式,有六種類型:

PUBLIC:將本段與其他同名同類別的段連接起來,共用一個段的起始地址,形成一個物理段,連接次序由鏈接命令指定。

STACK:指定本段在運行時為堆棧段,其他與PUBLIC相同。段定義偽指令COMMON:表示本段與同名同類別的段共用相同的起始地址,它們之間是覆蓋連接。MEMORY:將本段放置在所有其他段連接以后的更高的地址上,如有多個MEMORY存在,則第一個段按MEMORY方式安排,其他段與該段用覆蓋方式。AT表達式:表示本段放置在由表達式值指定的地址上。即本段按絕對地址定位,段地址為數(shù)值表達式的值,位移量為0。如:AT1234H;表示該段段基址為12340H??杖保罕硎颈径尾慌c任何段連接。類別('CLASS')

用單括號括起來的類別名是一個合法的符號名,在鏈接時凡類別名相同的段按先后次序連接起來。段定義偽指令

例:CODE SEGMENTAPRC PROC NEAR ADD AX,BX …… RETAPRC ENDPSTART:

MOV AX,CX CALL APOC ……CODE ENDS END START5.1.3偽指令語句

過程定義偽指令格式:功能:完成過程定義,在過程體中實現(xiàn)過程的操作功能。過程名PROC……過程體RET過程名ENDP5.1.3其它偽指令1.置匯編地址計數(shù)器偽指令格式:

ORG常數(shù)表達式功能:指示匯編程序在它以后的程序段或數(shù)據(jù)塊存放起點的偏移地址。說明:在匯編程序?qū)υ闯绦騾R編的過程中,使用地址計數(shù)器保存當前正在匯編的語句地址(段內(nèi)偏移量),匯編語言允許用戶直接用$引用地址計數(shù)器的當前值。 [例1]ORG100H;設(shè)置地址計數(shù)器的值為100H

[例2]ORG$+6;跳過6個字節(jié)的存儲區(qū)域練習(xí)題選擇題1.下面指令執(zhí)行后,變量DAB中的內(nèi)容是(C)。

DAWDW2A05H

DABDB0FAH

MOVAL,BYTEPRTDAW

SUBDAB,AL

A.0DAHB.0FAHC.0F5HD.0D0H2.設(shè)數(shù)據(jù)段中已有:

DA1DB12H,34H

DA2DW56H,78H

下面有語法錯誤的語句是(B)

A.MOVDA2,AXB.MOVDA1+1,AX

C.MOVBYTEPTRDA2+1,ALD.MOVWORDPTRDA1+1,AX3、BUFDW10HDUP(3DUP(2,10H),3,5)

上述語句匯編后,為變量BUF分配的存儲單元字節(jié)數(shù)是(B)。

A.80HB.100HC.124D.192(字節(jié)數(shù)=2X16X(3X2+2)=256)4.匯編語言源程序中,每個語句由四項組成,如語句要完成一定功能,那么該語句中不可省略的項是(B)。

A.名字項B.操作項C.操作數(shù)項D.注釋項5.在ARDB10DUP(3,2DUP(9))中,含數(shù)據(jù)字0309H的個數(shù)是(D)

A.10B.20C.0D.96.將變量的偏移地址存入數(shù)據(jù)區(qū)宜用偽操作助記符是(A)

A.DWB.DBC.DDD.DQ09090309090303127、設(shè)DS=8225H,DI=3942H,指令NEGBYTEPTR[DI]操作數(shù)的物理地址是(A)A、85B92HB、86192HC、BB690HD、12169H8、下列寄存器組中在段內(nèi)尋址時可以提供偏移地址的寄存器組是(B)

A、AX,BX,CX,DXB、BX,BP,SI,DI

C、SP,IP,BP,DXD、CS,DS,ES,SS9、循環(huán)指令LOOPNZ終止循環(huán)的條件是(B)。

A、CX=0,且ZF=0B、CX=0,或ZF=1

C、CX≠0,且ZF=0D、CX≠0,或ZF=110、與MOVBX,OFFSETVAR指令完全等效的指令是(D)。

A、MOVBX,VARB、LDSBX,VAR

C、LESBX,VARD、LEABX,VAR11、執(zhí)行下面指令序列后,結(jié)果是(A)。

MOVAL,82HCBW

A、AX=0FF82HB、AX=8082HC、AX=0082HD、AX=0F82H

12.沒有語法錯誤的輸出指令是(B)

A.OUTAX,30H B.OUTDX,AL

C.OUTAL,DX D.OUT30H,AH13.下列語句中能與“DA1DB32H,34H”語句等效的是(A)

A.MOVDA1,32HMOVDA1+1,34HB.MOVDA1,32MOVDA1+1,34C.MOVWORDPTRDA1,3234HD.MOVWORDPTRDA1,‘24’14.用MOV指令將十進制數(shù)89以非壓縮BCD碼格式存入AX,可使用的指令是(D)

A.MOVAX,89 B.MOVAX,0809

C.MOVAX,89H D.MOVAX,0809H已知數(shù)據(jù)段定義如下:DATASEGMENT

VADB10H

VBDW3*20

MSGDB‘HELLO!’

COUNTEQU15

BUFDWCOUNTDUP(5,3DUP(1,2),0)DATAENDS問題:(1)畫出數(shù)據(jù)段中數(shù)據(jù)存放情況(2)執(zhí)行MOVBX,0FFSETVA后,(BX)=

(3)執(zhí)行MOVCX,TYPEBUF后,(CX)=

(4)用一條指令將字母‘O’取到AL中.

(5)經(jīng)匯編后,BUF占有的存儲空間是字節(jié)答:(2)0(3)2(4)MOVAL,MSG+4(5)240填空題

2.下列程序段求數(shù)組ARY的累加和,

請將程序填寫完整。

ARYDW45H,68H,…,0ABC1H,9600H;共10項

COUNTDW10

(1)__________

MOVCX,COUNT

XORAX,AX

AGAIN:ADDAX,[SI]

ADDSI,2

(2)____________答:(1)LEASI,ARY(2)LOOPAGAIN3.程序分析題

MOVAX,9B47H

MOVBX,0B568H

ADDAX,BX

JNOL1

JNCL2

SUBAX,BX

JNCL3

JNOL4

JMPSHORTL5

問:(1)程序執(zhí)行后,(AX)=?

(2)程序轉(zhuǎn)向哪個標號?答:(1)9B47H(2)L5

4.下列程序測試DL寄存器D6和D2位。若同時為0,轉(zhuǎn)ZERO,置AX為0,否則轉(zhuǎn)NO_ZERO,置AX為1。

TESTDL,(1)_________

JZZERONO_ZERO:MOVAX,1

(2)________

ZERO:MOVAX,0

NEXT:

答:(1)01000100B

(2)JMPNEXT5、ARYDW10DUP(?)┇

MOVAL,TYPEARY

MOVBL,LENGTHARY

MOVCL,SIZEARY

上述MOV指令序列執(zhí)行后的結(jié)果是什么?

答:AL=2、BL=10、CL=2*10=206、設(shè)某數(shù)據(jù)段:

DATA

SEGMENT

ORG20H

NUM1=8

NUM2=NUM1+10H

DA1DB'COMPUTER'

DB0AH,0DH

COUNTEQU$-DA1

DA2DW'CO','MP','UT','ER'

DATA

ENDS試回答:(1)DA1的偏移地址是()(2)COUNT的值是()(3)DA2+5字節(jié)單元的內(nèi)容是()(1)0020H(2)002AH-0020H=0AH=10(3)‘U’7、DATASEGMENT

S9DB0,1,2,3,4,5,6,7,8,9DATAENDS

LEASI,S9

LEA,DI,S9+1

MOVCX,5LOP:MOVAL,[SI]

XCHGAL,[DI]

MOV[SI],AL

ADDSI,2

ADDDI,2

LOOPLOP上述程序段運行后,S9開始的10個字節(jié)存儲單元內(nèi)容是什么?(1,0,3,2,5,4,7,6,9,8)8.XDW0123H,2A3EH,89DFH

COUNTEQU$-X

YDBCOUNTDUP(0)

LEASI,X

LEADI,Y

MOVCX,COUNT

CLD

REPMOVSB程序段執(zhí)行后,Y數(shù)據(jù)區(qū)各字節(jié)單元的內(nèi)容是什么?Y:23H,01,3E,2A,DF,89H

9.下面程序段完成將以BUFF為首地址的內(nèi)存區(qū)域全部存儲0FFH數(shù)據(jù)。請在空白處添上適當?shù)闹噶睿恳豢瞻滋幹惶硪粭l指令)。

BUFFDB20HDUP(?)

___1__

MOVAX,0FFFFH

MOVCX,10H

___2__________

REPSTOSW(1)LEADI,BUFF(2)CLD[復(fù)習(xí)]8086/8088指令系統(tǒng)指令類別助記符數(shù)據(jù)傳送通用傳送輸入輸出目標地址傳送標志傳送算術(shù)運算加法減法乘法除法轉(zhuǎn)換MOV,PUSH,

POP,XCHG,XLATIN,OUTLEA,LDS,LESLAHF,SAHF,PUSHF,POPFADD,ADC,INC,

,DAASUB,SBB,DEC,NEG,CMP,

DASMUL,IMUL,DIV,IDIV,CBW,CWD邏輯指令邏輯運算移位

循環(huán)移位串處理串操作重復(fù)控制控制轉(zhuǎn)移轉(zhuǎn)移無條件轉(zhuǎn)移條件轉(zhuǎn)移循環(huán)控制過程調(diào)用中斷指令處理器控制AND,OR,XOR,NOT,TESTSHL,SAL,SHR,SARROL,ROR,RCL,RCRMOVS,CMPS,SCAS,LODS,STOSREP,REPE/REPZ,REPNE/REPNZJMPJA/JNBE,JAE/JNB,JB/JNAE,JBE/JNA,JC,JCXZ,JE/JZ,JNS,JO,JS,JG/JNLE,JGE/JNL,JL/JNGE,JLE/JNG,JNC,JNE/JNZ,JNO,JNP/JPO,JP/JPELOOP,LOOPE/LOOPZ,LOOPNE/LOOPNZCALL,RETINT,INTO,IRETCLC,STC,CMC,CLD,STD,CLI,STI,NOP,HLT,WAIT,ESC,LOCK指令類別助記符[補充內(nèi)容]在DOS環(huán)境下,匯編語言可以通過DOS系統(tǒng)功能調(diào)用中斷(INT21H)使用輸入輸出設(shè)備。INT21H可以實現(xiàn)對輸入輸出設(shè)備的管理、文件管理、磁盤管理、設(shè)置日期和時間等。采用DOS功能調(diào)用方法:(以INT21H為入口)將所要調(diào)用的功能號送入AH中;根據(jù)該功能的規(guī)定將入口參數(shù)送到相應(yīng)的寄存器;用INT21H

指令轉(zhuǎn)入指定子程序;運行子程序結(jié)束時按規(guī)定取得出口參數(shù)。[補充內(nèi)容]1.程序結(jié)束,返回DOS狀態(tài)(功能號4CH)入口參數(shù):

無出口參數(shù):無功能:正常結(jié)束,返回DOS狀態(tài),將對微機的控制權(quán)交給操作系統(tǒng)。一個獨立運行的程序段必須設(shè)置的結(jié)束工作命令。(尤其主程序不是用過程編寫時)調(diào)用格式:

MOVAH,4CHINT21H[補充內(nèi)容]2.顯示字符串(功能號09H)入口參數(shù):DS:DX指向要輸出的以‘$’(24H)結(jié)尾的字符串首地址。出口參數(shù):無功能:在當前光標位置,顯示字符串,遇‘$’停止顯示,且光標右移。(‘$’不算在顯示的字符串之內(nèi))說明:字符串必須以$結(jié)束(輸出字符串)調(diào)用方法示例String db‘Hello!’,‘$‘mov ax,segString mov

ds,ax mov

dx,offsetStringmov ah,9int 21h 輸出字符串“Hello!”到顯示器●衡量程序質(zhì)量的標準:(1)程序正確、完整

(2)程序的模塊化、易讀性

(3)程序的執(zhí)行速度快

(4)程序所占內(nèi)存空間小●匯編語言程序設(shè)計的步驟:(1)分析問題

(2)確定算法

(3)繪制流程圖

(4)分配存儲空間及工作單元(包括寄存器)

(5)根據(jù)流程圖逐條編寫程序

(6)靜態(tài)檢查5.2匯編語言程序設(shè)計

●匯編語言程序設(shè)計的方法:把系統(tǒng)劃分成多個模塊,模塊的詳細設(shè)計采用流程圖的方法;采用結(jié)構(gòu)程序設(shè)計的方法設(shè)計程序。即程序的每一部分由若干個單元組成;每個單元包含一個有限結(jié)構(gòu)集;每個結(jié)構(gòu)有一個入口和一個出口(便于查錯及調(diào)試)結(jié)構(gòu)程序設(shè)計有三種:順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。由特定的幾何圖形、指向線、文字說明來表示數(shù)據(jù)處理的步驟;包括:起止框、判斷框、處理框、指向線、連接框:流程圖優(yōu)點:這種方法比較直觀、層次清晰、便于發(fā)現(xiàn)錯誤,細化后的流程圖更易于匯編語言的代碼實現(xiàn)。5.2匯編語言程序設(shè)計

順序程序:完全按指令書寫的前后順序執(zhí)行每一條指令,是最基本、最常見的程序結(jié)構(gòu)。執(zhí)行順序程序的特點:指令或語句是按順序執(zhí)行的,沒有分支或循環(huán)。它只有一個起始框、一個結(jié)束框和一至多個執(zhí)行模塊。順序結(jié)構(gòu)中的執(zhí)行模塊可以是一個指令、一條語句或完成某一功能的程序。數(shù)據(jù)轉(zhuǎn)換.例[5-22]計算.例[5-23]5.2.1順序程序設(shè)計5.2匯編語言程序設(shè)計

B500HEXDATA設(shè)內(nèi)存單元DATA存放一個無符號數(shù)據(jù),編制程序?qū)⑵洳痖_成兩位16進制數(shù),并存入HEX和HEX+1單元的低4位,HEX存放高位16進制數(shù),HEX+1存放低位16進制數(shù)。例題5-225.2.1順序程序設(shè)計拆開0B05例題5-22DSEGSEGMENTDATADB0B5HHEXDB0,0DSEGENDSCODESEGMENTASSUMECS:CODE,DS:DSEGSTART:MOVAX,DSEGMOVDS,AXMOVAL,DATAMOVAH,ALANDAL,0F0HMOVCL,04SHRAL,CLMOVHEX,ALANDAH,0FHMOVHEX+1,AHMOVAH,4CHINT21HMAINENDPCODEENDSENDSTART開始DS初始化數(shù)據(jù)送AL,副本送AH結(jié)束取高4位送HEX取低4位送HEX+15.2.1順序程序設(shè)計1500RLTYARGA例題5-235.2.1順序程序設(shè)計計算Y=5X+8,設(shè)X為無符號字節(jié)數(shù)據(jù),且在ARGX單元存放,計算結(jié)果存入RLTY單元。SSEG SEGMENT STACK STK DB 20DUP(0)SSEG ENDS DSEG SEGMENT ARGX DB 15RLTY DW 0DSEG ENDS

CSEG SEGMENT ASSUME CS:CSEG,DS:DSEGASSUME SS:SSEG例題5-235.2.1順序程序設(shè)計CALC:MOVAX,DSEG MOV DS,AX MOV AX,SSEG MOV SS,AX MOVSP,LENGTHSTK MOVAL,ARGX MOV BL,05 MUL BL MOV BX,08 ADD AX,BX MOVRLTY,AX MOV AX,4C00H INT21HCSEGENDS END CALC開始DS,SS,SP初始化X送AL結(jié)束5X送BL5X+8送AX存結(jié)果分支程序設(shè)計5.2.2分支程序根據(jù)條件是真或假決定執(zhí)行與否;判斷的條件是各種指令,如CMP、TEST等執(zhí)行后形成的狀態(tài)標志;轉(zhuǎn)移指令Jcc和JMP可以實現(xiàn)分支控制;還可以采用MASM6.x提供的條件控制偽指令實現(xiàn)JCC條件成立

?分支語句體YesNo(1)單分支結(jié)構(gòu)條件成立跳轉(zhuǎn),否則順序執(zhí)行分支語句體;注意選擇正確的條件轉(zhuǎn)移指令和轉(zhuǎn)移目標地址。分支程序設(shè)計5.2.2取最大值例[5-24]JCC條件成立

?分支語句體1YesNo(2)雙分支結(jié)構(gòu)分支語句體2JMP條件成立跳轉(zhuǎn)執(zhí)行第2個分支語句體,否則順序執(zhí)行第1個分支語句體。注意第1個分支體后一定要有一個JMP指令跳到第2個分支體后。一般必須先安排比較或算術(shù)、邏輯運算等影響標志位的指令,然后用Jcc指令判斷條件,以實現(xiàn)分支轉(zhuǎn)移。求分段函數(shù)例[5-25]例題5-24分支程序設(shè)計5.2.2設(shè)內(nèi)存中有三個互不相等的無符號字數(shù)據(jù),分別存放在ARG開始的字單元,編制程序?qū)⑵渲凶畲笾荡嫒隡AX單元。SSEG SEGMENTSTACKSTK DB20 DUP(0)SSEG ENDSDSEG SEGMENTARG DW7138H,84A6H,29EHMAX DW ?DSEG ENDS3871A6849E02--MAXARGSI::CSEG SEGMENTASSUMECS:CSEG,DS:DSEGASSUME SS:SSEGSTART:MOVAX,DSEGMOV DS,AXMOV AX,SSEGMOV SS,AXMOV SP,SIZESTKLEA SI,ARG MOV AX,[SI]

MOV BX,[SI+2]

CMP AX,BX;兩數(shù)比較

JAE FMAX1;AX中的數(shù)大

MOV AX,BX FMAX1:CMPAX,[SI+4]

JAE FMAX2;AX中的數(shù)大

MOV AX,[SI+4] FMAX2:MOVMAX,AX MOV AX,4C00HINT 21HCSEGENDSENDFSTART開始DS,SS,SP,SI初始化取第1個數(shù)送AX取第2個數(shù)送BX結(jié)束大數(shù)送AX第3個數(shù)送AX存結(jié)果AX≥BX?AX≥第3個數(shù)?NNYYDSEG SEGMENTX DW?Y DW?DSEG ENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEGMOV DS,AXLEA SI,X MOVAX,[SI]

ANDAX,AX

JNSLP1MOVY,0FFH;X<0JMP END1LP1:JNZLP2MOV Y,00H

JMPEND1LP2:MOVY,O1HEND1:MOVAH,4CHINT 21HCSEGENDSENDFSTART編寫程序?qū)崿F(xiàn)函數(shù):

1(X>0)Y=0(X=0)

-1(X<0)例題5-25開始DS,SI初始化X送AX結(jié)束Y=-1AX≥0?AX=0?NNYYY=0Y=1DO-UNTIL結(jié)構(gòu)

DO-WHILE結(jié)構(gòu)

1.DO-WHILE結(jié)構(gòu):先判斷、后執(zhí)行其特點:是進入循環(huán)后,先判斷循環(huán)控制條件。若滿足循環(huán)結(jié)束條件,則退出循環(huán);否則,繼續(xù)執(zhí)行循環(huán)體。循環(huán)體可能一次也不執(zhí)行。2.DO-UNTIL結(jié)構(gòu):先執(zhí)行、后判斷其特點:是進入循環(huán)后,先執(zhí)行循環(huán)體,然后判斷循環(huán)控制條件。若滿足循環(huán)結(jié)束條件,則退出循環(huán);否則,繼續(xù)執(zhí)行循環(huán)體。循環(huán)體至少執(zhí)行一次。這兩種結(jié)構(gòu)一般可以隨習(xí)慣使用,但在初始循環(huán)次數(shù)可能為0的情況下則必須使用DO_UNTIL結(jié)構(gòu)。循環(huán)程序設(shè)計1、循環(huán)的結(jié)構(gòu)形式

5.2.3

循環(huán)程序一般應(yīng)包括以下幾部分:①循環(huán)初始化。它包括設(shè)置循環(huán)次數(shù)的初始值、地址指針的初始設(shè)置等。

②循環(huán)體這是循環(huán)工作的主體,包括要重復(fù)執(zhí)行的操作,以及循環(huán)的修改部分。修改部分包括地址指針的修改、循環(huán)控制條件的修改等。

③循環(huán)控制部分它是控制循環(huán)的關(guān)鍵,判斷循環(huán)條件滿足與否。

(一)計數(shù)控制

適用于循環(huán)次數(shù)已知的情況,假設(shè)循環(huán)次數(shù)為N,

常用方法為正計數(shù)和倒計數(shù)。1.倒計數(shù)

MOVCX,N;設(shè)置循環(huán)初值部分

……LOOPA:……;工作部分

……;修改部分

DECCX;控制部分

JNZLOOPA其中工作部分和修改部分被重復(fù)N次,當(CX)=0時結(jié)束循環(huán)。上面兩條語句可用LOOP指令代替,即:

MOVCX,NLOOPA:……LOOPLOOPA

(簡化方法)(一)計數(shù)控制

2.正計數(shù)

MOVCX,0;設(shè)置循環(huán)初值部分

……LOOPA:……;工作部分

……;修改部分

INCCX;控制部分

CMPCX,NJNZLOOPA

其中工作部分和修改部分被重復(fù)N次,當(CX)=N時結(jié)束循環(huán).5.2.3循環(huán)程序設(shè)計內(nèi)存DATA開始存放100個單字節(jié)數(shù)據(jù)。編寫程序統(tǒng)計這些數(shù)據(jù)內(nèi)所有為

“1”的位的個數(shù),將結(jié)果存入NUMB單元。[分析]統(tǒng)計每一個字節(jié)數(shù)據(jù)中“1”的個數(shù),可以用右移指令把該數(shù)據(jù)的各位逐個移到CF中,當CF=1,計數(shù)器值加1,直到100個數(shù)據(jù)檢查完畢。2、循環(huán)程序的設(shè)計方法例題5-28152794113B...0NUMBDATASI::SSEG SEGMENTSTACKSTACKDW100DUP(0)SSEG ENDSDSEG SEGMENTASSUMECS:CSEG,DS:DSEGASSUMESS:SSEGSTART:MOVAX,DSEGMOVDS,AXMOVAX,SSEGMOVSS,AX MOV SP,SIZESTACK MOV SI,OFFSETDATA MOV CL,100 XOR AL,AL例題5-28開始DS,SS,SP初始化外循環(huán)初始化SI,BH=0,CL=100AL右移1位SI+1,CL-1BH+1CF=1?NYNY內(nèi)循環(huán)初始化CH=8數(shù)據(jù)送AHCH-1CH=0?CL=0?存結(jié)果結(jié)束NYLOOP2:MOV CH,08H XOR BH,BHMOV AH,[SI]LOOP1:ROR AH,1 JNC CHT1 INC BHCHT1:DEC CH JNZ LOOP1 INC SI DEC CL JNZ LOOP2 MOV NUMB,BH MOV AH,4CH INT 21HCSEG ENDS END START例題5-28特別要注意循環(huán)入口和循環(huán)次數(shù)的正確設(shè)置;地址指針及循環(huán)控制條件的修改等。否則會得不到期望的結(jié)果。格式:過程名

PROC屬性

……

過程名

ENDP●過程名是過程入口地址的符號表示,在整個程序中必須是唯一的。●

PROC表示過程定義開始,ENDP表示過程定義結(jié)束。過程名本質(zhì)上與標號一樣,也具有3種屬性:段地址、偏移地址和類型(NEAR或FAR)?!?/p>

PROC后用關(guān)鍵字NEAR、FAR或空,以表示過程的類型(缺省為NEAR)。NEAR型子程序只可以被段內(nèi)調(diào)用,而FAR型子程序可以被段間或段內(nèi)調(diào)用。

一般子程序有五部分組成:子程序設(shè)計1.過程定義5.2.42.過程調(diào)用和返回

子程序的調(diào)用和返回是由設(shè)在主程序中的CALL指令和設(shè)在子程序末尾的RET指令來完成的。[復(fù)習(xí)]1.子程序調(diào)用指令CALL格式:CALLDST功能:調(diào)用子程序。執(zhí)行時先把返回地址壓入堆棧,再形成子程序入口地址,最后把控制權(quán)交給子程序。功能描述:(1)返回地址進棧。 遠調(diào)用:CS與IP(下一條指令的地址)依次進棧。 近調(diào)用:IP(下一條指令的16位偏移地址)進棧。(2)轉(zhuǎn)移到過程的第1條指令去執(zhí)行。 遠調(diào)用:根據(jù)操作數(shù),將32位分段地址送CS:IP。近調(diào)用:根據(jù)操作數(shù),將16位偏移地址送IP。

[復(fù)習(xí)]①段間直接調(diào)用: 格式:CALLFARPTR子程序名

功能:調(diào)用子程序名。

Push(CS),Push(IP)(IP)目標地址EA,(CS)目標地址的段基址,最后把控制權(quán)交給子程序。說明:這種指令使用與轉(zhuǎn)移地址有關(guān)的尋址方式中的段間直接尋址方式。②段內(nèi)間接調(diào)用:格式:CALLWORDPTRDST功能:調(diào)用子程序。

PUSH(IP)(IP)(EA)(把指令指定的16位通用寄存器或內(nèi)存單元的內(nèi)容送給IP,最后把控制權(quán)交給子程序。)

[復(fù)習(xí)]③段間間接調(diào)用: 格式:CALLDWORDPTRDST

功能:調(diào)用子程序。

Push(CS),Push(IP)(IP)(EA)(CS)(EA+2)(把M的低字送給IP,高字送給CS,最后把控制權(quán)交給子程序。)

說明:其中M為內(nèi)存的雙字長地址指針,低字部分為16位的偏移量,高字部分為段基址。2.返回指令 格式:RET

功能:按照CALL指令入棧的逆序,從棧頂彈出返回地址(彈出一個字到IP,若子程序是FAR型還需再彈出一個字到CS),然后返回到主程序繼續(xù)執(zhí)行。1.過程調(diào)用與返回的類型(1)調(diào)用程序和子程序在同一個代碼段的程序結(jié)構(gòu)

code segment main proc far …

調(diào)用程序 call sub1;段內(nèi)調(diào)用

ret main endp sub1 proc

子程序 … ret;近返回

sub1 endp code ends

end main(子程序類型可缺省,注意END后必須跟主程序名)2.CALL指令的靈活使用desgsegmentab1dwproc1ab2dwproc2desgendscsegsegmentassumecs:cseg,ds:dsegmainprocmov

ax,desgmov

ds,axcallproc1;近調(diào)用callproc2;遠調(diào)用movah,4chint21hmainendpproc1procnear

…retproc1endpproc2procfar

…retproc2endpcsegends●近調(diào)用(NEAR型)方法:①callproc1;直接近調(diào)用

②leaax,proc1callproc1;通過R間接近調(diào)用

③callab1;通過M變量間接近調(diào)用

④leabx,ab1callwordptr[bx];通過其它M操作數(shù)間接近調(diào)用●遠調(diào)用(FAR型)方法

①callproc2;直接遠調(diào)用

②callab2;通過M變量間接遠調(diào)用

③leabx,ab2calldword

ptr[bx];通過其它M操作數(shù)間接遠調(diào)用5.2.4子程序設(shè)計●現(xiàn)場——主程序在調(diào)用子程序前可能在CPU寄存器和內(nèi)存中存有一些有用的數(shù)據(jù),這些數(shù)據(jù)就是調(diào)用前的現(xiàn)場?!瘳F(xiàn)場保護——在子程序的執(zhí)行過程中很可能會改表這些單元的內(nèi)容。因此在子程序開始執(zhí)行前,把主程序中有用的數(shù)據(jù)先保存到堆棧中,這向工作稱為現(xiàn)場保護?!窕謴?fù)——為使子程序返回到主程序后,主程序能夠在原有環(huán)境下繼續(xù)執(zhí)行,必須將現(xiàn)場保護時保存在堆棧中的現(xiàn)場數(shù)據(jù)重新恢復(fù)。2.現(xiàn)場的保存與恢復(fù)5.2.4子程序設(shè)計●子程序調(diào)用的方法:簡單調(diào)用嵌套調(diào)用子程序內(nèi)包含有子程序的調(diào)用就是子程序嵌套沒有什么特殊要求遞歸調(diào)用:子程序直接或間接地嵌套調(diào)用自身稱為遞歸調(diào)用;含有遞歸調(diào)用的子程序稱為遞歸子程序;遞歸子程序必須采用寄存器或堆棧傳遞參數(shù),遞歸深度受堆??臻g的限制.●子程序返回:在子程序執(zhí)行完畢后,必須回到調(diào)用它的主程序。在每個子程序結(jié)束時必須有返回指令RET。3.子程序的調(diào)用和返回基本概念●入口參數(shù)(入口條件):主程序在調(diào)用子程序前,必須把這次操作中的加工處理數(shù)據(jù)傳送給子程序,這些加工處理的數(shù)據(jù)稱為入口參數(shù)?!癯隹趨?shù)(出口條件):當執(zhí)行完返回主程序時,應(yīng)該把本次操作的最終結(jié)果傳遞給主程序,這些加工處理的結(jié)果稱為出口參數(shù)?!駞?shù)傳遞:把主程序傳遞輸入?yún)?shù)和子程序傳遞輸出參數(shù)的過程稱為主、子程序間的參數(shù)傳遞。5.2.4子程序設(shè)計4.子程序的說明文件常用的參數(shù)傳遞方法約定寄存器法變量法堆棧法5.2.4子程序設(shè)計5.子程序的參數(shù)傳遞子程序的入口參數(shù)由主程序放入規(guī)定的寄存器帶入子程序.執(zhí)行子程序后的結(jié)果也放入規(guī)定的寄存器帶回主程序。主、子程序必須按約定在指定的寄存器中取出或存入指定參數(shù)。通常某個寄存器可作存放輸入?yún)?shù)的寄存器,又可同時作存放輸出參數(shù)的寄存器。適用于傳遞的參數(shù)較少情況。采用的寄存器有:傳遞數(shù)據(jù)或數(shù)據(jù)地址:AL、AX、DX:AX(或EAX)傳遞16位偏移地址:SI、DI或BX,傳遞32位分段地址:DS:BX;DS:SI;DS:DI;ES:BX;ES:SI(DI)等。寄存器的選擇以方便為主,但很少使用BP來傳遞參數(shù)。[補充內(nèi)容]——DOS功能調(diào)用3.從鍵盤讀入一個字符(功能號01H)入口參數(shù):無出口參數(shù):從鍵盤輸入的字符的ASCII碼送入AL中。調(diào)用方式:MOVAH,01HINT21H功能:等待從鍵盤輸入一個字符,并回顯在屏幕上。當檢測到^C或^Break時退出。[例]求帶符號數(shù)組ARRAY的最大值,設(shè)元素個數(shù)由變量COUNT定義,結(jié)果存入變量MAX中.5.2.4子程序設(shè)計6.程序舉例子程序名:FINDMAX功能:求帶符號數(shù)組ARRAY的最大值入口參數(shù):存放ARRAY數(shù)組M的首地址,

元素個數(shù)出口參數(shù):最大值MAX所用寄存器:SI存ARRAY偏移量;

CX存循環(huán)次數(shù)(1)約定寄存器法DSEGSEGMENTCOUNTDW5ARRAYDW8,-6,30,0,100MAXDW?DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEGMOVDS,AXLEASI,ARRAYMOVCX,COUNT

CALLFINDMAXMOVMAX,AXMOVAH,4CHINT21HFINDMAXPROCMINSW=8000HPUSHSIPUSHCXMOVAX,MINSWNEXT:CMPAX,[SI]JGSKIPMOVAX,[SI]SKIP:

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論