九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

計算機組成技術(shù)課件7、匯編語言程序設(shè)計

上傳人:fgh****35 文檔編號:247454842 上傳時間:2024-10-18 格式:PPT 頁數(shù):93 大?。?77KB
收藏 版權(quán)申訴 舉報 下載
計算機組成技術(shù)課件7、匯編語言程序設(shè)計_第1頁
第1頁 / 共93頁
計算機組成技術(shù)課件7、匯編語言程序設(shè)計_第2頁
第2頁 / 共93頁
計算機組成技術(shù)課件7、匯編語言程序設(shè)計_第3頁
第3頁 / 共93頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《計算機組成技術(shù)課件7、匯編語言程序設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《計算機組成技術(shù)課件7、匯編語言程序設(shè)計(93頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,第七章 匯編語言程序設(shè)計,7.1,匯編語言程序及開發(fā)過程,一、基本概念,機器語言:指令,是,CPU,唯一能識別的語言,用二進制表示;,匯編語言:是機器語言的一種助記符形式,與機器語言一一對應;,匯編程序:把匯編語言翻譯成機器語言的程序。,二、匯編語言的開發(fā)過程,名稱,程序名,命令行,生成,匯編程序,MASM, TASM,masm a.asm,tasm /Zi a.asm,a.obj,連接程序,LINK, TLINK,l

2、ink a.obj,tlink /v a.obj,a.exe,調(diào)試程序,DEBUG, TD, CV,debug a.exe,td a.exe,DATASEGMENT,STRINGDB,Hello World!,$,DATAENDS,CODESEGMENT,ASSUMECS:CODE, DS:DATA, SS:STACK,START:,MOVAX, DATA,MOVDS, AX,MOVDX, OFFSET STRING,MOVAH, 9,INT21H,MOVAX, 4C00H,INT21H,CODEENDS,STACKSEGMENTSTACK,DB256 DUP(?),STACKENDS,END

3、START,7.2,指令格式及尋址方式,一、指令格式,操作碼:告訴計算機執(zhí)行什么性質(zhì)的操作;,操作數(shù):告訴計算機對什么樣的對象進行操作。,每條指令只有一個操作碼,但可以有多個操作數(shù),,8086,指令系統(tǒng)中,操作數(shù)的數(shù)目有,02,個,指令格式舉例:,MOD,含義,MOD,含義,00,存儲器方式,無位移量,01,存儲器方式,有,8,位位移量,10,存儲器方式,有,16,位位移量,11,寄存器方式,無位移量,REG,W=1,W=0,REG,W=1,W=0,000,AX,AL,100,SP,AH,001,CX,CL,101,BP,CH,010,DX,DL,110,SI,DH,011,BX,BL,111

4、,DI,BH,MOD,R/M,存儲器方式,寄存器方式,有效地址的計算公式,W=0,W=1,00,01,10,11,000,BX+SI,BX+SI+ D,8,BX+SI+ D,16,AL,AX,001,BX+DI,BX+DI+ D,8,BX+DI+ D,16,CL,CX,010,BP+SI,BP+SI+ D,8,BP+SI+ D,16,DL,DX,011,BP+DI,BP+DI+ D,8,BP+DI+ D,16,BL,BX,100,SI,SI+ D,8,SI+ D,16,AH,SP,101,DI,DI+ D,8,DI+ D,16,CH,BP,110,D,16,BP+ D,8,BP+ D,16,D

5、H,SI,111,BX,BX+ D,8,BX+ D,16,BH,DI,MOV,把源操作數(shù)送給目的操作數(shù),XCHG,交換兩個操作數(shù)的數(shù)據(jù),PUSH, POP,把操作數(shù)壓入或取出堆棧,PUSHF,POPF,堆棧指令群,PUSHA,POPA,LEA, LDS, LES,取地址至寄存器,XLAT(XLATB),查表指令,二、,8086,指令集,數(shù)據(jù)傳送指令,ADD, ADC,加法指令,SUB, SBB,減法指令,INC, DEC,加一或減一,NEG,取二進制補碼,MUL, IMUL,乘法指令,DIV, IDIV,除法指令,CBW, CWD,有符號數(shù)擴展指令,AAA,AAS,AAM,AAD,非壓,BCD

6、,碼運算,調(diào)整指令,DAA, DAS,壓縮,BCD,碼調(diào)整,指令,算術(shù)運算指令,AND, OR, XOR, NOT, TEST,邏輯運算,SHR, SHL, SAR, SAL,移位指令,ROR, ROL, RCR, RCL,循環(huán)移位指令,位運算指令,CLC, STC, CMC,設(shè)定進位標志,CLD, STD,設(shè)定方向標志,CLI, STI,設(shè)定中斷標志,CMP,比較,JMP,跳往指定地址執(zhí)行,JXX,條件轉(zhuǎn)移指令,LOOP,循環(huán)指令,LOOPE(Z),條件循環(huán)指令,CALL, RET,子程序調(diào)用,返回指令,INT, IRET,中斷調(diào)用及返回指令,程序流程控制指令,MOVSB, MOVSW, M

7、OVSD,字符串傳送指令,CMPSB, CMPSW, CMPSD,字符串比較指令,SCASB, SCASW,字符串搜索指令,LODSB, LODSW,字符串載入指令,STOSB, STOSW,字符串存貯指令,REP, REPE, REPNE,重復前綴指令,字符串操作指令,1,、操作數(shù)尋址方式,1,),立即尋址,操作數(shù)存放在指令中,緊跟在操作碼之后,作為指令的一部分存放在代碼段中。,2,),寄存器尋址,源操作數(shù)和目的操作數(shù)均為寄存器,不需要訪問存儲器,執(zhí)行速度最快。,三、尋址方式,以下的尋址方式都不是直接給出要訪問的數(shù)據(jù),而是給出要訪問數(shù)據(jù)的內(nèi)存地址,有效地址的計算可以用下式表示:,有效地址,=

