版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章指令系統(tǒng)與匯編語言基礎(chǔ)第6章指令系統(tǒng)與匯編語言基礎(chǔ)【學(xué)習(xí)目標(biāo)】1.知道匯編語言的程序結(jié)構(gòu)。知識(shí)點(diǎn):
?指令、偽指令、標(biāo)識(shí)符、保留字、常量、變量、表達(dá)式
?源程序、目標(biāo)程序、可執(zhí)行程序、子程序、MASM、系統(tǒng)功能調(diào)用2.掌握8086指令系統(tǒng)和匯編語言程序設(shè)計(jì)及調(diào)試。能力要求:
◆熟記8086的指令及功能。
◆能進(jìn)行簡(jiǎn)單匯編語言程序設(shè)計(jì)及調(diào)試?!緦W(xué)習(xí)目標(biāo)】【重點(diǎn)、難點(diǎn)】1.8086指令的功能及應(yīng)用。2.匯編語言程序的格式及語法要求。3.匯編語言程序設(shè)計(jì)及調(diào)試。【重點(diǎn)、難點(diǎn)】【內(nèi)容框架】指令系統(tǒng)及匯編語言基礎(chǔ)匯編語言基礎(chǔ)指令格式及尋址方式8086的指令系統(tǒng)程序設(shè)計(jì)舉例匯編語言的程序格式和組成匯編語言概述上機(jī)步聚指令格式8086的尋址方式數(shù)據(jù)傳送指令算術(shù)運(yùn)算指令位操作指令轉(zhuǎn)移指令順序程序設(shè)計(jì)分支程序設(shè)計(jì)循環(huán)程序設(shè)計(jì)子程序設(shè)計(jì)循環(huán)指令輸入/輸出DOS功能調(diào)用處理器控制類指令【內(nèi)容框架】指令系統(tǒng)及匯編語言基礎(chǔ)指令格式及尋址方式80866.1.1匯編語言概述計(jì)算機(jī)編程語言:機(jī)器語言、匯編語言和高級(jí)語言。①機(jī)器語言:由二進(jìn)制代碼按一定語法和語義組成的,是CPU能夠理解并直接執(zhí)行的機(jī)器指令集合。指令難記、程序難以閱讀、通用性差。②匯編語言:符號(hào)助記式語言,即符號(hào)化了的機(jī)器語言。程序代碼比機(jī)器語言程序代碼更具易讀性,記憶方便。由匯編語言編寫的程序稱為匯編語言源程序,需要經(jīng)過稱為匯編程序翻譯成機(jī)器語言的目標(biāo)程序,才能被CPU讀取并執(zhí)行。③高級(jí)語言:接近人類自然語言的計(jì)算機(jī)編程語言,比匯編語言更加易于理解。高級(jí)語言源程序,須由翻譯軟件轉(zhuǎn)換成匯編語言和機(jī)器語言,才能最終能被CPU讀取并執(zhí)行。6.1.1匯編語言概述計(jì)算機(jī)編程語言:機(jī)器語言、匯編語言和三種語言程序指令的對(duì)比:指令的功能是把a(bǔ)+b的和賦給c。學(xué)習(xí)匯編語言的目的:①匯編語言程序比用高級(jí)語言程序占用內(nèi)存資源更少,執(zhí)行速度更快。②對(duì)涉及硬件的操作匯編語言比高級(jí)語言功能更強(qiáng)。(嵌入式編程)③匯編語言源程序更能從原理上體現(xiàn)計(jì)算機(jī)的工作過程,是學(xué)習(xí)計(jì)算機(jī)原理和接口技術(shù)的基礎(chǔ)。④學(xué)習(xí)匯編語言是學(xué)習(xí)軟件的加密、解密技術(shù)和網(wǎng)絡(luò)安全的必備的基礎(chǔ)。三種語言程序指令的對(duì)比:指令的功能是把a(bǔ)+b的和賦給c。學(xué)習(xí)6.1.2匯編語言的程序格式和組成一、匯編語言程序的基本框架1.程序案例:以實(shí)現(xiàn)A+B→C的匯編語言源程序?yàn)槔?.匯編語言程序的一般格式:(1)匯編語言程序采用的是段式結(jié)構(gòu),一個(gè)匯編語言程序由若干個(gè)邏輯段組成。如數(shù)據(jù)段DSEG、堆棧段SSEG和代碼段CSEG。各段以“段名SEGMENT”開始,以“段名ENDS”結(jié)束。段名需由程序員命名。(2)匯編語言程序中包含指令語句和偽指令語句。指令語句在匯編過程中被翻譯、鏈接成相應(yīng)的可執(zhí)行的機(jī)器指令代碼。如MOV、ADD等。偽指令語句是匯編控制命令,在匯編過程中實(shí)現(xiàn)數(shù)據(jù)定義、分配存儲(chǔ)區(qū)、指示程序結(jié)果等功能,不產(chǎn)生任何目標(biāo)代碼。如SEGMENT、ASSUME等。6.1.2匯編語言的程序格式和組成一、匯編語言程序的基本框DSEGSEGMENT ;數(shù)據(jù)段,給變量、數(shù)組指定數(shù)據(jù),分配存儲(chǔ)空間。ADB01HBDB02HCDB? DSEGENDSSSEGSEGMENTSTACK ;定義堆棧段。DB100DUP(?) SSEGENDSCSEGSEGMENT ;代碼段。ASSUMECS:CSEG,DS:DSEG,SS:SSEG ;指定段功能。START:MOVAX,DSEG;給數(shù)據(jù)段寄存器裝初值。MOVDS,AXMOVAL,A;實(shí)現(xiàn)A+B→CADDAL,BMOVC,ALMOVAH,4CH;系統(tǒng)功能調(diào)用,軟中斷。結(jié)束程序返回DOS。 INT21HCSEGENDSENDSTART返回DSEGSEGMENT ;數(shù)據(jù)段,給變量、數(shù)組指定數(shù)(3)匯編語言的語法要素有標(biāo)識(shí)符、保留字、變量、常量、標(biāo)號(hào)、表達(dá)式等。①標(biāo)識(shí)符:程序中用于指定段名、變量名、符號(hào)常量名、標(biāo)號(hào)名等的字符串。標(biāo)識(shí)符的使用應(yīng)符合命名規(guī)則,并注意“見其名,知其義”。標(biāo)識(shí)符的命名規(guī)則:◆由字母、數(shù)字、專用符號(hào)“?”、“.”、“@”、“$”、“_”等字符組成。◆數(shù)字不能作為首字符,“.”只能作為首字符。◆有效字符為31個(gè)。②保留字:保留字是匯編語言中預(yù)留的、具有固定用途的字符串。所有的寄存器名、指令及偽指令的助記符、運(yùn)算符都屬于保留字,編程時(shí)不允許作它用。如上述程序中的DB、MOV、SEGMENT、CX等。(3)匯編語言的語法要素有標(biāo)識(shí)符、保留字、變量、常量、標(biāo)號(hào)、③變量:操作數(shù)在內(nèi)存中的符號(hào)地址。程序中使用的所有變量都需要在數(shù)據(jù)段中用變量定義偽指令進(jìn)行定義。變量名由程序員按標(biāo)識(shí)符的命名規(guī)則命名。④常量:常量是程序運(yùn)行中數(shù)值不變的量。有數(shù)值常量和符號(hào)常量。符號(hào)常量需使用相應(yīng)的賦值偽指令定義。⑤標(biāo)號(hào):標(biāo)號(hào)是機(jī)器指令在內(nèi)存中的符號(hào)地址。匯編語言程序中第一條指令、轉(zhuǎn)移的目標(biāo)指令和重復(fù)執(zhí)行的指令前面都要加上一個(gè)標(biāo)號(hào),作為轉(zhuǎn)移指令或循環(huán)指令的目的地址。標(biāo)號(hào)由標(biāo)識(shí)符和冒號(hào)組成。程序開始處的標(biāo)號(hào),需在代碼段結(jié)束之后,加上“END標(biāo)號(hào)”,如“ENDSTART”。標(biāo)號(hào)名也由程序員遵循標(biāo)識(shí)符命名規(guī)則命名。③變量:操作數(shù)在內(nèi)存中的符號(hào)地址。程序中使用的所有變量都需⑥表達(dá)式:由常量、變量、標(biāo)號(hào)及運(yùn)算符構(gòu)成的式子。分?jǐn)?shù)值表達(dá)式和地址表達(dá)式。數(shù)值表達(dá)式由常量與運(yùn)算符構(gòu)成。運(yùn)算符分三類:算術(shù)運(yùn)算符、邏輯運(yùn)算符和關(guān)系運(yùn)算符。算術(shù)運(yùn)算符邏輯運(yùn)算符關(guān)系運(yùn)算符+(加法)-(減法)*(乘法)/(除法)MOD(模除)NOT(非)AND(與)OR(或)XOR(異或)SHL(左移)SHR(右移)EQ(等于)NE(不等于)LT(小于)GT(大于)LE(小于或等于)GE(大于或等于)說明:“/”運(yùn)算結(jié)果為商的整數(shù)部分;關(guān)系運(yùn)算符的結(jié)果為-1或0,當(dāng)關(guān)系成立時(shí),結(jié)果為-1(用補(bǔ)碼表示),關(guān)系不成立時(shí),結(jié)果為0。⑥表達(dá)式:由常量、變量、標(biāo)號(hào)及運(yùn)算符構(gòu)成的式子。分?jǐn)?shù)值表達(dá)地址表達(dá)式由常量、變量、標(biāo)號(hào)、寄存器BP、BX、SI、DI等的內(nèi)容和運(yùn)算符構(gòu)成,用于進(jìn)行指令尋址。地址表達(dá)式除可使用算術(shù)運(yùn)算符、邏輯運(yùn)算符和關(guān)系運(yùn)算符外,還有一些專用的運(yùn)算符。算術(shù)運(yùn)算符邏輯運(yùn)算符分離運(yùn)算符:(段超越前綴)PTR(類型屬性)THIS(定義類型)SEG(取段地址)OFFSET(取偏移地址)TYPE(取類型)LENGTH(取變量單元數(shù))SIZE(取變量總字節(jié)數(shù))HIGH(取高字節(jié))LOW(取低字節(jié))?段超越前綴“:”。給變量、標(biāo)號(hào)或地址表達(dá)式臨時(shí)指定一個(gè)段屬性。格式:段寄存器名:地址表達(dá)式示例:MOVAL,ES:[1000H]地址表達(dá)式由常量、變量、標(biāo)號(hào)、寄存器BP、BX、SI?類型運(yùn)算符PTR。給變量、標(biāo)號(hào)或地址表達(dá)式臨時(shí)指定一個(gè)類型。格式:類型PTR地址表達(dá)式示例:MOVAX,WORDPTR[1000H]?類型定義運(yùn)算符THIS。指定變量、標(biāo)號(hào)或地址表達(dá)式的類型。格式:標(biāo)識(shí)符EQUTHIS類型示例:AEQUTHISBYTE?取段地址運(yùn)算符SEG。產(chǎn)生其后變量或標(biāo)號(hào)所在段的段地址。格式:SEG變量(或標(biāo)號(hào))示例:MOVAX,SEGDATA?類型運(yùn)算符PTR。給變量、標(biāo)號(hào)或地址表達(dá)式臨時(shí)指定一個(gè)類型?取偏移地址運(yùn)算符OFFSET。產(chǎn)生其后變量或標(biāo)號(hào)的偏移地址。格式:OFFSET變量(或標(biāo)號(hào))示例:MOVBX,OFFSETDATA?取類型運(yùn)算符TYPE。產(chǎn)生其后變量或標(biāo)號(hào)的類型值。格式:TYPE變量(或標(biāo)號(hào))示例:MOVBX,TYPEA變量類型類型值標(biāo)號(hào)類型類型值BYTE(字節(jié))WORD(字)DWORD(雙字)QWORD(4字)TBYTE(10字節(jié))124810NEARFAR-1-2?取偏移地址運(yùn)算符OFFSET。產(chǎn)生其后變量或標(biāo)號(hào)的偏移地址?取變量單元數(shù)運(yùn)算符LENGTH。產(chǎn)生其后變量所包含的單元數(shù)。運(yùn)算結(jié)果取決于變量定義偽指令中第一個(gè)表達(dá)式。若變量定義偽指令中第一個(gè)表達(dá)式為重復(fù)子句“nDUP(數(shù)值表達(dá)式)”,則結(jié)果為重復(fù)因子n;否則結(jié)果為1。格式:LENGTH變量示例:LENGTHDATADATADB3DUP(4),01H,05H運(yùn)算結(jié)果為3。DATADB01H,3DUP(4),05H運(yùn)算結(jié)果為1。?取變量總字節(jié)數(shù)運(yùn)算符SIZE。產(chǎn)生其后變量所包含的總字節(jié)數(shù)。格式:SIZE變量示例:SIZEDATA定義“DATADB3DUP(4),01H,05H”,運(yùn)算結(jié)果為5。?取變量單元數(shù)運(yùn)算符LENGTH。產(chǎn)生其后變量所包含的單元數(shù)?分離高字節(jié)運(yùn)算符HIGH。產(chǎn)生其后運(yùn)算對(duì)象的高字節(jié)。格式:HIGH運(yùn)算對(duì)象示例:MOVAL,HIGH1234H(AL)=12H?分離低字節(jié)運(yùn)算符LOW。產(chǎn)生其后運(yùn)算對(duì)象的低字節(jié)。格式:LOW運(yùn)算對(duì)象示例:MOVAL,LOW1234H(AL)=34H?分離高字節(jié)運(yùn)算符HIGH。產(chǎn)生其后運(yùn)算對(duì)象的高字節(jié)。?分離(4)匯編語言程序中也允許使用注釋。分號(hào)是匯編語言的注釋符號(hào),分號(hào)后面的文字直到行尾都是注釋內(nèi)容。(5)匯編語言程序結(jié)束,必須返回DOS操作系統(tǒng),才能對(duì)程序進(jìn)行編譯和鏈接。返回DOS的最常用方法是使用4CH號(hào)系統(tǒng)功能調(diào)用。如:MOVAH,4CHINT21H(4)匯編語言程序中也允許使用注釋。分號(hào)是匯編語言的注釋符號(hào)二、匯編程序中常用的偽指令1.變量定義偽指令①功能:為數(shù)據(jù)分配存儲(chǔ)單元,同時(shí)為存儲(chǔ)單元指定一個(gè)變量名。②種類:DB:字節(jié)變量定義偽指令DW:字變量定義偽指令DD:雙字變量定義偽指令③格式:[變量]DB(或DW、DD)一個(gè)或多個(gè)表達(dá)式示例1:DB100DUP(0);分配100B的存儲(chǔ)空間,每個(gè)字節(jié)的值為0示例2:DATADB13H,57H;定義兩個(gè)B的數(shù)據(jù)區(qū),內(nèi)容是13H,57H示例3:ADW1357H;為變量A分配一個(gè)字空間,其中內(nèi)容為1357H二、匯編程序中常用的偽指令示例1:DB100DUP2.段定義偽指令段定義偽指令的主要功能是指示匯編程序如何按段組織程序和使用存儲(chǔ)器。(1)SEGMENT和ENDS偽指令①功能:用于對(duì)段結(jié)構(gòu)進(jìn)行定義,以將程序分成若干邏輯段。②格式:段名SEGMENT段名ENDS…(2)ASSUME偽指令①功能:指定程序中定義的各個(gè)邏輯段的功能。②格式:ASSUM段寄存器:段名[,段寄存器:段名…]2.段定義偽指令段名SEGMENT段名ENDS…(3.賦值偽指令(1)EQU偽指令①功能:用數(shù)值或表達(dá)式定義標(biāo)識(shí)符,以便在后面程序中引用。②格式:標(biāo)識(shí)符EQU表達(dá)式(或數(shù)值)例:COUNTEQU6;使符號(hào)常量COUNT等于6。ADDREQUES:[BX][SI];使ADDR等同于表達(dá)式ES:[BX][SI]。(2)“=”偽指令①功能:與EQU基本相同,可以對(duì)同一標(biāo)識(shí)符重新賦值,EQU不可以。②格式:標(biāo)識(shí)符=表達(dá)式(或數(shù)值)例:COUNT=6COUNT=COUNT+13.賦值偽指令6.1.3上機(jī)步驟匯編語言的上機(jī)過程一般分為編輯、匯編、鏈接三步。匯編語言編譯軟件主要有MASM、TASM和MCS51,以MASM為例。1.啟動(dòng)MASM編譯器。(edit)2.編輯匯編語言源程序(保存為Filename.asm)3.匯編源程序,生成目標(biāo)程序(masmFilename.asm)4.鏈接目標(biāo)程序,生成可執(zhí)行程序(linkFilename.obj)5.運(yùn)行程序(Filename或Filename.exe)注意:若程序中沒有顯示語句,則需通過DEBUG命令查看程序運(yùn)行結(jié)果。6.1.3上機(jī)步驟匯編語言的上機(jī)過程一般分為編輯、匯編、鏈6.2.1指令格式指令包含操作碼和操作數(shù)兩部分。①操作碼:指出操作的內(nèi)容,即要完成的是什么操作;②操作數(shù):指出操作的對(duì)象,可以是立即數(shù)、寄存器和存儲(chǔ)器。根據(jù)操作數(shù)的多少,指令可分為零操作數(shù)指令、一操作數(shù)指令、二操作數(shù)指令、三操作數(shù)指令和多操作數(shù)指令。1.零操作數(shù)指令①格式:操作碼②操作:兩種情況,一是指令中不需操作數(shù),如空操作指令NOP、停機(jī)指令HLT等;二是指令的操作數(shù)是隱含在某個(gè)通用寄存器中,如十進(jìn)制數(shù)的調(diào)整指令DAA、DAS等。6.2.1指令格式指令包含操作碼和操作數(shù)兩部分。1.零操作2.一操作數(shù)指令①格式:操作碼A②操作:用OP表示操作,則一操作數(shù)指令可表示為OP(A)→A,即將指令中指定的存儲(chǔ)地址A或寄存器A中的操作數(shù)進(jìn)行操作碼所指定的運(yùn)算后,結(jié)果送入地址A中。如增量指令I(lǐng)NC、減量指令DEC等。注:(A)表示地址A中的內(nèi)容。3.二操作數(shù)指令①格式:操作碼A1,A2②操作:(A1)OP(A2)→A1(或A2),即操作數(shù)A1與A2進(jìn)行操作碼所規(guī)定的操作后,結(jié)果存放在目的地址A1或A2中。2.一操作數(shù)指令3.二操作數(shù)指令4.三操作數(shù)指令①格式:操作碼A1,A2,A3②操作:(A1)OP(A2)→A3,即將A1和A2中的兩個(gè)源操作數(shù)進(jìn)行操作碼所規(guī)定的運(yùn)算后,結(jié)果存入目的地址A3中。5.多操作數(shù)指令在處理成批數(shù)據(jù)時(shí),要用多操作數(shù)指令描述數(shù)據(jù)存放的首地址、長(zhǎng)度及下標(biāo)等信息。4.三操作數(shù)指令5.多操作數(shù)指令6.2.28086的尋址方式尋址方式:指令中操作數(shù)的表示方式。尋址:在處理數(shù)據(jù)時(shí),根據(jù)給出的或計(jì)算出的地址進(jìn)行操作數(shù)的存取。8086的主要尋址方式:立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、寄存器相對(duì)尋址、基址變址尋址、相對(duì)基址變址尋址等。一、立即尋址指令中直接給出操作數(shù)的尋址方式。【例】MOVAL,14H14H為立即數(shù),指令執(zhí)行后,(AL)=14H。6.2.28086的尋址方式尋址方式:指令中操作數(shù)的表示二、直接尋址操作數(shù)在存儲(chǔ)器中,指令中操作碼后給出的是操作數(shù)的16位的偏移地址EA。尋址時(shí),須先計(jì)算出操作數(shù)的物理地址,再按此訪問存儲(chǔ)器取出操作數(shù)。物理地址=段地址×16+偏移地址=3000×16+2000=32000H[32000H]=8086,是操作數(shù)。指令執(zhí)行后(AX)=8086H?!纠縈OVAX,[2000H]二、直接尋址物理地址=段地址×16+偏移地址=3000×16三、寄存器尋址指令中給出的是寄存器名,操作數(shù)在寄存器中的尋址方式為寄存器尋址?!纠縈OVAX,BX操作數(shù)在寄存器BX中,指令執(zhí)行后,(AX)=(BX),BX中的內(nèi)容不變。四、寄存器間接尋址操作數(shù)在存儲(chǔ)器中,操作數(shù)的有效地址EA在基址寄存器BX、BP或變址寄存器SI、DI中。【例】MOVAX,[BX]三、寄存器尋址四、寄存器間接尋址(BX):操作數(shù)的偏移地址。段地址(DS)=3000H物理地址=段地址×16+(BX)=32000H指令執(zhí)行后,(AX)=8086H。(BX):操作數(shù)的偏移地址。五、寄存器相對(duì)尋址操作數(shù)的有效地址由一個(gè)基址或變址寄存器的內(nèi)容加上指令中給出的8位或16位的位移量得到。即:物理地址=段地址×16+(寄存器)+位移量【例】MOVAX,COUNT[BX]設(shè)(DS)=2000H,(BX)=1000H,COUNT=3000H,(24000H)=1058H。操作數(shù)的物理地址=2000H×16+1000H+3000H=24000H指令執(zhí)行后,(AX)=1058H。五、寄存器相對(duì)尋址六、基址變址尋址操作數(shù)的有效地址是基址寄存器和變址寄存器的內(nèi)容之和?!纠縈OVAX,[BX][DI]設(shè)(DS)=3000H,(BX)=1000H,(DI)=2000H操作數(shù)的物理地址=3000H×16+1000H+2000H=33000H。七、相對(duì)基址變址尋址操作數(shù)的有效地址等于基址寄存器內(nèi)容、變址寄存器內(nèi)容和指令中給出的8位或16位的位移量之和?!纠縈OVAX,TAB[BX][SI]設(shè)(DS)=3000H,(BX)=1000H,(SI)=2000H,TAB=200H操作數(shù)的物理地址=3000H×16+1000H+2000H+200H=33200H。六、基址變址尋址七、相對(duì)基址變址尋址8086指令系統(tǒng)從功能方面可以分為數(shù)據(jù)傳送指令、算術(shù)運(yùn)算指令、邏輯運(yùn)算指令、串處理指令、控制轉(zhuǎn)移指令和處理機(jī)控制指令六類。6.3.1數(shù)據(jù)傳送指令功能:將操作數(shù)、地址傳送到寄存器或存儲(chǔ)單元中。種類:①通用數(shù)據(jù)傳送指令:MOV、PUSH/POP、XCHG、XLAT②累加器專用傳送指令:IN/OUT③地址傳送指令:LEA、LES、LDS④標(biāo)志寄存器傳送指令LAHF、SAHF、PUSHF、POPF8086指令系統(tǒng)從功能方面可以分為數(shù)據(jù)傳送指令、算術(shù)運(yùn)算指令一、通用數(shù)據(jù)傳送指令1.MOV指令格式:MOV目的操作數(shù),源操作數(shù)功能:將源操作數(shù)傳送到目的操作數(shù)空間,源操作數(shù)不變。語法要求:①源操作數(shù)和目的操作數(shù)不能同為存儲(chǔ)器操作數(shù)。②立即數(shù)只能作為源操作數(shù),不能作目的操作數(shù)。③CS不能作為目的操作數(shù)。④不允許兩個(gè)段寄存器之間直接傳送信息。⑤立即數(shù)不能直接送給段寄存器。⑥目的操作數(shù)和源操作數(shù)的類型要匹配。一、通用數(shù)據(jù)傳送指令【例】指出并改正下列語句中的錯(cuò)誤。(1)MOV12H,AL(2)MOV[DI],[SI](3)MOVCS,AX(4)MOVDS,ES(5)MOVDS,1234H(6)MOVAX,BL(1)將立即數(shù)作為目的操作數(shù)。(2)兩個(gè)操作數(shù)都是存儲(chǔ)器操作數(shù)。(3)將CS作為目的操作數(shù)。(4)兩個(gè)段寄存器之間直接傳送數(shù)據(jù)。正確:MOVAX,[SI]MOV[DI],AX(5)立即數(shù)直接送給段寄存器。正確:MOVAX,1234HMOVDS,AX(6)目的操作數(shù)與源操作數(shù)類型不匹配?!纠恐赋霾⒏恼铝姓Z句中的錯(cuò)誤。(1)將立即數(shù)作為目的操作2.入棧指令PUSH和出棧指令POP格式:PUSH源操作數(shù)POP目的操作數(shù)功能:PUSH將源操作數(shù)壓入椎棧的棧頂;POP指令將棧頂?shù)膬?nèi)容彈出送到目的操作數(shù)。執(zhí)行PUSH指令時(shí),系統(tǒng)先將(SP)-2→SP,再將字操作數(shù)存儲(chǔ)到SP指示的棧頂單元中;執(zhí)行POP指令時(shí),系統(tǒng)先將SP所指的棧頂?shù)淖植僮鲾?shù)送至目標(biāo)空間,再將(SP)+2→SP,指示當(dāng)前棧頂單元。要求:操作數(shù)必須為16位的。2.入棧指令PUSH和出棧指令POP3.交換指令XCHG格式:XCHG目的操作數(shù),源操作數(shù)功能:將目的操作數(shù)和源操作數(shù)的內(nèi)容相互交換。4.換碼指令XLAT格式:XLAT功能:將一種代碼轉(zhuǎn)換成另一種代碼。XLAT指令通常用于字符和ASCII碼轉(zhuǎn)換。執(zhí)行時(shí),將表格的首地址預(yù)先存入到BX中,將表中數(shù)據(jù)距表首地址的位移量存到AL中,然后將根據(jù)BX和AL的內(nèi)容找到的數(shù)送到AL中,即[BX+AL]→AL。3.交換指令XCHG4.換碼指令XLAT【例6.9】分析下述程序的運(yùn)行結(jié)果。DATASEGMENTASCDB30H,31H,32H,33H,34H,35H,36H,37H,38H,39HDATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETASCMOVAL,6XLATMOVAH,4CHINT21HCODEENDSENDSTART該程序的運(yùn)行結(jié)果:(AL)=36H【例6.9】分析下述程序的運(yùn)行結(jié)果。二、累加器專用傳送指令1.輸入指令I(lǐng)N格式:IN累加器,端口地址功能:從I/O端口讀入信息到累加器。2.輸出指令OUT格式:OUT端口地址,累加器功能:將累加器中信息輸出到I/O端口。使用IN、OUT指令時(shí),若端口地址超出16位,需用寄存器DX輔助提供端口地址?!纠縈OVDX,1200;將累加器AL內(nèi)容輸出到地址為1200H的端口。OUTDX,AL二、累加器專用傳送指令【例】MOVDX,1200;三、地址傳送指令1.取有效地址指令LEA格式:LEA目的操作數(shù),源操作數(shù)功能:將源操作數(shù)的有效地址送到目的操作數(shù)中。【例】設(shè)(BX)=1000H,(SI)=0100H則指令LEADI,0030H[BX][SI]指令執(zhí)行后(DI)=1130H2.地址指針?biāo)图拇嫫骱虳S指令LDS格式:LDS目的操作數(shù),源操作數(shù)功能:將源操作數(shù)指定的存儲(chǔ)單元中的4B的地址指針傳送到DS和目的操作數(shù),高兩字節(jié)送DS,低兩字節(jié)送目的操作數(shù)。三、地址傳送指令2.地址指針?biāo)图拇嫫骱虳S指令LDS【例】分析指令LDSSI,[40H]的執(zhí)行結(jié)果。已知(DS)=30C0H。DS2030C4330C4230C4130C40300040SI3.地址指針?biāo)图拇嫫骱虴S指令LES格式:LES目的操作數(shù),源操作數(shù)功能:與LDS指令類似,區(qū)別是傳送地址時(shí),高兩字節(jié)送ES寄存器。指令執(zhí)行后,(SI)=4020H,(DS)=3000H?!纠糠治鲋噶頛DSSI,[40H]的執(zhí)行結(jié)果。已知(D四、標(biāo)志傳送指令專用于對(duì)標(biāo)志寄存器操作。1.LAHF,將標(biāo)志寄存器低8位送AH。2.SAHF,將(AH)送標(biāo)志寄存器低8位。3.PUSHF,將整個(gè)標(biāo)志寄存器的內(nèi)容壓入堆棧。4.POPF,彈出棧頂?shù)膬?nèi)容送標(biāo)志寄存器。四、標(biāo)志傳送指令6.3.2算術(shù)運(yùn)算指令一、加法指令1.不帶進(jìn)位的加法指令A(yù)DD格式:ADD目的操作數(shù),源操作數(shù)功能:源操作數(shù)+目的操作數(shù)→目的操作數(shù)【例】分析指令下述指令的執(zhí)行結(jié)果。MOVAL,8DHMOVBL,0AHADDAL,BL指令執(zhí)行后,(AL)=97H6.3.2算術(shù)運(yùn)算指令一、加法指令2.帶進(jìn)位的加法指令A(yù)DC格式:ADC目的操作數(shù),源操作數(shù)功能:源操作數(shù)+目的操作數(shù)+(CF)→目的操作數(shù)3.加1指令I(lǐng)NC格式:INC目的操作數(shù)功能:目的操作數(shù)+1→目的操作數(shù)4.壓縮BCD碼的加法調(diào)整指令DAA格式:DAA功能:跟在十進(jìn)制數(shù)的ADD、ADC或INC指令之后,將AL中的運(yùn)算結(jié)果調(diào)整為壓縮BCD碼。壓縮BCD碼:一個(gè)字節(jié)存儲(chǔ)兩個(gè)BCD碼。2.帶進(jìn)位的加法指令A(yù)DC3.加1指令I(lǐng)NC4.壓縮BCD碼5.非壓縮BCD碼的加法調(diào)整指令A(yù)AA格式:DAA功能:跟在十進(jìn)制數(shù)的ADD、ADC或INC指令之后,將AL中的運(yùn)算結(jié)果調(diào)整為非壓縮BCD碼。非壓縮BCD碼:一個(gè)存儲(chǔ)單元中,僅在低4位存儲(chǔ)一個(gè)BCD碼,高4位為0。5.非壓縮BCD碼的加法調(diào)整指令A(yù)AA非壓縮BCD碼:一個(gè)存1.不帶借位的減法指令SUB格式:SUB目的操作數(shù),源操作數(shù)功能:(目的操作數(shù))-(源操作數(shù))→目的操作數(shù)。2.帶借位的減法指令SBB格式:SBB目的操作數(shù),源操作數(shù)功能:(目的操作數(shù))-(源操作數(shù))-(CF)→目的操作數(shù)。注意:CF為該指令執(zhí)行前的借位。3.減1指令DEC格式:DEC目的操作數(shù)功能:(目的操作數(shù))-1→目的操作數(shù)。二、減法指令1.不帶借位的減法指令SUB二、減法指令4.壓縮BCD碼的減法調(diào)整指令DAS格式:DAS功能:跟在十進(jìn)制數(shù)的SUB、SBB或DEC指令之后,將AL中的運(yùn)算結(jié)果調(diào)整為壓縮BCD碼。5.非壓縮BCD碼的減法調(diào)整指令A(yù)AS格式:AAS功能:跟在十進(jìn)制數(shù)的SUB、SBB或DEC指令之后,將AL中的運(yùn)算結(jié)果調(diào)整為非壓縮BCD碼。4.壓縮BCD碼的減法調(diào)整指令DAS5.非壓縮BCD碼的減法6.求補(bǔ)指令NEC格式:NEG目的操作數(shù)功能:把操作數(shù)看作有符號(hào)數(shù),對(duì)其求相反數(shù)。實(shí)際上就是把操作數(shù)按位取反末位加1。【例】MOVAX,5NEGAX該指令執(zhí)行后,(AX)=-56.求補(bǔ)指令NEC7.比較指令CMP 格式:CMP目的操作數(shù),源操作數(shù)功能:(目的操作數(shù))-(源操作數(shù)),結(jié)果不保存,即目的操作數(shù)不被改變,只是根據(jù)相減的結(jié)果設(shè)置標(biāo)志寄存器里的標(biāo)志位。①若兩數(shù)相等,ZF=1;不相等,ZF=0。②對(duì)于無符號(hào)數(shù),若被減數(shù)大于減數(shù),CF=0,若被減數(shù)小于減數(shù),CF=1;③對(duì)于有符號(hào)數(shù),若被減數(shù)大于減數(shù),OF和SF狀態(tài)相同;若被減數(shù)小于減數(shù),OF和SF狀態(tài)不同。CMP指令多用于循環(huán)跳轉(zhuǎn)指令前,通過比較兩個(gè)數(shù)的大小作為跳轉(zhuǎn)條件。7.比較指令CMP 三、乘法指令1.無符號(hào)數(shù)乘法指令MUL格式:MUL源操作數(shù)功能:①若源操作數(shù)是字節(jié)型操作數(shù),則將源操作數(shù)與(AL)相乘,乘積送AX。②若源操作數(shù)是字型操作數(shù),則將源操作數(shù)與(AX)相乘,乘積送DX、AX。三、乘法指令2.帶符號(hào)數(shù)乘法指令I(lǐng)MUL格式:IMUL源操作數(shù)功能:實(shí)現(xiàn)有符號(hào)乘法運(yùn)算。3.非壓縮BCD碼的乘法調(diào)整指令A(yù)AM格式:AAM功能:跟在十進(jìn)制數(shù)的MUL指令之后,將AX中的運(yùn)算結(jié)果調(diào)整為非壓縮BCD碼。2.帶符號(hào)數(shù)乘法指令I(lǐng)MUL3.非壓縮BCD碼的乘法調(diào)整指令四、除法指令1.無符號(hào)數(shù)除法指令DIV格式:DIV源操作數(shù)功能:①若源操作數(shù)為字節(jié)型操作數(shù),則用(AX)除以源操作數(shù),商送AL,余數(shù)送AH。②若源操作數(shù)是字型操作數(shù),則用(DX)與(AX)合起來作為被除數(shù)除以源操作數(shù),商送AX,余數(shù)送DX。四、除法指令2.帶符號(hào)數(shù)除法指令I(lǐng)DIV格式:IDIV源操作數(shù)功能:實(shí)現(xiàn)有符號(hào)除法運(yùn)算,即把操作數(shù)當(dāng)作補(bǔ)碼(有符號(hào)數(shù))。3.非壓縮BCD碼的除法調(diào)整指令A(yù)AD格式:AAD功能:用在十進(jìn)制數(shù)的DIV指令之前,將AX中被除數(shù)的兩個(gè)非壓縮BCD碼調(diào)整,使運(yùn)算所得的商為非壓縮BCD碼。2.帶符號(hào)數(shù)除法指令I(lǐng)DIV3.非壓縮BCD碼的除法調(diào)整指令4.字節(jié)轉(zhuǎn)換為字指令CBW格式:CBW功能:格式:CBW功能:將(AL)的符號(hào)位擴(kuò)展到AH中,讓AX的值等于AL的值。擴(kuò)展的方法是使AH各位與AL最高位相同。5.字轉(zhuǎn)換為雙字指令CWD格式:CWD功能:將(AX)的符號(hào)位擴(kuò)展到DX中。擴(kuò)展方法與CBW基本相同,需使DX的各位與AX的最高位相同。4.字節(jié)轉(zhuǎn)換為字指令CBW算術(shù)運(yùn)算指令對(duì)標(biāo)志位的影響:【例】指出下述指令執(zhí)行后,標(biāo)志位CF、ZF、SF、AF、PF、OF的值。MOVAL,87HADDAL,0DH運(yùn)算的結(jié)果為94H,低4位有向高4位的進(jìn)位,最高位和次高位都沒有產(chǎn)生進(jìn)位。因此,指令執(zhí)行后CF=0,ZF=0,AF=1,SF=1,PF=0,OF=0。分析:指令實(shí)現(xiàn)的是87H+0DH→AL的操作,運(yùn)算的過程為算術(shù)運(yùn)算指令對(duì)標(biāo)志位的影響:運(yùn)算的結(jié)果為94H,低4位有向高6.3.3位操作指令一、邏輯運(yùn)算指令1.邏輯非指令NOT格式:NOT目的操作數(shù)功能:將目的操作數(shù)的每一個(gè)二進(jìn)制位按位取反,結(jié)果送回目的操作數(shù)?!纠縈OVAX,26(存儲(chǔ)為0000000000011010B)NOTAX 執(zhí)行結(jié)果為(AX)=1111111111100101B=FFE5H,看作無符號(hào)數(shù)為66509D,看作有符號(hào)數(shù)為-27D。6.3.3位操作指令2.與運(yùn)算指令A(yù)ND格式:AND目的操作數(shù),源操作數(shù)功能:將目的操作數(shù)與源操作數(shù)按位相與,結(jié)果送目的操作數(shù)。通常用于分離和屏蔽數(shù)據(jù)。3.或運(yùn)算指令OR格式:OR目的操作數(shù),源操作數(shù)功能:將目的操作數(shù)與源操作數(shù)按位相或,結(jié)果送目的操作數(shù)。【例】MOVAL,49HANDAL,0FH執(zhí)行結(jié)果(AL)=09H?!纠縈OVAL,49HORAL,3CH執(zhí)行結(jié)果(AL)=7DH。2.與運(yùn)算指令A(yù)ND3.或運(yùn)算指令OR【例】MOVAL4.異或運(yùn)算指令XOR格式:XOR目的操作數(shù),源操作數(shù)功能:將目的操作數(shù)與源操作數(shù)按位相異或操作,結(jié)果送目的操作數(shù)。常用于對(duì)數(shù)據(jù)取反運(yùn)算。5.測(cè)試指令TEST格式:TEST目的操作數(shù),源操作數(shù)功能:將目的操作數(shù)與源操作數(shù)按位相與,結(jié)果不保存,只是根據(jù)結(jié)果設(shè)置標(biāo)志寄存器里的標(biāo)志位。應(yīng)用:源操作數(shù)為立即數(shù),測(cè)試位為1。若目的操作數(shù)該位為1,則ZF=0,否則ZF=1。常用于跳轉(zhuǎn)指令前。4.異或運(yùn)算指令XOR分析:該程序段是將(AL)從80H開始每次右移1位,直到最低位為1,即(AL)=01H為止。TESTAL,01H:測(cè)試(AL)的最低位是否為1JZL1:條件轉(zhuǎn)移,若ZF=1,即最低位為0就轉(zhuǎn)到L1處,繼續(xù)移位;當(dāng)ZF=0,即最低位為1時(shí),程序向下執(zhí)行?!纠糠治鱿率龀绦蚨蔚膱?zhí)行情況。MOVAL,80HL1:SHRAL,1TESTAL,01HJZL1…分析:該程序段是將(AL)從80H開始每次右移1位,直到最低二、移位指令無源操作數(shù),指令中只能用1或CL給出移位的位數(shù)。1.算術(shù)、邏輯移位指令算術(shù)移位指令用于有符號(hào)數(shù),而邏輯移位指令用于無符號(hào)數(shù)。(1)左移指令SAL/SHL格式:SAL/SHL目的操作數(shù),移位次數(shù)功能:格式:SAL/SHL目的操作數(shù),移位次數(shù)功能:SAL為算術(shù)左移指令,SHL為邏輯左移指令,二者功能完全相同,將目的操作數(shù)左移若干位,最低位補(bǔ)0,最高位送CF。二、移位指令【例】MOVAL,16H(00010110B)SHLAL,1 【例】MOVBH,0EFH(11101111B)MOVCL,2SALBH,CL 執(zhí)行結(jié)果(AL)=00101100B,是原值的2倍。CF=0。執(zhí)行結(jié)果(BH)=10111100,CF=1。00010110001011000CF011101111110111100101111000CF11【例】MOVAL,16H(00010110B)【例(2)算術(shù)右移指令SAR格式:SAR目的操作數(shù),移位次數(shù)功能:將目的操作數(shù)右移若干位,最高位進(jìn)行符號(hào)位擴(kuò)展,即與移出的位保持相同,最低位送CF。【例】MOVAL,9CH(10011100B)MOVCL,2SARAL,CL 執(zhí)行結(jié)果(AL)=E7H,CF=0。100111001101111011101111CF符號(hào)擴(kuò)展00(2)算術(shù)右移指令SAR【例】MOVAL,9CH((3)邏輯右移指令SHR格式:SHR目的操作數(shù),移位次數(shù)功能:將目的操作數(shù)右移若干位。最高位補(bǔ)0,最低位送CF。2.循環(huán)移位指令(1)循環(huán)左移指令ROL格式:ROL目的操作數(shù),移位次數(shù)功能:將目的操作數(shù)循環(huán)左移若干位。其中,最高位送最低位及CF,其他位依次左移。(3)邏輯右移指令SHR2.循環(huán)移位指令2.循環(huán)移位指令(1)循環(huán)左移指令ROL格式:ROL目的操作數(shù),移位次數(shù)功能:將目的操作數(shù)循環(huán)左移若干位。其中,最高位送最低位及CF,其他位依次左移。(2)循環(huán)右移指令ROR格式:ROR目的操作數(shù),移位次數(shù)功能:將目的操作數(shù)循環(huán)右移若干位。其中,最低位送最高位及CF,其他位依次右移。2.循環(huán)移位指令(2)循環(huán)右移指令ROR(3)帶進(jìn)位的循環(huán)左移指令RCL格式:RCL目的操作數(shù),移位次數(shù)功能:將目的操作數(shù)連同CF循環(huán)左移若干位。其中,移位前的CF送最低位,最高位送CF。(4)帶進(jìn)位的循環(huán)右移指令RCR格式:RCR目的操作數(shù),移位次數(shù)功能:將目的操作數(shù)連同CF循環(huán)右移若干位。其中,右移前的CF送最高位,最低位送CF。(3)帶進(jìn)位的循環(huán)左移指令RCL(4)帶進(jìn)位的循環(huán)右移指令R6.3.4轉(zhuǎn)移指令一、無條件轉(zhuǎn)移指令JMP格式:JMP標(biāo)號(hào)功能:無條件轉(zhuǎn)移到標(biāo)號(hào)所指的指令處。二、單標(biāo)志條件轉(zhuǎn)移指令通過測(cè)試PSW中的相應(yīng)標(biāo)志位決定是否執(zhí)行轉(zhuǎn)移。包括:JC/JNC,JP/JNP,JZ/JNZ,JS/JNS和JO/JNO。格式:JC/JNC(JP/JNP、JZ/JNZ、JS/JNS、JO/JNO)標(biāo)號(hào)功能:①JC/JNC:測(cè)試CF標(biāo)志。JC為CF=1轉(zhuǎn)移到標(biāo)號(hào)所指示的指令處執(zhí)行;JNC指令,CF=0則跳轉(zhuǎn)到標(biāo)號(hào)所指示的指令處執(zhí)行。6.3.4轉(zhuǎn)移指令一、無條件轉(zhuǎn)移指令JMP二、單標(biāo)志條件②JP/JNP:測(cè)試PF標(biāo)志。JP為PF=1轉(zhuǎn)移到標(biāo)號(hào)所指示的指令處執(zhí)行;JNP指令,CF=0則跳轉(zhuǎn)到標(biāo)號(hào)所指示的指令處執(zhí)行。③JZ/JNZ:測(cè)試ZF標(biāo)志。JZ為ZF=1轉(zhuǎn)移到標(biāo)號(hào)所指示的指令處執(zhí)行;JNZ指令,ZF=0則跳轉(zhuǎn)到標(biāo)號(hào)所指示的指令處執(zhí)行。④JS/JNS:測(cè)試SF標(biāo)志。JS為SF=1轉(zhuǎn)移到標(biāo)號(hào)所指示的指令處執(zhí)行;JNS指令,SF=0則跳轉(zhuǎn)到標(biāo)號(hào)所指示的指令處執(zhí)行。⑤JO/JNO:測(cè)試OF標(biāo)志。JO為OF=1轉(zhuǎn)移到標(biāo)號(hào)所指示的指令處執(zhí)行;JNO指令,OF=0則跳轉(zhuǎn)到標(biāo)號(hào)所指示的指令處執(zhí)行??蓸?gòu)成分支結(jié)構(gòu)程序。若標(biāo)號(hào)的位置在轉(zhuǎn)移指令的前面,還可以構(gòu)成循環(huán)結(jié)構(gòu)程序。②JP/JNP:測(cè)試PF標(biāo)志。JP為PF=1轉(zhuǎn)移到標(biāo)號(hào)所指二、無符號(hào)數(shù)條件轉(zhuǎn)移指令比較:A(above,大于)、B(below,小于)和E(equal,等于)。指令:JA/JNBE、JB/JNAE、JAE/JNB、JBE/JNA1.JA(JNBE)格式:JA/JNBE標(biāo)號(hào)功能:減法指令的目的操作數(shù)大于(不小于且不等于)源操作數(shù)則跳轉(zhuǎn)到指定的標(biāo)號(hào)處執(zhí)行。2.JBE(JNA)格式:JBE/JNA標(biāo)號(hào)功能:減法指令的目的操作數(shù)小于或等于(不大于)源操作數(shù)則跳轉(zhuǎn)到指定的標(biāo)號(hào)處執(zhí)行。二、無符號(hào)數(shù)條件轉(zhuǎn)移指令3.JB(JNAE)格式:JB/JNAE標(biāo)號(hào)功能:減法指令的目的操作數(shù)小于(不大于且不等于)源操作數(shù)則跳轉(zhuǎn)到指定的標(biāo)號(hào)處執(zhí)行。4.JAE(JNB)格式:JAE/JNB標(biāo)號(hào)功能:減法指令的目的操作數(shù)大于或等于(不小于)源操作數(shù)則跳轉(zhuǎn)到指定的標(biāo)號(hào)處執(zhí)行。3.JB(JNAE)三、有符號(hào)數(shù)條件轉(zhuǎn)移指令比較:G(greater,大于)、L(less,小于)和E(equal,等于)指令:JG/JNLE、JLE/JNG、JL/JNGE、JGE/JNL1.JG/JNLE格式:JG/JNLE標(biāo)號(hào)功能:減法指令的目的操作數(shù)大于(不小于且不等于)源操作數(shù),則跳轉(zhuǎn)到指定的標(biāo)號(hào)處執(zhí)行。2.JLE/JNG格式:JLE/JNG標(biāo)號(hào)功能:減法指令的目的操作數(shù)小于或等于(不大于)源操作數(shù),則跳轉(zhuǎn)到指定的標(biāo)號(hào)處執(zhí)行。三、有符號(hào)數(shù)條件轉(zhuǎn)移指令3.JL/JNGE格式:JL/JNGE標(biāo)號(hào)功能:減法指令的目的操作數(shù)小于(不大于且不等于)源操作數(shù),則跳轉(zhuǎn)到指定的標(biāo)號(hào)處執(zhí)行。4.JGE/JNL格式:JGE/JNL標(biāo)號(hào)功能:減法指令的目的操作數(shù)大于或等于(不小于)源操作數(shù),則跳轉(zhuǎn)到指定的標(biāo)號(hào)處執(zhí)行。3.JL/JNGE6.3.5循環(huán)指令構(gòu)成循環(huán)結(jié)構(gòu)程序,分為重復(fù)控制指令和串操作指令。一、重復(fù)控制指令指令種類:LOOP、LOOPZ、LOOPNZ和JCXZ執(zhí)行:LOOP、LOOPZ和LOOPNZ指令以寄存器CX為默認(rèn)的計(jì)數(shù)器,執(zhí)行時(shí)先將(CX)-1→CX,再測(cè)試CX,若CX不為0,執(zhí)行循環(huán)體;若CX為0,則執(zhí)行循環(huán)指令后面的指令。格式:指令名標(biāo)號(hào)6.3.5循環(huán)指令功能:助記符功能LOOPCX(CX)-1,CX≠0則轉(zhuǎn)至指定的標(biāo)號(hào)處,否則順序執(zhí)行LOOPZCX(CX)-1,CX≠0且ZF=1則轉(zhuǎn)至指定的標(biāo)號(hào)處,否則順序執(zhí)行LOOPNZCX(CX)-1,CX≠0且ZF=0則轉(zhuǎn)至指定的標(biāo)號(hào)處,否則順序執(zhí)行JCXZCX=0則轉(zhuǎn)至指定的標(biāo)號(hào)處,否則順序執(zhí)行功能:助記符功能LOOPCX(CX)-1,【例】編程實(shí)現(xiàn)將BUFF數(shù)據(jù)區(qū)中各字節(jié)之和送SUM變量。解:匯編源程序?yàn)椋篋ATASEGMENTBUFFDB40H,12H,77H,0FFH,0,10H,05H,0A5HCOUNTEQU$-BUFFSUMDW?DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVAX,0【例】編程實(shí)現(xiàn)將BUFF數(shù)據(jù)區(qū)中各字節(jié)之和送SUM變量。MOVSI,OFFSETBUFFMOVCX,COUNTNEXT:ADDAL,[SI] ADCAH,0 INCSI LOOPNEXT MOVSUM,AXMOVAH,4CHINT21HCODEENDSENDSTARTMOVSI,OFFSET二、串操作指令及重復(fù)前綴串:存儲(chǔ)器中連續(xù)的字節(jié)序列或字序列。匯編語言提供專用的串操作指令。1.特點(diǎn)①串操作指令本身沒有指定重復(fù)操作次數(shù)的功能,需通過重復(fù)前綴REP(REPZ、REPNZ)指令指定重復(fù)操作的次數(shù)。REP(REPZ、REPNZ)指令以CX為默認(rèn)的計(jì)數(shù)器,指定重復(fù)操作的次數(shù),每完成一次操作,CX的值減1,直到(CX)=0為止。二、串操作指令及重復(fù)前綴②默認(rèn)用數(shù)據(jù)段中[SI]指定的存儲(chǔ)單元作為源操作數(shù),用附加數(shù)據(jù)段中[DI]指定的存儲(chǔ)單元作為目的操作數(shù)。引用需使用段超越前綴進(jìn)行聲明。如:ADDES:[DI],[SI]MOVES:[1200H],5③有自動(dòng)修改指針的功能。每完成一個(gè)數(shù)據(jù)操作,SI和DI指針都會(huì)自動(dòng)修改,若方向標(biāo)志DF=0,則以增量方式操作;若DF=1,則以減量方式操作。串操作指令前應(yīng)該有設(shè)置方向標(biāo)志的指令,CLD指令可使DF=0,STD指令可使DF=1。沒有方向標(biāo)志指令時(shí),默認(rèn)為以增量方式操作。2.格式REP/REPZ/REPNZ串操作指令如:REPMOVSB;DS:[SI]→ES:[DI],傳送(CX)次。②默認(rèn)用數(shù)據(jù)段中[SI]指定的存儲(chǔ)單元作為源操作數(shù),用附加3.功能助記符功能備注串操作指令MOVSBMOVSWES:[DI]DS:[SI],DI(DI)±1,SI(SI)±1ES:[DI]DS:[SI],DI(DI)±2,SI(SI)±2當(dāng)方向標(biāo)志DF=0時(shí),若為字節(jié)操作則+1;若為字操作則+2。當(dāng)方向標(biāo)志DF=0時(shí),若為字節(jié)操作則-1;若為字操作則-2。LODSBLODSWALDS:[SI],SI(SI)±1ALDS:[SI],SI(SI)±2STOSBSTOSWES:[DI]AL,DI(DI)±1ES:[DI]AL,DI(DI)±1CMPSBCMPSW根據(jù)DS:[SI]-ES:[DI]產(chǎn)生狀態(tài)標(biāo)志,DI(DI)±1,SI(SI)±1根據(jù)DS:[SI]-ES:[DI]產(chǎn)生狀態(tài)標(biāo)志,DI(DI)±2,SI(SI)±2SCASBSCASW根據(jù)AL-ES:[DI]產(chǎn)生狀態(tài)標(biāo)志,DI(DI)±1根據(jù)AX-ES:[DI]產(chǎn)生狀態(tài)標(biāo)志,DI(DI)±2重復(fù)前綴REP(CX)≠0則重復(fù)所綴串指令,CX(CX)-1REPZ(CX)≠0且ZF=1則重復(fù)所綴串指令,CX(CX)-1REPNZ(CX)≠0且ZF=0則重復(fù)所綴串指令,CX(CX)-13.功能助記符功能備注串MOVSBES:[DI]DS:[S【例】將字符串STR1復(fù)制到STR2中,屏幕顯示STR2。解:實(shí)現(xiàn)該功能的匯編源程序?yàn)镈SEGSEGMENTSTR1DB'Howareyou?$'NUMEQU$-STR1DSEGENDSESEGSEGMENTSTR2DBNUMDUP(?),‘$’ESEGENDSSSEGSEGMENTSTACKDB100DUP(?)SSEGENDS【例】將字符串STR1復(fù)制到STR2中,屏幕顯示STR2。CSEGSERMENTASSUMECS:CSEG,DS:DSEG,SS:SSEG,ES:ESEGBEGIN:MOVAX,DSEG MOVDS,AX MOVAX,ESEG MOVES,AX CLD ;置DF=0 MOVCX,NUM ;使REP指令重復(fù)執(zhí)行NUM次 MOVSI,OFFSETSTR1 ;讓SI指向源串首地址 MOVDI,OFFSETSTR2 ;讓DI指向目的串首地址REPMOVSB;DS:[SI]存儲(chǔ)的字節(jié)內(nèi)容復(fù)制給ES:[DI] MOVDX,OFFSETSTR2;9號(hào)功能調(diào)用,屏幕顯示STR2中的內(nèi)容CSEGSERMENTMOVAH,9INT21H MOVAH,4CH;返回DOS提示符狀態(tài) INT21HCSEGENDSENDBEGINMOVAH,96.3.6處理器控制類指令零操作數(shù)指令,設(shè)置狀態(tài)標(biāo)志和控制CPU的某些功能。一、標(biāo)志操作指令①方向標(biāo)志指令STD和CLD:STD使方向標(biāo)志DF=1;CLD使DF=0。②進(jìn)位標(biāo)志指令STC、CLC和CMC:STC使進(jìn)位標(biāo)志CF=1;CLC使CF=0;CMC指令使CF取反。③中斷標(biāo)志指令STI和CLI:STI指令又稱為開中斷指令,使中斷允許標(biāo)志IF=1;CLI又稱關(guān)中斷指令,使IF=0。二、空操作指令NOP:不執(zhí)行任何操作,一般用于構(gòu)成延時(shí)程序。6.3.6處理器控制類指令三、外同步指令①暫停指令HLT:等待中斷或復(fù)位②等待指令WAIT③交權(quán)指令ESC④封鎖總線指令LOCK三、外同步指令6.3.6輸入/輸出DOS功能調(diào)用作用:實(shí)現(xiàn)輸入、輸出操作。調(diào)用方法:①傳遞入口參數(shù)。②功能號(hào)送給寄存器AH。③INT21H6.3.6輸入/輸出DOS功能調(diào)用常用輸入輸出DOS功能:一、01H號(hào)功能功能:等待從鍵盤輸入一個(gè)字符,將該字符的ASCII碼送AL,并在屏幕上顯示該字符。入口參數(shù):無。調(diào)用方式:MOVAH,01HINT21H出口參數(shù):AL的內(nèi)容為輸入字符的ASCII碼。常用輸入輸出DOS功能:二、02H號(hào)功能功能:將DL中的一個(gè)字符顯示在屏幕上。入口參數(shù):待顯示字符的ASCII碼。調(diào)用方式: MOVDL,待顯示字符的ASCII碼MOV
AH,02HINT
21H出口參數(shù):無。二、02H號(hào)功能三、08H號(hào)功能功能:等待從鍵盤輸入一個(gè)字符,將該字符的ASCII碼送AL,但不在屏幕上顯示該字符。入口參數(shù):無。調(diào)用方式: MOVAH,08HINT21H出口參數(shù):AL的內(nèi)容為輸入字符的ASCII碼。三、08H號(hào)功能四、09H號(hào)功能功能:在屏幕上顯示一個(gè)以$符號(hào)作為結(jié)束標(biāo)志的字符串。入口參數(shù):DX的內(nèi)容為待顯示某個(gè)字符串的首地址。調(diào)用方式: MOVDX,待顯示字符串的首地址MOVAH,09HINT21H出口參數(shù):無。四、09H號(hào)功能五、0AH號(hào)功能功能:從鍵盤上輸入一串字符送到指定的內(nèi)存緩沖區(qū)。入口參數(shù):DX存有內(nèi)存緩沖區(qū)的首地址。調(diào)用方式: MOVDX,內(nèi)存緩沖區(qū)的首地址MOVAH,0AHINT21H出口參數(shù):無。五、0AH號(hào)功能六、4CH號(hào)功能功能:返回DOS。入口參數(shù):無。調(diào)用方式:MOVAH,4CHINT21H出口參數(shù):無。六、4CH號(hào)功能6.4.1順序程序設(shè)計(jì)順序結(jié)構(gòu)是一種最簡(jiǎn)單、最基本的程序結(jié)構(gòu)。順序程序只由算術(shù)運(yùn)算和邏輯運(yùn)算指令構(gòu)成,程序是按指令順序逐條執(zhí)行的?!纠壳髢蓚€(gè)字節(jié)數(shù)A與B之差,并將結(jié)果顯示出來。分析:兩個(gè)字節(jié)數(shù)相減,結(jié)果不會(huì)大于255。該程序可采用順序程序,配合調(diào)用屏幕顯示的DOS功能即可。但顯示結(jié)果先要轉(zhuǎn)換成ASCII碼。6.4.1順序程序設(shè)計(jì)DATASEGMENTADB10HBDB20HDATAENDSSTASEGMENTSTACKDB100DUP(?)STAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STASTART:MOVAX,DATA;將數(shù)據(jù)段地址送數(shù)據(jù)段寄存器MOVDS,AX源程序:DATASEGMENT源程序:MOVAL,A;求A-BSUBAL,BMOVBL,AL;保存AL的計(jì)算結(jié)果MOVAH,0;將AH清0MOVCL,4SALAL,CL;AL右移4位ANDAL,0FH;屏蔽高4位ADDAL,30H;計(jì)算高位數(shù)的ASCII值MOVDL,AL;DOS功能調(diào)用,顯示高位數(shù)MOVAH,02HINT21HMOVAL,BL;計(jì)算結(jié)果送ALMOVAL,A;求A-BANDAL,0FH;屏蔽高4位ADDAL,30H;計(jì)算低位數(shù)的ASCII值MOVDL,AL;顯示低位數(shù)MOVAH,02HINT21HMOVAH,4CH;返回DOSINT21HCODEENDSENDSTARTANDAL,0FH;屏蔽高46.4.2分支程序設(shè)計(jì)功能:解決針對(duì)不同的情況作不同處理的問題。特點(diǎn):先判斷條件,根據(jù)判斷結(jié)果轉(zhuǎn)向不同的分支。典型的分支結(jié)構(gòu)為二分支結(jié)構(gòu):條件成立?程序段YN條件成立?程序段1YN程序段26.4.2分支程序設(shè)計(jì)條件成立?程序段YN條件成立?程序段分支程序設(shè)計(jì)要用到條件測(cè)試和轉(zhuǎn)移指令?!纠烤幊虒?shí)現(xiàn)比較三個(gè)有符號(hào)雙字節(jié)數(shù)的大小,并將其中最大的數(shù)送入MAX單元。分析:該程序要對(duì)內(nèi)存中的三個(gè)數(shù)進(jìn)行比較,并將其中最大的數(shù)送入MAX單元中。為此,采用分支結(jié)構(gòu)程序。流程圖為:分支程序設(shè)計(jì)要用到條件測(cè)試和轉(zhuǎn)移指令?!纠烤幊虒?shí)現(xiàn)比較計(jì)算機(jī)硬件技術(shù)基礎(chǔ)第6章課件源程序:DATASEGMENTaDW100HbDW-5cDW20MAXDW?DATAENDSSTASEGMENTSTACKDB100DUP(?)STAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STA源程序:DATASEGMENTSTART:MOVAX,DATA;送數(shù)據(jù)段地址到數(shù)據(jù)段寄存器MOVDS,AXMOVAX,aCMPAX,b;比較a、b大小JGL1;a>b轉(zhuǎn)L1MOVAX,bCMPAX,c;比較b、c大小JGL2;b>c轉(zhuǎn)L2L:MOVAX,c;b<=c,c送AXJMPL2;無條件轉(zhuǎn)移到L2L1:CMPAX,c;比較a、c大小JNGL;a<=c轉(zhuǎn)L,送cSTART:MOVAX,DATA;送數(shù)據(jù)段地址到L2:MOVMAX,AX;最大值A(chǔ)X送MAXMOVAH,4CH;返回DOSINT21HCODEENDSENDSTARTL2:MOVMAX,AX;最大值A(chǔ)X送6.4.3循環(huán)程序設(shè)計(jì)功能:解決需要重復(fù)操作的問題,如統(tǒng)計(jì)數(shù)據(jù)個(gè)數(shù)、多個(gè)字符傳送等。循環(huán)程序結(jié)構(gòu):(1)置循環(huán)初值部分。對(duì)循環(huán)工作部分涉及的寄存器或存儲(chǔ)單元設(shè)初值;使地址指針指向一個(gè)數(shù)據(jù)區(qū)的起始位置;設(shè)置循環(huán)次數(shù)或置循環(huán)結(jié)束條件等。(2)循環(huán)體部分也稱循環(huán)工作部分,是循環(huán)程序需重復(fù)執(zhí)行的部分,是循環(huán)程序的主體。(3)循環(huán)控制部分修改循環(huán)計(jì)數(shù)器的值,測(cè)試循環(huán)結(jié)束條件,控制循環(huán)次數(shù)。(4)循環(huán)結(jié)束處理部分進(jìn)行循環(huán)結(jié)束后的數(shù)據(jù)分析、結(jié)果存放等處理。6.4.3循環(huán)程序設(shè)計(jì)結(jié)構(gòu)類型:先處理后判斷和先判斷后處理兩種。循環(huán)條件?置循環(huán)初值YN循環(huán)體循環(huán)條件?置循環(huán)初值YN循環(huán)體(a)先工作后判斷方式(b)先判斷后工作方式結(jié)構(gòu)類型:先處理后判斷和先判斷后處理兩種。循環(huán)條件?置循環(huán)初【例】編程統(tǒng)計(jì)BUF字節(jié)數(shù)據(jù)區(qū)中0的個(gè)數(shù)。分析:該程序要將數(shù)據(jù)區(qū)中的數(shù)據(jù)依次與0比較,所以采用循環(huán)程序?qū)崿F(xiàn),將比較、統(tǒng)計(jì)部分作為循環(huán)工作部分。源程序:DATASEGMENTBUFDB1,7,0,-4,0,6,-7,9,0,4COUNTEQU$-BUF;數(shù)據(jù)個(gè)數(shù)賦給COUNTNUMDW?DATAENDSSTASEGMENTSTACKDB100DUP(?)STAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK【例】編程統(tǒng)計(jì)BUF字節(jié)數(shù)據(jù)區(qū)中0的個(gè)數(shù)。DATASEGSTART:MOVAX,DATAMOVDS,AXLEABX,BUF;數(shù)據(jù)區(qū)首地址送BXMOVCX,COUNT;賦循環(huán)初值MOVDX,0;統(tǒng)計(jì)值為0LOOP1:MOVAL,[BX];取第1個(gè)數(shù)CMPAL,0;測(cè)試是否為0JNEL1;不為0轉(zhuǎn)L1取下一個(gè)數(shù)INCDX;為0,DX加1,取下一個(gè)數(shù)L1:INCBXLOOPLOOP1NEXT:MOVNUM,DX;結(jié)果送NUMMOVAH,4CH;返回DOSINT21HCODEENDSENDSTARTSTART:MOVAX,DATA6.4.4子程序設(shè)計(jì)功能:解決不連續(xù)重復(fù)操作的問題,可避免重復(fù)編制程序,節(jié)省程序代碼所占的存儲(chǔ)空間。一、子程序定義:子程序名PROC………………RET 子程序名ENDP子程序體,實(shí)現(xiàn)子程序功能6.4.4子程序設(shè)計(jì)子程序體,實(shí)現(xiàn)子程序功能二、子程序調(diào)用及參數(shù)傳遞1.調(diào)用方式CALL子程序名2.參數(shù)傳遞主程序要在調(diào)用子程序之前,將需要在子程序中處理的數(shù)據(jù)通過某種方式傳送到子程序,也即傳遞入口參數(shù);子程序調(diào)用之后,也需將處理結(jié)果以某種方式再傳給主程序,以便后續(xù)程序需要,即傳遞出口參數(shù)。匯編語言中傳遞參數(shù)的方法有:
①寄存器法。②存儲(chǔ)單元法。③堆棧法。二、子程序調(diào)用及參數(shù)傳遞三、子程序調(diào)用的現(xiàn)場(chǎng)保護(hù)由于系統(tǒng)中寄存器數(shù)目是有限,若在子程序中需要主程序中已經(jīng)用到的寄存器時(shí),為了使子程序調(diào)用后能正常執(zhí)行主程序,子程序調(diào)用前,必須將原來寄存器中的內(nèi)容保存起來,即保護(hù)現(xiàn)場(chǎng)。匯編語言程序設(shè)計(jì)中,保護(hù)現(xiàn)場(chǎng)最常用的方法是堆棧法?!纠烤幊逃?jì)算的值,要求每次階乘的值不能超過65535(16位二進(jìn)制數(shù)的最大值)。三、子程序調(diào)用的現(xiàn)場(chǎng)保護(hù)【例】編程計(jì)算源程序:DSEGSEGMENTmEQU8
nEQU3ANSDW?DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGBEGIN:MOVAX,DSEG MOVDS,AX MOVDX,0;將DX清0,輔助后面的乘/除法運(yùn)算MOVCX,n;約定以CX傳遞入口參數(shù) 源程序:DSEGSEGMENTCALLSUB1;調(diào)用子程序SUB1,求n!MOVBX,AX;保護(hù)現(xiàn)場(chǎng),轉(zhuǎn)存n!到BX中MOVCX,m
CALLSUB1;調(diào)用子程序SUB1,求m!DIVBX ;求m!/n!MOVBX,AX;保護(hù)現(xiàn)場(chǎng),轉(zhuǎn)存m!/n!到BX中MOVCX,mSUBCX,n;求m-nCALLSUB1;調(diào)用子程序SUB1,求(m-n)!XCHGBX,AX;交換AX和BX,使AX中為m!/n!,BX中為(m-n)!DIVBX ;求m!/n!/(m-n)!,即 MOVANS,AXCALLSUB1;調(diào)用子MOVAH,4CHINT21HSUB1PROC;定義子程序SUB1MOVAX,1NEXT:MULCX;以DX,AX傳遞出口參數(shù),有效乘積(低16位)在AX中LOOPNEXTRETSUB1ENDPCSEGENDSENDBEGIN本章小結(jié)MOVAH,4CH本章小結(jié)小結(jié)1.匯編語言特點(diǎn):①符號(hào)助記式語言。②程序執(zhí)行效率高、占用系統(tǒng)資源少,實(shí)現(xiàn)如輸入/輸出等與硬件有關(guān)的操作容易。2.程序結(jié)構(gòu):①邏輯分段,通常包括數(shù)據(jù)段、堆棧段、附加段和代碼段。②匯編語言程序用指令和偽指令來編寫。③構(gòu)成匯編語言程序的語法要素有:常量、變量、標(biāo)識(shí)符、保留字和表達(dá)式。小結(jié)1.匯編語言特點(diǎn):3.上機(jī):需經(jīng)過匯編程序翻譯成目標(biāo)程序,再經(jīng)過鏈接后才能生成可執(zhí)行程序文件,機(jī)器才能識(shí)別并運(yùn)行。4.8086指令系統(tǒng):包括數(shù)據(jù)傳送指令、算術(shù)運(yùn)算指令、邏輯運(yùn)算指令、串處理指令、控制轉(zhuǎn)移指令和處理機(jī)控制指令六類。①數(shù)據(jù)傳送指令:將操作數(shù)、地址傳送到寄存器或存儲(chǔ)單元中。②算術(shù)運(yùn)算指令:對(duì)操作數(shù)進(jìn)行加、減、乘、除運(yùn)算。③邏輯運(yùn)算指令:對(duì)操作數(shù)按位進(jìn)行與、或、非、異或的操作。④轉(zhuǎn)移指令:可實(shí)現(xiàn)選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)程序。分為條件轉(zhuǎn)移指令和無條件轉(zhuǎn)移指令。條件轉(zhuǎn)移指令需根據(jù)特定的標(biāo)志位的情況來決定是否改變程序的流程。⑤重復(fù)控制指令及串操作指令:與重復(fù)前綴配合,更容易實(shí)現(xiàn)循環(huán)程序。3.上機(jī):需經(jīng)過匯編程序翻譯成目標(biāo)程序,再經(jīng)過鏈接后才能生5.輸入/輸出功能調(diào)用:實(shí)現(xiàn)數(shù)據(jù)的輸入/輸出。①如果需要輸出,則按對(duì)應(yīng)功能給約定的寄存器以所需的參數(shù)。②用“MOVAH,功能號(hào)”把功能號(hào)送給AH③調(diào)用中斷指令“INT21H”6.匯編語言程序結(jié)構(gòu):順序程序結(jié)構(gòu)、分支程序結(jié)構(gòu)和循環(huán)程序結(jié)構(gòu)。①順序程序結(jié)構(gòu):最基本、最簡(jiǎn)單的程序結(jié)構(gòu),程序按指令順序逐條執(zhí)行。②分支程序結(jié)構(gòu):先判斷條件,根據(jù)條件情況作不同處理。③循環(huán)程序結(jié)構(gòu):實(shí)現(xiàn)需連續(xù)重復(fù)執(zhí)行的同一操作。5.輸入/輸出功能調(diào)用:實(shí)現(xiàn)數(shù)據(jù)的輸入/輸出。6.匯編語7.子程序:匯編語言程序中的重要部分,對(duì)不連續(xù)且多次重復(fù)執(zhí)行的程序段采用子程序調(diào)用的方法,可以簡(jiǎn)化程序設(shè)計(jì),節(jié)省程序代碼存儲(chǔ)空間。①子程序定義:“程序名PROC”和“程序名ENDP”②子程序調(diào)用和返回:用CALL和RET指令。③參數(shù)傳遞:寄存器法、存儲(chǔ)單元法、堆棧法。④調(diào)用現(xiàn)場(chǎng)保護(hù):堆棧法。7.子程序:匯編語言程序中的重要部分,對(duì)不連續(xù)且多次重復(fù)執(zhí)第6章指令系統(tǒng)與匯編語言基礎(chǔ)第6章指令系統(tǒng)與匯編語言基礎(chǔ)【學(xué)習(xí)目標(biāo)】1.知道匯編語言的程序結(jié)構(gòu)。知識(shí)點(diǎn):
?指令、偽指令、標(biāo)識(shí)符、保留字、常量、變量、表達(dá)式
?源程序、目標(biāo)程序、可執(zhí)行程序、子程序、MASM、系統(tǒng)功能調(diào)用2.掌握8086指令系統(tǒng)和匯編語言程序設(shè)計(jì)及調(diào)試。能力要求:
◆熟記8086的指令及功能。
◆能進(jìn)行簡(jiǎn)單匯編語言程序設(shè)計(jì)及調(diào)試?!緦W(xué)習(xí)目標(biāo)】【重點(diǎn)、難點(diǎn)】1.8086指令的功能及應(yīng)用。2.匯編語言程序的格式及語法要求。3.匯編語言程序設(shè)計(jì)及調(diào)試?!局攸c(diǎn)、難點(diǎn)】【內(nèi)容框架】指令系統(tǒng)及匯編語言基礎(chǔ)匯編語言基礎(chǔ)指令格式及尋址方式8086的指令系統(tǒng)程序設(shè)計(jì)舉例匯編語言的程序格式和組成匯編語言概述上機(jī)步聚指令格式8086的尋址方式數(shù)據(jù)傳送指令算術(shù)運(yùn)算指令位操作指令轉(zhuǎn)移指令順序程序設(shè)計(jì)分支程序設(shè)計(jì)循環(huán)程序設(shè)計(jì)子程序設(shè)計(jì)循環(huán)指令輸入/輸出DOS功能調(diào)用處理器控制類指令【內(nèi)容框架】指令系統(tǒng)及匯編語言基礎(chǔ)指令格式及尋址方式80866.1.1匯編語言概述計(jì)算機(jī)編程語言:機(jī)器語言、匯編語言和高級(jí)語言。①機(jī)器語言:由二進(jìn)制代碼按一定語法和語義組成的,是CPU能夠理解并直接執(zhí)行的機(jī)器指令集合。指令難記、程序難以閱讀、通用性差。②匯編語言:符號(hào)助記式語言,即符號(hào)化了的機(jī)器語言。程序代碼比機(jī)器語言程序代碼更具易讀性,記憶方便。由匯編語言編寫的程序稱為匯編語言源程序,需要經(jīng)過稱為匯編程序翻譯成機(jī)器語言的目標(biāo)程序,才能被CPU讀取并執(zhí)行。③高級(jí)語言:接近人類自然語言的計(jì)算機(jī)編程語言,比匯編語言更加易于理解。高級(jí)語言源程序,須由翻譯軟件轉(zhuǎn)換成匯編語言和機(jī)器語言,才能最終能被CPU讀取并執(zhí)行。6.1.1匯編語言概述計(jì)算機(jī)編程語言:機(jī)器語言、匯編語言和三種語言程序指令的對(duì)比:指令的功能是把a(bǔ)+b的和賦給c。學(xué)習(xí)匯編語言的目的:①匯編語言程序比用高級(jí)語言程序占用內(nèi)存資源更少,執(zhí)行速度更快。②對(duì)涉及硬件的操作匯編語言比高級(jí)語言功能更強(qiáng)。(嵌入式編程)③匯編語言源程序更能從原理上體現(xiàn)計(jì)算機(jī)的工作過程,是學(xué)習(xí)計(jì)算機(jī)原理和接口技術(shù)的基礎(chǔ)。④學(xué)習(xí)匯編語言是學(xué)習(xí)軟件的加密、解密技術(shù)和網(wǎng)絡(luò)安全的必備的基礎(chǔ)。三種語言程序指令的對(duì)比:指令的功能是把a(bǔ)+b的和賦給c。學(xué)習(xí)6.1.2匯編語言的程序格式和組成一、匯編語言程序的基本框架1.程序案例:以實(shí)現(xiàn)A+B→C的匯編語言源程序?yàn)槔?.匯編語言程序的一般格式:(1)匯編語言程序采用的是段式結(jié)構(gòu),一個(gè)匯編語言程序由若干個(gè)邏輯段組成。如數(shù)據(jù)段DSEG、堆棧段SSEG和代碼段CSEG。各段以“段名SEGMENT”開始,以“段名ENDS”結(jié)束。段名需由程序員命名。(2)匯編語言程序中包含指令語句和偽指令語句。指令語句在匯編過程中被翻譯、鏈接成相應(yīng)的可執(zhí)行的機(jī)器指令代碼。如MOV、ADD等。偽指令語句是匯編控制命令
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年科技創(chuàng)新項(xiàng)目對(duì)接服務(wù)協(xié)議
- 2024年個(gè)人汽車租賃協(xié)議綜合條款
- 2024年專業(yè)司機(jī)陪同租車協(xié)議樣本
- 2024年工程擋土墻專項(xiàng)勞務(wù)分包協(xié)議
- 2024年限定服務(wù)商業(yè)務(wù)合作協(xié)議模板
- 2024常年出差人員服務(wù)協(xié)議范本
- 2024年薪酬調(diào)整與工作職責(zé)變更協(xié)議
- 四年級(jí)下冊(cè)《勞動(dòng)技術(shù)》教案
- 濟(jì)南的課件教學(xué)課件
- 企業(yè)勞動(dòng)爭(zhēng)議賠償協(xié)議書
- 廣東省江門市新會(huì)區(qū)崖南鎮(zhèn)田邊小學(xué)2024-2025學(xué)年一年級(jí)上學(xué)期11月期中語文試題
- 主管護(hù)師社區(qū)護(hù)理學(xué)考試題庫(kù)及答案
- 中學(xué)學(xué)生兩操管理辦法
- 行政職業(yè)能力測(cè)試分類模擬題科技常識(shí)題
- 雙減下小學(xué)數(shù)學(xué)作業(yè)設(shè)計(jì)的實(shí)踐研究課題開題報(bào)告
- 滬科版(2024)八年級(jí)全一冊(cè)物理第一學(xué)期期中學(xué)業(yè)質(zhì)量測(cè)試卷 2套(含答案)
- 化工和危險(xiǎn)化學(xué)品生產(chǎn)經(jīng)營(yíng)單位二十條重大隱患判定標(biāo)準(zhǔn)釋義(中化協(xié))
- 愚公移山英文 -中國(guó)故事英文版課件
- 課件交互設(shè)計(jì)
- 社區(qū)獲得性肺炎教學(xué)查房
- 淺析語言和言語的關(guān)系及其對(duì)外語教學(xué)的啟示.doc
評(píng)論
0/150
提交評(píng)論