




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第七章 匯編語(yǔ)言程序設(shè)計(jì)17.1 匯編語(yǔ)言程序及開(kāi)發(fā)過(guò)程一、基本概念機(jī)器語(yǔ)言:指令,是CPU唯一能識(shí)別的語(yǔ)言,用二進(jìn)制表示;匯編語(yǔ)言:是機(jī)器語(yǔ)言的一種助記符形式,與機(jī)器語(yǔ)言一一對(duì)應(yīng);匯編程序:把匯編語(yǔ)言翻譯成機(jī)器語(yǔ)言的程序。2二、匯編語(yǔ)言的開(kāi)發(fā)過(guò)程3DATASEGMENTSTRINGDBHello World!, $DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATA, SS:STACKSTART:MOVAX, DATAMOVDS, AXMOVDX, OFFSET STRINGMOVAH, 9INT21HMOVAX, 4C00HINT21HCODEENDSSTAC
2、KSEGMENTSTACKDB256 DUP(?)STACKENDSENDSTART47.2 指令格式及尋址方式一、指令格式操作碼:告訴計(jì)算機(jī)執(zhí)行什么性質(zhì)的操作;操作數(shù):告訴計(jì)算機(jī)對(duì)什么樣的對(duì)象進(jìn)行操作。每條指令只有一個(gè)操作碼,但可以有多個(gè)操作數(shù),8086指令系統(tǒng)中,操作數(shù)的數(shù)目有02個(gè) 5指令格式舉例:MOD含義MOD含義00存儲(chǔ)器方式,無(wú)位移量01存儲(chǔ)器方式,有8位位移量10存儲(chǔ)器方式,有16位位移量11寄存器方式,無(wú)位移量REGW=1W=0REGW=1W=0000AXAL100SPAH001CXCL101BPCH010DXDL110SIDH011BXBL111DIBH6 MODR/M存儲(chǔ)
3、器方式寄存器方式有效地址的計(jì)算公式W=0W=100011011000BX+SIBX+SI+ D8BX+SI+ D16ALAX001BX+DIBX+DI+ D8BX+DI+ D16CLCX010BP+SIBP+SI+ D8BP+SI+ D16DLDX011BP+DIBP+DI+ D8BP+DI+ D16BLBX100SISI+ D8SI+ D16AHSP101DIDI+ D8DI+ D16CHBP110D16BP+ D8BP+ D16DHSI111BXBX+ D8BX+ D16BHDI7MOV 把源操作數(shù)送給目的操作數(shù)XCHG交換兩個(gè)操作數(shù)的數(shù)據(jù)PUSH, POP把操作數(shù)壓入或取出堆棧PUSHF
4、,POPF,堆棧指令群PUSHA,POPALEA, LDS, LES取地址至寄存器XLAT(XLATB)查表指令二、8086指令集 數(shù)據(jù)傳送指令8ADD, ADC加法指令SUB, SBB減法指令I(lǐng)NC, DEC加一或減一NEG取二進(jìn)制補(bǔ)碼MUL, IMUL乘法指令DIV, IDIV除法指令CBW, CWD有符號(hào)數(shù)擴(kuò)展指令A(yù)AA,AAS,AAM,AAD非壓BCD碼運(yùn)算調(diào)整指令DAA, DAS壓縮BCD碼調(diào)整指令 算術(shù)運(yùn)算指令9AND, OR, XOR, NOT, TEST邏輯運(yùn)算SHR, SHL, SAR, SAL移位指令ROR, ROL, RCR, RCL循環(huán)移位指令位運(yùn)算指令10CLC, S
5、TC, CMC設(shè)定進(jìn)位標(biāo)志CLD, STD設(shè)定方向標(biāo)志CLI, STI設(shè)定中斷標(biāo)志CMP比較JMP跳往指定地址執(zhí)行JXX條件轉(zhuǎn)移指令LOOP循環(huán)指令LOOPE(Z)條件循環(huán)指令CALL, RET子程序調(diào)用,返回指令I(lǐng)NT, IRET中斷調(diào)用及返回指令 程序流程控制指令11MOVSB, MOVSW, MOVSD字符串傳送指令CMPSB, CMPSW, CMPSD字符串比較指令SCASB, SCASW字符串搜索指令LODSB, LODSW字符串載入指令STOSB, STOSW字符串存貯指令 REP, REPE, REPNE重復(fù)前綴指令字符串操作指令121、操作數(shù)尋址方式1)立即尋址操作數(shù)存放在指令
6、中,緊跟在操作碼之后,作為指令的一部分存放在代碼段中。2)寄存器尋址源操作數(shù)和目的操作數(shù)均為寄存器,不需要訪問(wèn)存儲(chǔ)器,執(zhí)行速度最快。 三、尋址方式13以下的尋址方式都不是直接給出要訪問(wèn)的數(shù)據(jù),而是給出要訪問(wèn)數(shù)據(jù)的內(nèi)存地址,有效地址的計(jì)算可以用下式表示:有效地址 = 基址 + 變址 + 偏移量 基址寄存器:BX,BP變址寄存器:SI,DI偏移量: 8位或16位數(shù)字 尋址方式143) 直接尋址:操作數(shù)的有效地址只包含位移量一項(xiàng),偏移量即為有效地址。當(dāng)目的操作數(shù)為存儲(chǔ)器,源操作數(shù)為立即數(shù)時(shí),必須指明操作的類型。4) 寄存器間接尋址:可用寄存器BX, BP, SI, DI。操作數(shù)的有效地址只包括基址寄
7、存器或變址寄存器。操作數(shù)在存儲(chǔ)器中,而操作數(shù)的地址在某個(gè)寄存器中。5) 寄存器相對(duì)尋址:有效地址包括基址寄存器或變址寄存器以及偏移量?jī)刹糠帧ぶ贩绞?56)基址變址尋址:有效地址包括基址寄存器和變址寄存器兩部分。7) 相對(duì)基址變址尋址有效地址包括基址寄存器、變址寄存器和偏移量三部分。 尋址方式162、程序轉(zhuǎn)移尋址方式 1) 段內(nèi)直接轉(zhuǎn)移尋址: 以當(dāng)前IP指向的地址為基準(zhǔn)地址,加上跟在操作碼后面的相對(duì)位移量,得到轉(zhuǎn)移地址的偏移地址。2) 段內(nèi)間接轉(zhuǎn)移尋址 以寄存器間接尋址、變址尋址、基址尋址、基址變址尋址方式得到操作數(shù),作為轉(zhuǎn)移地址的偏移地址。 尋址方式173) 段間直接轉(zhuǎn)移尋址 操作數(shù)為兩個(gè)1
8、6位地址,第一個(gè)為偏移地址,第二個(gè)為段地址。4) 段間間接轉(zhuǎn)移尋址 用間接尋址的方式得到兩個(gè)16位地址,作為跳轉(zhuǎn)地址。 尋址方式187.3 8086宏匯編語(yǔ)言的基本語(yǔ)法一、指令性語(yǔ)句經(jīng)過(guò)匯編之后有目標(biāo)程序與之對(duì)應(yīng),是有實(shí)際操作的語(yǔ)句。 指令性語(yǔ)句的格式為:標(biāo)號(hào): 前綴 指令助記符 操作數(shù) ,操作數(shù) ;注釋 19用來(lái)對(duì)匯編時(shí)的一些情況進(jìn)行說(shuō)明,如起始終止信息、分段情況、變量說(shuō)明、內(nèi)存結(jié)構(gòu)等等。指示性語(yǔ)句不產(chǎn)生任何目標(biāo)代碼。1、段定義偽指令 段起始和結(jié)束偽指令 段名 SEGMENT 段名 ENDS2) 段寄存器與段關(guān)系說(shuō)明偽指令 ASSUME段寄存器:段名,段寄存器:段名,二、指示性語(yǔ)句203)
9、程序開(kāi)始和結(jié)束偽指令END偽指令一方面通知匯編程序結(jié)束匯編,同時(shí)指明標(biāo)號(hào)語(yǔ)句為程序開(kāi)始執(zhí)行的起始地址。指示性語(yǔ)句214)DOS程序的結(jié)束方式 方式一MOVAH, 4CHINT21H方式二主程序名PROCFARPUSHDSMOVAX, 0PUSHAXRET主程序名ENDPEND主程序名222、數(shù)據(jù)定義偽指令1)常量定義格式:表達(dá)式名EQU表達(dá)式 2)數(shù)據(jù)定義格式:變量名(標(biāo)號(hào)) 數(shù)據(jù)類型定義偽指令 表達(dá)式DB1個(gè)字節(jié),8位DW2個(gè)字節(jié),16位DD4個(gè)字節(jié),32位DQ8個(gè)字節(jié),64位DT10個(gè)字節(jié),80位 指示性語(yǔ)句233)重復(fù)偽指令格式:重復(fù)次數(shù) DUP(重復(fù)內(nèi)容)4)變量或標(biāo)號(hào)的地址定義DW和
10、DD偽指令可以用來(lái)定義變量或標(biāo)號(hào)的偏移地址和段地址。5) 地址計(jì)數(shù)器$:表示正在匯編的當(dāng)前地址 指示性語(yǔ)句243、匯編語(yǔ)句定位偽指令ORG 語(yǔ)句用來(lái)定義起始位置,可以用來(lái)定位數(shù)據(jù)和程序格式:ORG表達(dá)式4、取段址和取偏移址偽指令格式:SEG地址標(biāo)號(hào)或變量名OFFSET地址標(biāo)號(hào)或變量名指示性語(yǔ)句257.4 順序結(jié)構(gòu)程序設(shè)計(jì)一、數(shù)據(jù)傳送指令1、一般傳送指令格式:MOV目的,源功能:該指令將源內(nèi)容送至目的地址中 262、交換指令 格式:XCHG操作數(shù)1,操作數(shù)2功能:源操作數(shù)內(nèi)容和目的操作數(shù)對(duì)調(diào)。3、堆棧操作指令格式:PUSH源操作數(shù)POP目的操作數(shù)功能:數(shù)據(jù)壓入堆棧和數(shù)據(jù)彈出堆棧。數(shù)據(jù)傳送指令27
11、4、地址傳送指令1)取16位偏移地址指令格式:LEA16位寄存器,變量名功能:將變量的偏移地址存入16位寄存器中同OFFSET指令相比,LEA指令功能更強(qiáng),變量名可以有偏移量。2)取32位地址指令格式:LDS16位寄存器,變量名LES16位寄存器,變量名功能:將變量中保存的32位數(shù)作為32位地址取入指定的寄存器。數(shù)據(jù)傳送指令28DATASEGMENTADDRDD56781234hBUFDW5 DUP(20)AD_BUFDDBUFSTRINGDBabcdAD_STRINGDDSTRINGOFF_STRINGDWSTRINGDATAENDSCODESEGMENTASSUMECS:CODE, DS:
12、DATASTARTPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AX29LESDI, ADDR;ES:DI = ?LEABX, ADDR;BX = ?MOVAX, SEG ADDR;AX=?MOVDS, AXMOVCX, BUF;CX=?LDSSI, AD_BUF;DS:SI=?MOVAL, STRING;AL=?MOVAX, OFF_STRING;AX=?LESBX, AD_STRING;ES:BX=?RETSTARTENDPCODEENDSEND START301、加減運(yùn)算指令格式:ADD/ADC目的操作數(shù),源操作數(shù)SUB/SBB目的操作數(shù),源操
13、作數(shù)功能:ADD:目的操作數(shù) = 目的操作數(shù) + 源操作數(shù)SUB:目的操作數(shù) = 目的操作數(shù) 源操作數(shù)ADC:目的操作數(shù) = 目的操作數(shù) + 源操作數(shù) + CFSBB:目的操作數(shù) = 目的操作數(shù) 源操作數(shù) CF影響標(biāo)志位:進(jìn)位標(biāo)志:CF,奇偶標(biāo)志:PF,零標(biāo)志:ZF,符號(hào)標(biāo)志:SF溢出標(biāo)志:OF,輔助進(jìn)位標(biāo)志:AF二、算術(shù)運(yùn)算指令31DATASEGMENTVAR8_1DB78HVAR8_2DB52HVAR8_3DB3AHVAR16_1DW3411HVAR16_2DW3ABCHVAR16_3DW4020HVAR32_1DD0AABBCCDDHVAR32_2DD12345678HVAR32_3DD
14、11223344HRESULT1DB?RESULT2DW?RESULT3DD?DATAENDS32CODESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX, DATAMOVDS, AXMOVAL, VAR8_1;8位運(yùn)算ADDAL, VAR8_2SUBAL, VAR8_3MOVRESULT1, ALMOVAX, VAR16_1;16位運(yùn)算ADDAX, VAR16_2SUBAX, VAR16_3MOVRESULT2, AX33MOVAX, WORD PTR VAR32_1;32位運(yùn)算MOVDX, WORD PTR VAR32_12ADDAX, WORD PTR V
15、AR32_2ADCDX, WORD PTR VAR32_22SUBAX, WORD PTR VAR32_3SBBDX, WORD PTR VAR32_32MOVWORD PTR RESULT3, AXMOVWORD PTR RESULT32, DXRETCODEENDSENDSTART342、加一、減一指令格式:INC操作數(shù)DEC操作數(shù)功能:操作數(shù)加一或減一影響標(biāo)志位:不影響進(jìn)位標(biāo)志CF,但影響零標(biāo)志ZF。算術(shù)運(yùn)算指令353、求補(bǔ)指令格式:NEG操作數(shù)功能:操作數(shù)取反加一,相當(dāng)于在操作數(shù)前加負(fù)號(hào)。影響標(biāo)志位:當(dāng)操作數(shù)為80H或8000H時(shí),影響溢出標(biāo)志。4、符號(hào)擴(kuò)展指令格式:CBWCWD功能:
16、CBW:將AL的符號(hào)擴(kuò)展到AH;CWD:將AX的符號(hào)擴(kuò)展到DX 算術(shù)運(yùn)算指令36算術(shù)運(yùn)算指令5、乘除指令格式:MUL/DIV源操作數(shù)IMUL/IDIV源操作數(shù)功能:MUL/DIV:無(wú)符號(hào)數(shù)乘/除法;IMUL/IDIV:有符號(hào)數(shù)乘/除法;指令只給出源操作數(shù),目的操作數(shù)隱含。37乘、除法指令使用寄存器運(yùn)算被乘/除數(shù)源操作數(shù)結(jié)果8位乘8位 AL8位AX16位乘16位 AX16位DX:AX16位除8位 AX8位商:AL,余數(shù):AH32位除16位 DX:AX16位商:AX,余數(shù):DX38DATASEGMENTXDW25YDW20ZDW140VDW50FDW2 DUP(?)DATAENDSCODESEGM
17、ENTASSUMECS:CODE, DS:DATASTART:MOVAX, DATAMOVDS, AXMOVAX, XIMULY;DX:AX = X*Y39MOVCX, AXMOVBX, DX;BX:CX = X*YMOVAX, ZCWD;DX:AX = ZADDCX, AXADCBX, DX;BX:CX = X*Y + ZSUBCX, 540SBBBX, 0;BX:CX = X*Y + Z -540MOVAX, VCWD;DX:AX = VSUBAX, CXSBBDX, BX;DX:AX = V (X*Y+Z-540)40IDIVX;AX = (V-(X*Y+Z-540) / X (商);D
18、X = (V-(X*Y+Z-540) / X (余數(shù))MOVF, AXMOVF+2, DXMOVAX, 4C00HINT21HCODEENDSENDSTART411、邏輯運(yùn)算指令1)邏輯非格式:NOT目的操作數(shù)功能:目的操作數(shù)按位取反。三、位運(yùn)算指令422)邏輯與、或、異或格式:AND目的操作數(shù),源操作數(shù)OR目的操作數(shù),源操作數(shù)XOR目的操作數(shù),源操作數(shù)功能:目的操作數(shù)與源操作數(shù)按位進(jìn)行與、或、異或運(yùn)算,結(jié)果保存在目的操作數(shù)中。位運(yùn)算指令433)位測(cè)試指令 格式:TEST目的操作數(shù),源操作數(shù)功能:作用同AND指令相同,但結(jié)果不保存在目的操作數(shù)中,只是影響標(biāo)志位。位運(yùn)算指令44位運(yùn)算指令2、移位
19、指令算術(shù)移位指令格式:SAL目的操作數(shù),計(jì)數(shù)值SAR目的操作數(shù),計(jì)數(shù)值 移位示意圖 SAL:SAR:45位運(yùn)算指令 2) 邏輯移位指令格式:SHL目的操作數(shù),計(jì)數(shù)值SHR目的操作數(shù),計(jì)數(shù)值 移位示意圖 SHL:SHR:46DATASEGMENTXDW68YDW218FDW?DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX, DATAMOVDS, AXMOVAX, XMOVBX, XMOVCL, 3SHLAX, CL;AX = X * 8ADDAX, BX;AX = X*947SUBAX, Y;AX = X*9 YMOVCL, 2SHRAX
20、, CL;AX = ( X*9 Y ) / 2MOVF, AXMOVAX, 4C00HINT21HCODEENDSENDSTART48位運(yùn)算指令 3) 不帶進(jìn)位位的循環(huán)移位指令格式:ROL目的操作數(shù),計(jì)數(shù)值ROR目的操作數(shù),計(jì)數(shù)值 移位示意圖 ROL:ROR:49位運(yùn)算指令 4) 帶進(jìn)位位的循環(huán)移位指令格式:RCL目的操作數(shù),計(jì)數(shù)值RCR目的操作數(shù),計(jì)數(shù)值 移位示意圖 RCL:RCR:507.5 分支結(jié)構(gòu)程序設(shè)計(jì)一、指令 1、比較指令格式:CMP目的操作數(shù),源操作數(shù)功能:同SUB指令相似,但結(jié)果不保存到目的操作數(shù)中,只是影響標(biāo)志位。512、無(wú)條件轉(zhuǎn)移指令格式:JMP目標(biāo)地址(標(biāo)號(hào))功能:無(wú)條件
21、轉(zhuǎn)移到目的地址處執(zhí)行,即改變IP的值為目的地址 指令形式:段內(nèi)短轉(zhuǎn)移: -128+127字節(jié)之內(nèi);段內(nèi)轉(zhuǎn)移:同一段內(nèi), -128+127字節(jié)之外;段間轉(zhuǎn)移:不同段間轉(zhuǎn)移。轉(zhuǎn)移指令52轉(zhuǎn)移指令3、條件轉(zhuǎn)移指令格式:JX目的地址(標(biāo)號(hào))1) 根據(jù)單個(gè)標(biāo)志位轉(zhuǎn)移 指令條件JC和JNC進(jìn)位標(biāo)志JE/JZ和JNE/JNZ零標(biāo)志JS和JNS符號(hào)標(biāo)志JO和JNO溢出標(biāo)志JP/JPE和JNP/JNPE奇偶標(biāo)志53轉(zhuǎn)移指令指令條件JA/JNBE大于JAE/JNB大于等于JB/JNAE小于JBE/JNA小于等于指令條件JG/JNLE大于JGE/JNL大于等于JL/JNGE小于JLE/JNG小于等于2)根據(jù)無(wú)符號(hào)數(shù)
22、的大小轉(zhuǎn)移 3)根據(jù)有符號(hào)數(shù)的大小轉(zhuǎn)移 54DATASEGMENTXDW180YDW850ZDW320MAXDW?DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX, DATAMOVDS, AX55MOVAX, XCMPAX, YJAEXAEYMOVAX, YXAEY:; AX = MAX(X,Y)CMPAX, ZJAEXMAXMOVAX, ZXMAX:; AX = MAX(X,Y,Z)MOVMAX, AXMOVAH,4CHINT21HCODEENDSENDSTART56DATASEGMENTXDB-5YDB23ZDB7DATAENDSCO
23、DESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX, DATAMOVDS, AXMOVAL, XCMPAL, YJLXLYXCHGAL, YMOVX, AL57XLY:CMPAL, ZJLCMYZXCHGAL, ZXCHGAL, XCMYZ:MOVAL, YCMPAL, ZJLEXITXCHGAL, ZXCHGAL, YEXIT:MOVAX, 4C00HINT21HCODEENDSENDSTART587.6 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 一、循環(huán)程序的基本組成初始化部分:為循環(huán)做準(zhǔn)備工作,設(shè)置指針,設(shè)置計(jì)數(shù)器初值,設(shè)置變量初值;循環(huán)工作部分:完成循環(huán)的基本操作,是核心部分
24、;循環(huán)修改部分:修改參數(shù)或參數(shù)地址,為下一次循環(huán)做準(zhǔn)備;循環(huán)控制部分:查看循環(huán)控制條件是否滿足。59DATASEGMENTADWa1, a2, , a100YDD?DATAENDSCODESEGMENTASSUMECS:DATA, DS:DATASTART:MOVAX, DATAMOVDS, AXMOVAX, 0MOVDX, 0ADDAX, AADCDX, 0ADDAX, A+2ADCDX, 060ADDAX, A+4ADCDX, 0ADDAX, A+198ADCDX, 0MOVWORD PTR Y, AXMOVWORD PTR Y+2, DXMOVAX, 4C00HINT21HCODEEND
25、SENDSTART61CODESEGMENTASSUMECS:DATA, DS:DATASTART:MOVAX, DATAMOVDS, AXMOVAX, 0MOVDX, 0MOVBX, OFFSET AMOVCX, 100LOP:ADDAX, BXADCDX, 0ADDBX, 2DECCXJNZLOP62MOVWORD PTR Y, AXMOVWORD PTR Y+2, DXMOVAX, 4C00HINT21HCODEENDSENDSTART63CODESEGMENTASSUMECS:DATA, DS:DATASTART:MOVAX, DATAMOVDS, AXMOVAX, 0MOVDX, 0
26、MOVBX, OFFSET AMOVCX, 100LOP:ADDAX, BXADCDX, 0ADDBX, 2DECCXJNZLOP64CODESEGMENTASSUMECS:DATA, DS:DATASTART:MOVAX, DATAMOVDS, AXMOVAX, 0MOVDX, 0MOVBX, OFFSET AMOVCX, 100LOP:ADDAX, BXADCDX, 0ADDBX, 2LOOPLOP65格式:LOOP目標(biāo)地址(標(biāo)號(hào))功能:說(shuō)明:LOOP指令只能進(jìn)行短轉(zhuǎn)移,LOOP指令的地址和目的地址之間相差必須在-128+127之間。二、循環(huán)指令66DATASEGMENTBLOCKDB10
27、0 DUP(?)PLUS_DATADB100 DUP(?)MINUS_DATADB100 DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX, DATAMOVDS, AXLEASI, BLOCKLEADI, PLUS_DATALEABX, MINUS_DATAMOVCX, 10067GOON:MOVAL, SITESTAL, 80HJNZMINUSMOVDI, ALINCDIJMPAGAINMINUS:MOVBX, ALINCBXAGAIN:INCSILOOPGOONMOVAX, 4C00HINT21HCODEENDSENDST
28、ART681、先執(zhí)行,后判斷三、循環(huán)程序的結(jié)構(gòu)69DATASEGMENTNUMDB-1, -13, 6, 9, -23, 35, -5, 123COUNTEQU$-NUMRESULTDB?DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX, DATAMOVDS, AXMOVBX, OFFSET NUMMOVCX, COUNTMOVDL, 070LOP:MOVAL, BXCMPAL, 0JGEGONEXTINCDLGONEXT:INCBXLOOPLOPMOVRESULT, DLMOVAX, 4C00HINT21HCODEENDSENDSTAR
29、T712、先判斷,后執(zhí)行 72MOVCX, 0LOP:ANDAX, AXJZSTOPSALAX, 1JNCNODINCCXNOD:JMPLOPSTOP:HLT73計(jì)數(shù)器控制:已知循環(huán)次數(shù),用計(jì)數(shù)器正計(jì)數(shù)或倒計(jì)數(shù)。條件控制:循環(huán)次數(shù)未知,但可以根據(jù)一定條件檢測(cè)到。 四、循環(huán)程序的控制方法74DATASEGMENTALPDDB76, 87, 63, 100, 92, 41, SUMDB11 DUP(0)DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX, DATAMOVDS, AXMOVCX, 30LEASI, ALPDMOVBL, 1075L
30、OP:MOVAL, SIMOVAH, 0DIVBLCBWMOVDI, AXINCSUMDIINCSILOOPLOPMOVAX, 4C00HINT21HCODEENDSENDSTART76DATASEGMENTTEXTDBChange Lowercase LettersDBTo Uppercase Letters $DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX, DATAMOVDS, AXLEABX, TEXTB20:MOVAL, BXCMPAL, $JEEXIT77CMPAL, aJBB30CMPAL, zJAB30SUBAL, 20
31、HMOVBX, ALB30:INCBXJMPB20EXIT:MOVAH, 4CHINT21HCODEENDSENDSTART787.7 子程序設(shè)計(jì)一、子程序的概念1、概念2、特點(diǎn)允許嵌套;可以遞歸。3、需要解決的問(wèn)題記錄斷點(diǎn)保護(hù)現(xiàn)場(chǎng)參數(shù)傳遞791、調(diào)用指令格式:CALL過(guò)程名或目的地址調(diào)用指令的分類段內(nèi)直接調(diào)用段間直接調(diào)用段內(nèi)間接調(diào)用段間間接調(diào)用 調(diào)用過(guò)程 斷點(diǎn)IP入棧,近調(diào)用時(shí)壓入偏移地址,遠(yuǎn)調(diào)用時(shí)壓入偏移地址和段地址;將目標(biāo)地址的偏移地址送入IP,遠(yuǎn)調(diào)用時(shí)還要將目標(biāo)地址的段地址送入CS;二、相關(guān)指令802、返回指令 格式:RET數(shù)返回指令的分類 近返回:遠(yuǎn)返回:帶彈出值返回 返回過(guò)程 從棧
32、頂彈出2個(gè)字節(jié)放入IP,如果是遠(yuǎn)返回還要彈出2個(gè)字節(jié)放入CS;如果是帶彈出值的返回,還要彈出數(shù)個(gè)字節(jié),亦即修改SP的值,SPSP+數(shù)。相關(guān)指令81STACK SEGMENTSTACKDW256 DUP(?)STACK ENDSDATASEGMENTDATA0DW0A376HASCDDB10 DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATA, SS:STACKSTART:MOVAX, DATAMOVDS, AXMOVAX, DATA0MOVSI, OFFSET ASCDCALLBTOD82MOVAX, 4C00HINT21HBTODPROCNEARPUSHDXPUSHCXPUSHBXPUSHSIMOVCX, 0MOVBX, 10BTOD1:MOVDX, 0DIVBXPUSHDXINCCXORAX, AXJNZBTOD183BTOD2:POPDXADDDL, 30HMOVSI, DLINCSILOOPBTOD2POPSIPOP
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GA/T 2171-2024機(jī)動(dòng)車(chē)駕駛?cè)丝荚噲?chǎng)地布局規(guī)劃指南
- HY/T 0377-2023海嘯警報(bào)產(chǎn)品制作規(guī)范
- 設(shè)計(jì)工程協(xié)議合同協(xié)議
- 購(gòu)買(mǎi)鐵柵門(mén)合同協(xié)議
- 貴港離婚協(xié)議書(shū)范本
- 購(gòu)?fù)恋囟ń鸷贤瑓f(xié)議
- 購(gòu)房充值協(xié)議書(shū)模板
- 貸款房公證協(xié)議書(shū)模板
- 計(jì)件制工人勞動(dòng)合同協(xié)議
- 超市商品買(mǎi)賣(mài)合同協(xié)議
- 2024年重慶江北國(guó)際機(jī)場(chǎng)有限公司招聘筆試參考題庫(kù)含答案解析
- 兒童超聲心動(dòng)圖操作指南與標(biāo)準(zhǔn)課件
- 2022年高考全國(guó)I卷數(shù)學(xué)高考真題(原卷版)
- 2017版《水利水電工程單元工程施工質(zhì)量驗(yàn)收評(píng)定表和填表說(shuō)明》(下冊(cè))
- 開(kāi)封廢金屬回收有限責(zé)任公司新建報(bào)廢汽車(chē)拆解線項(xiàng)目環(huán)境影響報(bào)告
- GB/T 4459.9-2009機(jī)械制圖動(dòng)密封圈第2部分:特征簡(jiǎn)化表示法
- 冠脈介入新技術(shù)
- 繩據(jù)法鋼筋混凝土護(hù)欄切割破除方案計(jì)劃
- 2023年武漢民政職業(yè)學(xué)院?jiǎn)握锌荚嚸嬖嚹M試題及答案解析
- 中國(guó)軍事發(fā)展簡(jiǎn)述課件
- 碧桂園物業(yè)案場(chǎng)私宴接待操作規(guī)程
評(píng)論
0/150
提交評(píng)論