8、,基址,+,變址,+,偏移量,基址寄存器,:,BX,,,BP,變址寄存器,:,SI,,,DI,偏移量,:,8,位或,16,位數(shù)字,尋址方式,3),直接尋址:,操作數(shù)的有效地址只包含,位移量,一項,偏移量即為有效地址。當目的操作數(shù)為存儲器,源操作數(shù)為立即數(shù)時,必須指明操作的類型。,4),寄存器間接尋址,:,可用寄存器,BX, BP, SI, DI,。操作數(shù)的有效地址只包括,基址寄存器或變址寄存器,。操作數(shù)在存儲器中,而操作數(shù)的地址在某個寄存器中。,5),寄存器相對尋址:,有效地址包括,基址寄存器,或,變址寄存器,以及,偏移量,兩部分。,尋址方式,6,),基址變址尋址,:,有效地址包括,基址寄存器

9、,和,變址寄存器,兩部分。,7),相對基址變址尋址,有效地址包括,基址寄存器,、,變址寄存器,和,偏移量,三部分。,尋址方式,2,、程序轉(zhuǎn)移尋址方式,1),段內(nèi)直接轉(zhuǎn)移尋址,:,以當前,IP,指向的地址為基準地址,加上跟在操作碼后面的相對位移量,得到轉(zhuǎn)移地址的偏移地址。,2),段內(nèi)間接轉(zhuǎn)移尋址,以寄存器間接尋址、變址尋址、基址尋址、基址變址尋址方式得到操作數(shù),作為轉(zhuǎn)移地址的偏移地址。,尋址方式,3),段間直接轉(zhuǎn)移尋址,操作數(shù)為兩個,16,位地址,第一個為偏移地址,第二個為段地址。,4),段間間接轉(zhuǎn)移尋址,用間接尋址的方式得到兩個,16,位地址,作為跳轉(zhuǎn)地址。,尋址方式,7.3 8086,宏匯編

10、語言的基本語法,一,、指令性語句,經(jīng)過匯編之后有目標程序與之對應,是有實際操作的語句。,指令性語句的格式為:,標號:, ,前綴,指令助記符,操作數(shù), ,,操作數(shù), ;,注釋,用來對匯編時的一些情況進行說明,如起始終止信息、分段情況、變量說明、內(nèi)存結(jié)構(gòu)等等。指示性語句不產(chǎn)生任何目標代碼。,1,、,段定義偽指令,段起始和結(jié)束偽指令,段名,SEGMENT,段名,ENDS,2),段寄存器與段關(guān)系說明偽指令,ASSUME,段寄存器:段名,段寄存器:段名,,二、指示性語句,3),程序開始和結(jié)束偽指令,END,偽指令一方面通知匯編程序結(jié)束匯編,同時指明標號語句為程序開始執(zhí)行的起始地址。,指示性語句,4,),

11、DOS,程序的結(jié)束方式,方式一,MOVAH, 4CH,INT21H,方式二,主程序名,PROCFAR,PUSHDS,MOVAX, 0,PUSHAX,RET,主程序名,ENDP,END,主程序名,2,、,數(shù)據(jù)定義偽指令,1,),常量定義,格式,:,表達式名,EQU,表達式,2,),數(shù)據(jù)定義,格式:變量名,(,標號,),數(shù)據(jù)類型定義偽指令 表達式,DB1,個字節(jié),,8,位,DW2,個字節(jié),,16,位,DD4,個字節(jié),,32,位,DQ8,個字節(jié),,64,位,DT10,個字節(jié),,80,位,指示性語句,3,),重復偽指令,格式:重復次數(shù),DUP,(重復內(nèi)容),4,),變量或標號的地址定義,DW,和,DD

12、,偽指令可以用來定義變量或標號的偏移地址和段地址。,5,),地址計數(shù)器,$,:表示正在匯編的當前地址,指示性語句,3,、,匯編語句定位偽指令,ORG,語句用來定義起始位置,可以用來定位數(shù)據(jù)和程序,格式:,ORG,表達式,4,、,取段址和取偏移址偽指令,格式:,SEG,地址標號或變量名,OFFSET,地址標號或變量名,指示性語句,7.4,順序結(jié)構(gòu)程序設(shè)計,一、數(shù)據(jù)傳送指令,1,、,一般傳送指令,格式:,MOV,目的,源,功能:,該指令將源內(nèi)容送至目的地址中,2,、,交換指令,格式:,XCHG,操作數(shù),1,,操作數(shù),2,功能:源操作數(shù)內(nèi)容和目的操作數(shù)對調(diào)。,3,、,堆棧操作指令,格式:,PUSH,

13、源操作數(shù),POP,目的操作數(shù),功能:數(shù)據(jù)壓入堆棧和數(shù)據(jù)彈出堆棧。,數(shù)據(jù)傳送指令,4,、地址傳送指令,1,),取,16,位偏移地址指令,格式:,LEA16,位寄存器,變量名,功能:將變量的偏移地址存入,16,位寄存器中,同,OFFSET,指令相比,,LEA,指令功能更強,變量名可以有偏移量。,2,),取,32,位地址指令,格式:,LDS16,位寄存器,變量名,LES16,位寄存器,變量名,功能:將變量中保存的,32,位數(shù)作為,32,位地址取入指定的寄存器。,數(shù)據(jù)傳送指令,DATASEGMENT,ADDRDD56781234h,BUFDW5 DUP(20),AD_BUFDDBUF,STRINGDB

14、abcd,AD_STRINGDDSTRING,OFF_STRINGDWSTRING,DATAENDS,CODESEGMENT,ASSUMECS:CODE, DS:DATA,STARTPROCFAR,PUSHDS,MOVAX, 0,PUSHAX,MOVAX, DATA,MOVDS, AX,LESDI, ADDR;ES:DI = ?,LEABX, ADDR;BX = ?,MOVAX, SEG ADDR;AX=?,MOVDS, AX,MOVCX, BUF;CX=?,LDSSI, AD_BUF;DS:SI=?,MOVAL, STRING;AL=?,MOVAX, OFF_STRING;AX=?,LESB

15、X, AD_STRING;ES:BX=?,RET,STARTENDP,CODEENDS,END START,1,、,加減運算指令,格式:,ADD/ADC,目的操作數(shù),源操作數(shù),SUB/SBB,目的操作數(shù),源操作數(shù),功能:,ADD,:目的操作數(shù),=,目的操作數(shù),+,源操作數(shù),SUB,:目的操作數(shù),=,目的操作數(shù),源操作數(shù),ADC,:目的操作數(shù),=,目的操作數(shù),+,源操作數(shù),+ CF,SBB,:目的操作數(shù),=,目的操作數(shù),源操作數(shù),CF,影響標志位,:,進位標志:,CF,,奇偶標志:,PF,,零標志:,ZF,,符號標志:,SF,溢出標志:,OF,,輔助進位標志:,AF,二、算術(shù)運算指令,DATAS

16、EGMENT,VAR8_1DB78H,VAR8_2DB52H,VAR8_3DB3AH,VAR16_1DW3411H,VAR16_2DW3ABCH,VAR16_3DW4020H,VAR32_1DD0AABBCCDDH,VAR32_2DD12345678H,VAR32_3DD11223344H,RESULT1DB?,RESULT2DW?,RESULT3DD?,DATAENDS,CODESEGMENT,ASSUMECS:CODE, DS:DATA,START:,MOVAX, DATA,MOVDS, AX,MOVAL, VAR8_1;8,位運算,ADDAL, VAR8_2,SUBAL, VAR8_3,

17、MOVRESULT1, AL,MOVAX, VAR16_1;16,位運算,ADDAX, VAR16_2,SUBAX, VAR16_3,MOVRESULT2, AX,MOVAX, WORD PTR VAR32_1;32,位運算,MOVDX, WORD PTR VAR32_12,ADDAX, WORD PTR VAR32_2,ADCDX, WORD PTR VAR32_22,SUBAX, WORD PTR VAR32_3,SBBDX, WORD PTR VAR32_32,MOVWORD PTR RESULT3, AX,MOVWORD PTR RESULT32, DX,RET,CODEENDS,EN

18、DSTART,2,、,加一、減一指令,格式:,INC,操作數(shù),DEC,操作數(shù),功能:,操作數(shù)加一或減一,影響標志位:,不影響進位標志,CF,,但影響零標志,ZF,。,算術(shù)運算指令,3,、,求補指令,格式:,NEG,操作數(shù),功能:,操作數(shù)取反加一,相當于在操作數(shù)前加負號。,影響標志位:,當操作數(shù)為,80H,或,8000H,時,影響溢出標志。,4,、,符號擴展指令,格式:,CBW,CWD,功能:,CBW,:將,AL,的符號擴展到,AH,;,CWD,:將,AX,的符號擴展到,DX,算術(shù)運算指令,算術(shù)運算指令,5,、,乘除指令,格式:,MUL/DIV,源操作數(shù),IMUL/IDIV,源操作數(shù),功能:,M

19、UL/DIV,:無符號數(shù)乘,/,除法;,IMUL/IDIV,:有符號數(shù)乘,/,除法;,指令只給出源操作數(shù),目的操作數(shù)隱含。,乘、除法指令使用寄存器,運算,被乘,/,除數(shù),源操作數(shù),結(jié)果,8,位乘,8,位,AL,8,位,AX,16,位乘,16,位,AX,16,位,DX:AX,16,位除,8,位,AX,8,位,商,:AL,,余數(shù),:AH,32,位除,16,位,DX:AX,16,位,商,:AX,,余數(shù),:DX,DATASEGMENT,XDW25,YDW20,ZDW140,VDW50,FDW2 DUP(?),DATAENDS,CODESEGMENT,ASSUMECS:CODE, DS:DATA,STA

20、RT:,MOVAX, DATA,MOVDS, AX,MOVAX, X,IMULY;DX:AX = X*Y,MOVCX, AX,MOVBX, DX;BX:CX = X*Y,MOVAX, Z,CWD;DX:AX = Z,ADDCX, AX,ADCBX, DX;BX:CX = X*Y + Z,SUBCX, 540,SBBBX, 0;BX:CX = X*Y + Z -540,MOVAX, V,CWD;DX:AX = V,SUBAX, CX,SBBDX, BX;DX:AX = V (X*Y+Z-540),IDIVX;AX = (V-(X*Y+Z-540) / X (,商,),;DX = (V-(X*Y+

21、Z-540) / X (,余數(shù),),MOVF, AX,MOVF+2, DX,MOVAX, 4C00H,INT21H,CODEENDS,ENDSTART,1,、,邏輯運算指令,1,),邏輯非,格式:,NOT,目的操作數(shù),功能:,目的操作數(shù)按位取反。,三、位運算指令,2,),邏輯與、或、異或,格式:,AND,目的操作數(shù),源操作數(shù),OR,目的操作數(shù),源操作數(shù),XOR,目的操作數(shù),源操作數(shù),功能:,目的操作數(shù)與源操作數(shù)按位進行與、或、異或運算,結(jié)果保存在目的操作數(shù)中。,位運算指令,3,),位測試指令,格式:,TEST,目的操作數(shù),源操作數(shù),功能:,作用同,AND,指令相同,但結(jié)果不保存在目的操作數(shù)中,

22、只是影響標志位。,位運算指令,位運算指令,2,、,移位指令,算術(shù)移位指令,格式:,SAL,目的操作數(shù),計數(shù)值,SAR,目的操作數(shù),計數(shù)值,移位示意圖,SAL:,SAR:,位運算指令,2),邏輯移位指令,格式:,SHL,目的操作數(shù),計數(shù)值,SHR,目的操作數(shù),計數(shù)值,移位示意圖,SHL:,SHR:,DATASEGMENT,XDW68,YDW218,FDW?,DATAENDS,CODESEGMENT,ASSUMECS:CODE, DS:DATA,START:,MOVAX, DATA,MOVDS, AX,MOVAX, X,MOVBX, X,MOVCL, 3,SHLAX, CL;AX = X * 8,

23、ADDAX, BX;AX = X*9,SUBAX, Y;AX = X*9 Y,MOVCL, 2,SHRAX, CL;AX = ( X*9 Y ) / 2,MOVF, AX,MOVAX, 4C00H,INT21H,CODEENDS,ENDSTART,位運算指令,3),不帶進位位的循環(huán)移位指令,格式:,ROL,目的操作數(shù),計數(shù)值,ROR,目的操作數(shù),計數(shù)值,移位示意圖,ROL:,ROR:,位運算指令,4),帶進位位的循環(huán)移位指令,格式:,RCL,目的操作數(shù),計數(shù)值,RCR,目的操作數(shù),計數(shù)值,移位示意圖,RCL:,RCR:,7.5,分支結(jié)構(gòu)程序設(shè)計,一、指令,1,、,比較指令,格式:,CMP,目的

24、操作數(shù),源操作數(shù),功能:,同,SUB,指令相似,但結(jié)果不保存到目的操作數(shù)中,只是影響標志位。,2,、,無條件轉(zhuǎn)移指令,格式:,JMP,目標地址(標號),功能:,無條件轉(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)移指令,轉(zhuǎn)移指令,3,、,條件轉(zhuǎn)移指令,格式:,JX,目的地址(標號),1),根據(jù)單個標志位轉(zhuǎn)移,指令,條件,JC,和,JNC,進位標志,JE/JZ,和,JNE/JNZ,零標志,JS,和,JNS,符號標志,JO,和,JNO,溢出標志,JP/JP

25、E,和,JNP/JNPE,奇偶標志,轉(zhuǎn)移指令,指令,條件,JA/JNBE,大于,JAE/JNB,大于等于,JB/JNAE,小于,JBE/JNA,小于等于,指令,條件,JG/JNLE,大于,JGE/JNL,大于等于,JL/JNGE,小于,JLE/JNG,小于等于,2),根據(jù)無符號數(shù)的大小轉(zhuǎn)移,3),根據(jù)有符號數(shù)的大小轉(zhuǎn)移,DATASEGMENT,XDW180,YDW850,ZDW320,MAXDW?,DATAENDS,CODESEGMENT,ASSUMECS:CODE, DS:DATA,START:,MOVAX, DATA,MOVDS, AX,MOVAX, X,CMPAX, Y,JAEXAEY,

26、MOVAX, Y,XAEY:; AX = MAX(X,Y),CMPAX, Z,JAEXMAX,MOVAX, Z,XMAX:; AX = MAX(X,Y,Z),MOVMAX, AX,MOVAH,4CH,INT21H,CODEENDS,ENDSTART,DATASEGMENT,XDB-5,YDB23,ZDB7,DATAENDS,CODESEGMENT,ASSUMECS:CODE, DS:DATA,START:,MOVAX, DATA,MOVDS, AX,MOVAL, X,CMPAL, Y,JLXLY,XCHGAL, Y,MOVX, AL,XLY:,CMPAL, Z,JLCMYZ,XCHGAL, Z

27、,XCHGAL, X,CMYZ:,MOVAL, Y,CMPAL, Z,JLEXIT,XCHGAL, Z,XCHGAL, Y,EXIT:,MOVAX, 4C00H,INT21H,CODEENDS,ENDSTART,7.6,循環(huán)結(jié)構(gòu)程序設(shè)計,一、循環(huán)程序的基本組成,初始化部分,:為循環(huán)做準備工作,設(shè)置指針,設(shè)置計數(shù)器初值,設(shè)置變量初值;,循環(huán)工作部分,:完成循環(huán)的基本操作,是核心部分;,循環(huán)修改部分,:修改參數(shù)或參數(shù)地址,為下一次循環(huán)做準備;,循環(huán)控制部分,:查看循環(huán)控制條件是否滿足。,DATASEGMENT,ADWa,1, a,2, , a,100,YDD?,DATAENDS,CODESEGME

28、NT,ASSUMECS:DATA, DS:DATA,START:,MOVAX, DATA,MOVDS, AX,MOVAX, 0,MOVDX, 0,ADDAX, A,ADCDX, 0,ADDAX, A+2,ADCDX, 0,ADDAX, A+4,ADCDX, 0,ADDAX, A+198,ADCDX, 0,MOVWORD PTR Y, AX,MOVWORD PTR Y+2, DX,MOVAX, 4C00H,INT21H,CODEENDS,ENDSTART,CODESEGMENT,ASSUMECS:DATA, DS:DATA,START:,MOVAX, DATA,MOVDS, AX,MOVAX,

29、0,MOVDX, 0,MOVBX, OFFSET A,MOVCX, 100,LOP:,ADDAX, BX,ADCDX, 0,ADDBX, 2,DECCX,JNZLOP,MOVWORD PTR Y, AX,MOVWORD PTR Y+2, DX,MOVAX, 4C00H,INT21H,CODEENDS,ENDSTART,CODESEGMENT,ASSUMECS:DATA, DS:DATA,START:,MOVAX, DATA,MOVDS, AX,MOVAX, 0,MOVDX, 0,MOVBX, OFFSET A,MOVCX, 100,LOP:,ADDAX, BX,ADCDX, 0,ADDBX,

30、2,DECCX,JNZLOP,CODESEGMENT,ASSUMECS:DATA, DS:DATA,START:,MOVAX, DATA,MOVDS, AX,MOVAX, 0,MOVDX, 0,MOVBX, OFFSET A,MOVCX, 100,LOP:,ADDAX, BX,ADCDX, 0,ADDBX, 2,LOOPLOP,格式:,LOOP,目標地址(標號),功能:,說明:,LOOP,指令只能進行短轉(zhuǎn)移,,LOOP,指令的地址和目的地址之間相差必須在,-128+127,之間。,二、循環(huán)指令,DATASEGMENT,BLOCKDB100 DUP(?),PLUS_DATADB100 DUP(?

31、),MINUS_DATADB100 DUP(?),DATAENDS,CODESEGMENT,ASSUMECS:CODE, DS:DATA,START:,MOVAX, DATA,MOVDS, AX,LEASI, BLOCK,LEADI, PLUS_DATA,LEABX, MINUS_DATA,MOVCX, 100,GOON:,MOVAL, SI,TESTAL, 80H,JNZMINUS,MOVDI, AL,INCDI,JMPAGAIN,MINUS:,MOVBX, AL,INCBX,AGAIN:,INCSI,LOOPGOON,MOVAX, 4C00H,INT21H,CODEENDS,ENDSTAR

32、T,1,、先執(zhí)行,后判斷,三、循環(huán)程序的結(jié)構(gòu),DATASEGMENT,NUMDB-1, -13, 6, 9, -23, 35, -5, 123,COUNTEQU$-NUM,RESULTDB?,DATAENDS,CODESEGMENT,ASSUMECS:CODE, DS:DATA,START:,MOVAX, DATA,MOVDS, AX,MOVBX, OFFSET NUM,MOVCX, COUNT,MOVDL, 0,LOP:,MOVAL, BX,CMPAL, 0,JGEGONEXT,INCDL,GONEXT:,INCBX,LOOPLOP,MOVRESULT, DL,MOVAX, 4C00H,IN

33、T21H,CODEENDS,ENDSTART,2,、先判斷,后執(zhí)行,MOVCX, 0,LOP:,ANDAX, AX,JZSTOP,SALAX, 1,JNCNOD,INCCX,NOD:,JMPLOP,STOP:,HLT,計數(shù)器控制,:已知循環(huán)次數(shù),用計數(shù)器正計數(shù)或倒計數(shù)。,條件控制,:循環(huán)次數(shù)未知,但可以根據(jù)一定條件檢測到。,四、循環(huán)程序的控制方法,DATASEGMENT,ALPDDB76, 87, 63, 100, 92, 41, ,SUMDB11 DUP(0),DATAENDS,CODESEGMENT,ASSUMECS:CODE, DS:DATA,START:,MOVAX, DATA,MOV

34、DS, AX,MOVCX, 30,LEASI, ALPD,MOVBL, 10,LOP:,MOVAL, SI,MOVAH, 0,DIVBL,CBW,MOVDI, AX,INCSUMDI,INCSI,LOOPLOP,MOVAX, 4C00H,INT21H,CODEENDS,ENDSTART,DATASEGMENT,TEXTDBChange Lowercase Letters,DBTo Uppercase Letters $,DATAENDS,CODESEGMENT,ASSUMECS:CODE, DS:DATA,START:,MOVAX, DATA,MOVDS, AX,LEABX, TEXT,B20

35、:,MOVAL, BX,CMPAL, $,JEEXIT,CMPAL, a,JBB30,CMPAL, z,JAB30,SUBAL, 20H,MOVBX, AL,B30:,INCBX,JMPB20,EXIT:,MOVAH, 4CH,INT21H,CODEENDS,ENDSTART,7.7,子程序設(shè)計,一、子程序的概念,1,、概念,2,、特點,允許嵌套;,可以遞歸。,3,、需要解決的問題,記錄斷點,保護現(xiàn)場,參數(shù)傳遞,1,、,調(diào)用指令,格式:,CALL,過程名或目的地址,調(diào)用指令的分類,段內(nèi)直接調(diào)用,段間直接調(diào)用,段內(nèi)間接調(diào)用,段間間接調(diào)用,調(diào)用過程,斷點,IP,入棧,近調(diào)用時壓入偏移地址,遠調(diào)用時

36、壓入偏移地址和段地址;,將目標地址的偏移地址送入,IP,,遠調(diào)用時還要將目標地址的段地址送入,CS,;,二、相關(guān)指令,2,、,返回指令,格式:,RET,數(shù),返回指令的分類,近返回:,遠返回:,帶彈出值返回,返回過程,從棧頂彈出,2,個字節(jié)放入,IP,,如果是遠返回還要彈出,2,個字節(jié)放入,CS,;,如果是帶彈出值的返回,還要彈出數(shù)個字節(jié),亦即修改,SP,的值,,SP,SP+,數(shù)。,相關(guān)指令,STACK SEGMENTSTACK,DW256 DUP(?),STACK ENDS,DATASEGMENT,DATA0DW0A376H,ASCDDB10 DUP(?),DATAENDS,CODESEGME

37、NT,ASSUMECS:CODE, DS:DATA, SS:STACK,START:,MOVAX, DATA,MOVDS, AX,MOVAX, DATA0,MOVSI, OFFSET ASCD,CALLBTOD,MOVAX, 4C00H,INT21H,BTODPROCNEAR,PUSHDX,PUSHCX,PUSHBX,PUSHSI,MOVCX, 0,MOVBX, 10,BTOD1:,MOVDX, 0,DIVBX,PUSHDX,INCCX,ORAX, AX,JNZBTOD1,BTOD2:,POPDX,ADDDL, 30H,MOVSI, DL,INCSI,LOOPBTOD2,POPSI,POPBX

38、,POPCX,POPDX,RET,BTODENDP,CODEENDS,ENDSTART,3,、,參數(shù)傳遞方式,寄存器傳遞:,參數(shù)表傳遞:,堆棧傳遞:,相關(guān)指令,STACKSEGMENTSTACK,DW256 DUP(?),STACKENDS,DATASEGMENT,ARY1DW41, 23, 31, 45, 77, 26, 35,LEN1EQU($-ARY1)/2,SUM1DW?,ARY2DW-21, 88, 43, 67, 55, -14,LEN2EQU($-ARY2)/2,SUM2DW?,DATAENDS,PROCESEGMENT,ASSUMECS:PROCE, DS:DATA, SS:S

39、TACK,SUMPROCFAR,PUSHAX,PUSHBX,PUSHCX,PUSHBP,MOVBP, SP,PUSHF,MOVCX, BP+14,MOVBX, BP+12,MOVAX, 0,ADN:,ADDAX, BX,ADDBX, 2,LOOPADN,MOVBX, AX,POPF,POPBP,POPCX,POPBX,POPAX,RET4,SUMENDP,PROCEENDS,CODESEGMENT,ASSUMECS:CODE, DS:DATA, SS:STACK,START:,MOVAX, DATA,MOVDS, AX,MOVAX, LEN1,PUSHAX,LEAAX, ARY1,PUSHAX

40、,CALLFAR PTR SUM,MOVAX, LEN2,PUSHAX,LEAAX, ARY2,PUSHAX,CALLFAR PTR SUM,MOVAX, 4C00H,INT21H,CODEENDS,ENDSTART,字符串輸出功能調(diào)用,入口:,DS:DX =,字符串首地址;,字符串以,$,結(jié)束;,AH = 09H,;,DOS,功能調(diào)用:,INT21H,字符串輸入功能調(diào)用,入口:,DS:DX =,緩沖區(qū)首地址;,(DS:DX) =,緩沖區(qū)最大字符數(shù);,AH = 0AH,;,DOS,功能調(diào)用:,INT21H,返回:,(DS:DX+1) =,實際輸入字符數(shù);,DATA SEGMENT,OUTPUT_MESSAGEDBWhat is your name? $;,INPUT_MESSAGE DB100, ?, 100 DUP(?);,DATA ENDS,CODE SEGMENT,ASSUME CS:CODE, DS:DATA,START:,MOVAX, DATA,MOVDS, AX,LEADX, OUTPUT_MESSAGE,MOVAH, 09H,INT21H,LEADX, INPUT_MESSAGE,MOVAH, 0AH,INT21H,MOV AX, 4C00H,INT 21H,CODEENDS,END START,

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!