版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一、程序設(shè)計(jì)步驟 1、分析問題,確定算法。 2、畫出程序流程 3、正確、合理使用存儲(chǔ)器和寄存器。 4、編寫程序。 5、調(diào)試程序。,第9章 分支程序設(shè)計(jì),順序程序結(jié)構(gòu),第9章 分支程序設(shè)計(jì),Z=10*(X+Y),;設(shè)置數(shù)據(jù)段 DATA SEGMENT X DW 20H ;變量X Y DW 12H ;變量Y Z DW ? ;變量Z DATA ENDS ;設(shè)置堆棧段 STACK1 SEGMENT PARA STACK DB 10H DUP(0) STACK1 ENDS ;設(shè)置代碼段 CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV AX, DATA M
2、OV DS, AX MOV AX, X ADD AX, Y,SAL AX, 1 MOV BX, AX MOV CL, 2 SAL AX, CL ADD AX, BX MOV Y, AX MOV AH, 4CH INT 21H CODE ENDS END START,二、分支程序設(shè)計(jì),短轉(zhuǎn)移:(RD1127或RD2-128) JMPSHORT TARGET,1、無條件轉(zhuǎn)移: JMP 目標(biāo),(1)直接尋址方式,段內(nèi)轉(zhuǎn)移,JMP TARGET,COSEG1 SEGMENT COSEG2 SEGMENT TARGET: JMP FAR PTR TARGET COSEG1 ENDS COSEG2 END
3、S,段內(nèi)轉(zhuǎn)移:JMPCX JMPWORD PTR BX 或 JMPBX 段間轉(zhuǎn)移:JMPDWORD PTR BX,1、無條件轉(zhuǎn)移: JMP 目標(biāo),(2)間接尋址方式,段間轉(zhuǎn)移,2、條件轉(zhuǎn)移,JXX 目標(biāo),條件轉(zhuǎn)移指令及其判斷條件,條件轉(zhuǎn)移指令及其判斷條件,分支程序設(shè)計(jì)舉例1、兩分支程序設(shè)計(jì)方法2、多分支程序設(shè)計(jì)方法,(1)條件轉(zhuǎn)移法 (2)地址表法 (3)跳轉(zhuǎn)表,二、分支程序設(shè)計(jì),程序如下: TESTDA1,01H JENEXT INC DA1 NEXT: ,試編制一程序段,把DA1字節(jié)單元中數(shù)據(jù)變?yōu)榕紨?shù)。,兩分支程序設(shè)計(jì)方法,試編制一程序,實(shí)現(xiàn)兩個(gè)存儲(chǔ)區(qū)之間的數(shù)據(jù)傳送。,兩分支程序設(shè)計(jì)方法,
4、源程序如下: DATA SEGMENT ORG 20H STRING1 DB 5 DUP( ASSEMBLE LANGUAGE IS USEFUL) ORG $+20H ADDR1 DW STRING1+10H ;源空間首地址 ADDR2 DW STRING1+2 ;目的空間首地址 COUNT DW 10H ;待傳送字節(jié)數(shù) DATA ENDS STACK1 SEGMENT PARA STACK DB 30H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV SI,
5、 ADDR1 ;將源空間的首地址存入SI寄存器中 MOV DI, ADDR2 ;將目的空間的首地址存入DI寄存器中 MOV CX, COUNT ;將傳送的字節(jié)數(shù)存入CX寄存器中 CMP SI, DI ;將源空間與目的空間的首地址 JA FLAG2 ;如果源空間首地址大,從首地址開始傳數(shù),跳轉(zhuǎn)相應(yīng)程序 ADD SI, CX ;如果目的空間首地址大,需從末地址開始,形成末地址 ADD DI, CX,FLAG1: MOV AL, SI-1 ;本段程序?qū)崿F(xiàn)從首地址開始傳數(shù) MOV DI-1, AL DEC SI DEC DI DEC CX JNE FLAG1 JMP FLAG3 FLAG2: MOV
6、AL, SI ;本段程序?qū)崿F(xiàn)從末地址開始傳數(shù) MOV DI, AL INC SI INC DI DEC CX JNE FLAG2 FLAG3: MOV AH, 4CH INT 21H CODE ENDS END START,1、條件轉(zhuǎn)移法,多分支程序設(shè)計(jì)方法,多分支程序設(shè)計(jì)方法,2、地址表法,入口地址=地址表首地址+(參數(shù)-1)2,實(shí)現(xiàn)程序如下: DATA SEGMENT NUM DB 4 ADDRTAB DW FLAG1, FLAG2, FLAG3, FLAG4, FLAG5 STRING1 DB HELLO WORLD!, 0AH, 0DH, $ STRING2 DB I LOVE THI
7、S GAME, 0AH, 0DH, $ STRING3 DB COMPUTER SCIENCE, 0AH, 0DH, $ STRING4 DB ASSEMBLE LANGUAGE, 0AH, 0DH, $ STRING5 DB COMPUTER ORGANIZATION, 0AH, 0DH, $ DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AH,0 MOV AL, NUM
8、,DEC AL SHL AL,1 MOV SI, AX MOV BX, ADDRESSTABSI ;取轉(zhuǎn)移的入口地址 JMP BX ;跳轉(zhuǎn)到對(duì)應(yīng)的分支處理程序 FLAG1: MOV DX, OFFSET STRING1 JMP SHOW FLAG2: MOV DX, OFFSET STRING2 JMP SHOW FLAG3: MOV DX, OFFSET STRING3 JMP SHOW FLAG4: MOV DX, OFFSET STRING4 JMP SHOW FLAG5: MOV DX, OFFSET STRING5 JMP SHOW SHOW: MOV AH, 09H INT 21H
9、 MOV AH, 4CH INT 21H CODE ENDS END START,多分支程序設(shè)計(jì)方法,3、跳轉(zhuǎn)表法,實(shí)現(xiàn)程序如下: DATA SEGMENT NUM DB 2 STRING1 DB HELLO WORLD!, 0AH, 0DH, $ STRING2 DB I LOVE THIS GAME, 0AH, 0DH, $ STRING3 DB COMPUTER SCIENCE, 0AH, 0DH, $ STRING4 DB ASSEMBLE LANGUAGE, 0AH, 0DH, $ STRING5 DB COMPUTER ORGANIZATION, 0AH, 0DH, $ DATA
10、ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AH,0 MOV AL, NUM,DEC AL MOV BL,AL SHL AL,1 ADD AL,BL ADD AX, OFFSET JUMP_TAB JMP AX JUMP_TAB: JMP FLAG1 JMP FLAG2 JMP FLAG3 JMP FLAG4 JMP FLAG5 FLAG1: MOV DX, OFFSET STRI
11、NG1 JMP SHOW FLAG2: MOV DX, OFFSET STRING2 JMP SHOW,FLAG3: MOV DX, OFFSET STRING3 JMP SHOW FLAG4: MOV DX, OFFSET STRING4 JMP SHOW FLAG5: MOV DX, OFFSET STRING5 JMP SHOW SHOW: MOV AH, 09H INT 21H MOV AH, 4CH INT 21H CODE ENDS END START,第10章 循環(huán)程序設(shè)計(jì),一、循環(huán)程序基本結(jié)構(gòu),循環(huán)程序結(jié)構(gòu),1、初始化部分 設(shè)置地址指針、計(jì)數(shù)器初值 2、工作部分 3、修改部分
12、4、控制部分 用計(jì)數(shù)控制循環(huán) 用條件控制循環(huán) 5、結(jié)束處理部分,第10章 循環(huán)程序設(shè)計(jì),二、循環(huán)控制方法,1、用計(jì)數(shù)控制循環(huán) 使用計(jì)數(shù)器,達(dá)到計(jì)數(shù)器預(yù)定值,循環(huán)結(jié)束。要求循環(huán)次數(shù)已知。 計(jì)數(shù)器可以遞增、遞減 可以選用寄存器、也可用存儲(chǔ)單元,第10章 循環(huán)程序設(shè)計(jì),用正計(jì)數(shù)法,計(jì)算數(shù)組ARRAY所有單元的和,DATA SEGMENT ARRAY DB 1,2,3,4,5,6,7,8,9,10 COUNT EQU $-ARRAY SUM DW ? DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT A
13、SSUME CS: CODE, DS:DATA START: MOV AX, DATA MOV DS, AX XOR AX,AX ;AX寄存器清0,累加用 MOV CX,0 ;計(jì)數(shù)器CX清0 MOV SI, 0 ;數(shù)組指針清0,NEXT: ADD AL,ARRAYSI ;數(shù)組累加 INC SI ;數(shù)組指針后移 INC CX ;計(jì)數(shù)器加1 CMP CX,COUNT ;計(jì)數(shù)器值與循環(huán)次數(shù)比較 JL NEXT ;如果小于,繼續(xù)循環(huán) MOV BYTE PTR SUM,AL ;將累計(jì)和存入變量 MOV AH, 4CH INT 21H CODE ENDS END START,2、用條件控制循環(huán) 找出一個(gè)終
14、止循環(huán)的條件,每循環(huán)一次,對(duì)條件進(jìn)行一次檢測(cè)。滿足終止循環(huán)的條件,退出循環(huán),否則繼續(xù)。 通常選用條件轉(zhuǎn)移指令來控制循環(huán)是否結(jié)束。,二、循環(huán)控制方法,第10章 循環(huán)程序設(shè)計(jì),編寫程序,求解兔子繁殖問題,給出到指定只兔子數(shù)時(shí),需要多少個(gè)月。,實(shí)現(xiàn)程序如下: DATA SEGMENT RABBITNUM DW 650 ;存放兔子只數(shù) MONTHNUM DB ? ;存放月數(shù) DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP (?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DA
15、TA MOV DS, AX XOR CX,CX ;計(jì)數(shù)器清0 MOV AX,0 ;斐波那契數(shù)初始值 MOV BX,1,NEXT: XCHG AX,BX ADD AX,BX ;產(chǎn)生一個(gè)新的斐波那契數(shù) INC CL ;計(jì)數(shù)器加1 CMP AX,RABBITNUM ;比較產(chǎn)生的新數(shù)與給定數(shù) JAE RESULT ;如果大于或等于,結(jié)束 JMP NEXT ;小于,繼續(xù)循環(huán) RESULT: MOV MONTHNUM,CL MOV AH,4CH INT 21H CODE ENDS END START,1、內(nèi)循環(huán)必須完整地包含在外循環(huán)內(nèi),二者不可以相互交叉。 2、當(dāng)從外循環(huán)再次進(jìn)入內(nèi)循環(huán)時(shí),內(nèi)循環(huán)的初始條件
16、要重新設(shè)置。 3、一個(gè)外循環(huán)中可以包含多個(gè)內(nèi)循環(huán),這些內(nèi)循環(huán)可以嵌套,也可以并列存在。 4、當(dāng)內(nèi)外循環(huán)都采用CX寄存器作為計(jì)數(shù)器時(shí),由外循環(huán)進(jìn)入內(nèi)循環(huán)時(shí),要保留外循環(huán)的次數(shù),可以通過壓入堆棧、存入其它寄存器或存儲(chǔ)器中實(shí)現(xiàn)。 5、當(dāng)外層循環(huán)要求內(nèi)層循環(huán)在不同條件下重復(fù)執(zhí)行時(shí),外循環(huán)中應(yīng)該包括對(duì)內(nèi)循環(huán)部分參數(shù)的修改部分。,三、多重循環(huán)程序設(shè)計(jì),第10章 循環(huán)程序設(shè)計(jì),DATA SEGMENT MULTABLE DB 9*9 DUP(0) DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP (?) STACK1 ENDS CODE SEGMENT ASSUM
17、E CS:CODE,DS:DATA START: MOV AX,DATA MOV DS, AX MOV BH,0 ;將行號(hào)初值存入BH XOR DI, DI ;將乘法表的指針清0 MOV CX,9 ;外循環(huán)次數(shù)為9 OUTERLOP: PUSH CX ;將外循環(huán)次數(shù)入棧保護(hù) INC BH ;行號(hào)加1 MOV BL,0 ;將列號(hào)初值存入BL MOV CX,9 ;內(nèi)循環(huán)次數(shù)為9,INNERLOP:INC BL ;列號(hào)加1 MOV AL,BH ;將行號(hào)存入AL MUL BL ;將行號(hào)*列號(hào)存入AL MOV MULTABLEDI,AL ;將AL存入乘法表中 INC DI ;修改乘法表指針 LOOP I
18、NNERLOP ;內(nèi)循環(huán)控制語(yǔ)句 POP CX ;恢復(fù)外循環(huán)次數(shù) LOOP OUTERLOP ;外循環(huán)控制語(yǔ)句 MOV AH,4CH INT 21H CODE ENDS END START,第11章 子程序設(shè)計(jì),子程序的適應(yīng)范圍: (1)多次重復(fù)使用的程序段。如程序中多次出現(xiàn)的數(shù)值轉(zhuǎn)換、碼值轉(zhuǎn)換等 (2)具有特殊功能的程序段。如求解某一問題時(shí),涉及到的復(fù)雜的數(shù)學(xué)計(jì)算,以及排序或查找等一些需要用到的算法問題。 (3)具有通用性的程序段。如一些對(duì)文件的操作,字符串的操作等 (4)中斷服務(wù)程序。 (5)系統(tǒng)調(diào)用程序。如DOS調(diào)用,BIOS調(diào)用等。,重點(diǎn),過程定義 過程調(diào)用 過程返回,程序結(jié)構(gòu),過程
19、主調(diào)過程(主程序) 被調(diào)過程(子程序),第11章 子程序設(shè)計(jì),過程定義,過程名PROC類型 語(yǔ)句 語(yǔ)句 過程名ENDP,NEAR FAR,第11章 子程序設(shè)計(jì),過程調(diào)用,CALL 過程名,返回地址入棧 轉(zhuǎn)移到(過程名所代表的)入口地址,段內(nèi),段間,CALL INPUT CALL BX CALL WORD PTR BX,CALL FAR PTR INPUT CALL OUTPUT CALL DWORD PTR BX,第11章 子程序設(shè)計(jì),過程返回,RET,過程返回地址從棧中彈出到 IP (CS)中 返回原來的調(diào)用點(diǎn),段內(nèi),段間,返回指令,段內(nèi),段間,帶立即數(shù)返回指令,RET,RET n,第11章
20、 子程序設(shè)計(jì),子程序設(shè)計(jì)方法,1、適度地劃分并確定子程序功能 具有獨(dú)立功能的程序作為一個(gè)模塊 多次出現(xiàn)的程序段獨(dú)立出來 2、選擇適當(dāng)?shù)膮⒘總鬟f途徑 3、信息的保存 4、編寫子程序的文字說明,(1)在調(diào)用程序中保存信息,: PUSH PUSH PUSH CALL POP POP POP :,AX BX CX SUB_PROC CX BX AX,;保存信息 ;調(diào)用子程序 ;恢復(fù)信息,信息的保存,(2)在子程序中保存信息,SUB_PTOC1 SUB_PROC1,PROC PUSH BX PUSH CX PUSH SI PUSH BP : : POP BP POP SI POP CX POP BX R
21、ET ENDP,子程序功能的指令序列,信息的保存,編寫子程序的文字說明,(1)子程序名。 (2)子程序的功能描述。 (3)子程序的入口參數(shù)和出口參數(shù)。 (4)子程序中使用了哪些寄存器、存儲(chǔ)單元。 (5)子程序中是否調(diào)用其他子程序。,第11章 子程序設(shè)計(jì),參數(shù)傳遞,用寄存器傳遞適合參數(shù)較少情況 用參數(shù)表傳遞適合參數(shù)較多情況 用堆棧傳遞適合參數(shù)多情況,第11章 子程序設(shè)計(jì),UPTOLW PROC PUSHF CMP AL, A JB UP1 CMP AL, Z JA UP1 ADD AL, a-A UP1: POPF RET UPTOLW ENDP,把大寫字母改為小寫字母,;子程序名:UPTOLW
22、 ;功能:大寫轉(zhuǎn)換小寫 ;入口參數(shù):AL=待轉(zhuǎn)字符 ;出口參數(shù):AL中放轉(zhuǎn)換完字符,MOV AL, R CALL UPTOLW MOV DL, AL,過程調(diào)用寄存器傳遞,用減奇數(shù)法求平方根子程序流程,實(shí)現(xiàn)程序?yàn)椋?DATA SEGMENT ARRAY DW 8101,3600,2510,100 COUNT EQU($-ARRAY)/2 ROOT DB COUNT DUP(0) DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV A
23、X,DATA MOV DS,AX MOV CX,COUNT MOV SI,0 MOV DI,0 NEXT: MOV AX, ARRAYSI ;從數(shù)組中依次取出被開方數(shù) CALL GETSQRT ;調(diào)用子程序求平方根,MOV ROOTDI,BL ;將平方根存入ROOT數(shù)組中 ADD SI,2 ;修改指針,指向下一個(gè)被開方數(shù) INC DI ;修改指針,用于存放下一個(gè)平方根 LOOP NEXT MOV AH, 4CH INT 21H GETSQRT PROC PUSH AX ;將子程序中用到的寄存器入棧保護(hù) PUSH DX MOV BL,0 ;平方根初始化 MOV DX,1 ;奇數(shù)初始化 SUB1:
24、 SUB AX, DX ;進(jìn)行減奇數(shù) JB EXIT ;如果不夠減,結(jié)束 INC BL ;夠減,BL加1 ADD DX,2 ;形成下一個(gè)奇數(shù) JMP SUB1 EXIT: POP DX ;恢復(fù)寄存器 POP AX,RET ENDP ENDS END START,過程調(diào)用存儲(chǔ)單元(同上題),DATA SEGMENT ARRAY DW 8101,3600,2510,100 COUNT EQU($-ARRAY)/2 ROOT DB COUNT DUP(0) RADICAND DW ? SQUA_ROOT DB ? DATA ENDS STACK1 SEGMENT PARA STACK DW 20H
25、DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,COUNT,過程調(diào)用存儲(chǔ)單元,MOV SI,0 MOV DI,0 NEXT: MOV AX,ARRAYSI ;從數(shù)組中依次取出被開方數(shù) MOV RADICAND,AX CALL GETSQRT ;調(diào)用子程序求平方根 MOV BL, SQUA_ROOT ;將平方根存入ROOT數(shù)組中 MOV ROOTDI,BL ADD SI,2 ;修改指針,指向下一個(gè)被開方數(shù) INC DI ;修改指針,用于存放下一個(gè)平方根 LOOP
26、NEXT MOV AH,4CH INT 21H GETSQRT PROC PUSH AX ;將子程序中用到的寄存器入棧保護(hù) PUSH DX,過程調(diào)用存儲(chǔ)單元,MOV AX,RADICAND MOV SQUA_ROOT,0 ;平方根初始化 MOV DX,1 ;奇數(shù)初始化 SUB1: SUB AX,DX ;進(jìn)行減奇數(shù) JB EXIT ;如果不夠減,結(jié)束 INC SQUA_ROOT ;夠減,BL加1 ADD DX,2 ;形成下一個(gè)奇數(shù) JMP SUB1 EXIT: POP DX ;恢復(fù)寄存器 POP AX RET ENDP ENDS END START,ARY DW -86, 420, 7, ,40
27、 COUNT DW 100 SUM DW ? TAB DW 3 DUP(?),MOV TAB, OFFSET ARY MOV TAB+2, OFFSET COUNT MOV TAB+4, OFFSET SUM LEA BX, TAB CALL PADD MOV DX, SUM .,PADD PROC MOV SI, BX MOV DI, BX+2 MOV CX, DI MOV DI, BX+4 XOR AX, AX L: ADD AX, SI ADD SI, 2 LOOP L MOV DI, AX RET PADD ENDP,過程調(diào)用參數(shù)表傳遞,利用地址表傳遞參數(shù),實(shí)現(xiàn)數(shù)組ARRAY單元的累加
28、。,DATA SEGMENT ARRAY DW 21,22,23,24,25,26,27 COUNT DW ($-ARRAY)/2 RESULT DW ? ADDRESS DW 3 DUP(0) ;定義地址表 DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX,利用地址表傳遞參數(shù),實(shí)現(xiàn)數(shù)組ARRAY單元的累加。,MOV ADDRESS, OFFSET ARRAY ;將ARRAY的地址存入地址表
29、MOV ADDRESS+2,OFFSET COUNT;將COUNT的地址存入地址表 MOV ADDRESS+4,OFFSET RESULT;將RESULT的地址存入地址表 MOV BX,OFFSET ADDRESS ;將地址表的地址裝入BX CALL SUM_PROC ;調(diào)用求和子程序 MOV AH,4CH INT 21H SUM_PROC PROC PUSH AX ;將子程序中用到的寄存器入棧保護(hù) PUSH BX PUSH SI PUSH DI MOV SI,BX ;將ARRAY的地址取出,存入SI MOV DI,BX+2 ;將COUNT的地址取出,存入DI MOV CX,DI ;將COUN
30、T的內(nèi)容取出,存入CX作為計(jì)數(shù)器 MOV DI,BX+4 ;將RESULT的地址取出,存入DI,利用地址表傳遞參數(shù),實(shí)現(xiàn)數(shù)組ARRAY單元的累加。,XOR AX,AX ;AX寄存器初始化 LOP: ADD AX,SI ;累加 ADD SI,2 ;修改指針,移到下一單元 LOOP LOP MOV DI,AX ;將結(jié)果保存到RESULT中 POP DI ;恢復(fù)寄存器 POP SI POP CX POP AX RET ENDP ENDS END START,過程調(diào)用用棧傳遞參數(shù),在主調(diào)程序中壓入?yún)?shù) 參數(shù)和返回地址在棧中的位置 在被調(diào)過程中讀取參數(shù) 在主調(diào)程序中讀取返回的參數(shù),用棧傳遞參數(shù)處理要點(diǎn),
31、壓入?yún)?shù) CALL 從棧中彈出壓入的參數(shù),用BP間址方式取出參數(shù) 處理 RET,主調(diào)程序,被調(diào)過程,參數(shù)壓入順序與取出順序相反 參數(shù)的個(gè)數(shù)和類型按事先約定存取 調(diào)用結(jié)束時(shí),從棧中清除壓入的參數(shù),利用堆棧傳遞參數(shù),實(shí)現(xiàn)數(shù)組ARRAY單元的累加。,DATA SEGMENT ARRAY DW 21,22,23,24,25,26,27 COUNT DW ($-ARRAY)/2 RESULT DW ? DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA STAR
32、T: MOV AX,DATA MOV DS,AX MOV AX, OFFSET ARRAY ;將ARRAY的地址入棧 PUSH AX MOV AX,COUNT ;將COUNT入棧 PUSH AX MOV AX,OFFSET RESULT ;將RESULT的地址入棧,PUSH AX CALL SUM_PROC ;調(diào)用求和子程序 MOV AH,4CH INT 21H SUM_PROC PROC PUSH AX ;將子程序中用到的寄存器入棧保護(hù) PUSH SI PUSH DI PUSH BP MOV BP,SP MOV SI,BP+14 ;將ARRAY的地址取出,存入SI MOV CX,BP+12
33、;將COUNT的內(nèi)容取出,存入CX MOV DI,BP+10 ;將RESULT的地址取出,存入DI XOR AX,AX ;AX寄存器初始化 LOP: ADD AX,SI ;累加 ADD SI,2 ;修改指針,移到下一單元 LOOP LOP,MOV DI,AX ;將結(jié)果保存到RESULT中 POP BP POP DI ;恢復(fù)寄存器 POP SI POP AX RET 6 ENDP ENDS END START,系統(tǒng)功能調(diào)用由OS提供的一組實(shí)現(xiàn)特殊功能的子程序供程序員在程序中調(diào)用,以減輕編程工作量。 系統(tǒng)功能調(diào)用有兩種,一種稱為DOS功能調(diào)用,另一種稱為BIOS功能調(diào)用。,第12章 系統(tǒng)功能調(diào)用,
34、系統(tǒng)功能調(diào)用,采用軟中斷指令 INT n (其中:n為中斷類型碼) (1)PUSHF,TF、IF清0,CS、IP入棧 (2)按中斷類型碼n,從中斷向量表對(duì)應(yīng)位置取出將要調(diào)用的功能子程序的入口地址CS,IP (3)功能子程序返回:IRET,DOS功能調(diào)用,調(diào)用方法: 入口參數(shù) 子程序編號(hào)送AH INT 21H,DOS功能調(diào)用,基本I/O功能調(diào)用,(1) 從鍵盤輸入一個(gè)字符(功能號(hào)=1) MOV AH,1 ;等待按鍵 INT 21H ;字符回顯 (2) 從鍵盤輸入一個(gè)字符,無顯示(功能號(hào)=8) MOV AH,8 INT 21H ,DOS功能調(diào)用,例:程序中有時(shí)需要用戶對(duì)提示做出應(yīng)答 GET_KEY: MOV AH,1;等待鍵入字符 INT 21H;結(jié)果在AL中 CMP AL,Y ;是Y? JZ YES ;是,轉(zhuǎn)YES CMP AL,N ;是N? JZ NO ;是,轉(zhuǎn)NO JMP GET_KEY;否則繼續(xù)等待輸入 YES: NO: ,(3) 在顯示器上顯示一個(gè)字符(功能號(hào)=2) MOV DL, MOV AH, 2 INT 21H 例:在顯示器上顯示一個(gè)字符A MOV DL, A ;或MOV DL, 41H MOV AH, 2 INT 21H,DOS功能調(diào)用,(4)MOV DL,0FFH;鍵盤輸入 MOV AH,6 INT 21H MOV DL,24H;屏幕輸出 MOV AH,6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 罕見腫瘤的精準(zhǔn)醫(yī)療與個(gè)體化治療
- 預(yù)算評(píng)審質(zhì)量控制制度
- 2026年咸陽(yáng)市高新一中教師招聘?jìng)淇碱}庫(kù)及答案詳解(考點(diǎn)梳理)
- 罕見腫瘤的個(gè)體化治療治療策略優(yōu)化經(jīng)驗(yàn)與推廣
- 2025年建筑施工企業(yè)收發(fā)文管理制度
- 出納與財(cái)務(wù)制度
- 非稅收入財(cái)務(wù)制度
- 養(yǎng)豬小規(guī)模企業(yè)財(cái)務(wù)制度
- 餐廳收銀財(cái)務(wù)制度
- 地產(chǎn)項(xiàng)目財(cái)務(wù)制度
- 2025至2030中國(guó)EB病毒檢測(cè)行業(yè)標(biāo)準(zhǔn)制定與市場(chǎng)規(guī)范化發(fā)展報(bào)告
- 2026中國(guó)電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會(huì)成熟人才招聘?jìng)淇碱}庫(kù)及答案詳解1套
- 2026年浙江高考語(yǔ)文真題試卷+答案
- 2025 年大學(xué)人工智能(AI 應(yīng)用)期中測(cè)試卷
- 《市場(chǎng)營(yíng)銷(第四版)》中職完整全套教學(xué)課件
- (正式版)DB61∕T 2121-2025 《風(fēng)力發(fā)電場(chǎng)集電線路設(shè)計(jì)規(guī)范》
- 疑難病例討論制度落實(shí)常見問題與改進(jìn)建議
- 創(chuàng)傷性脾破裂的護(hù)理
- 蓬深102井鉆井工程(重新報(bào)批)項(xiàng)目環(huán)境影響報(bào)告表
- 大模型金融領(lǐng)域可信應(yīng)用參考框架
- (新教材)2025年人教版七年級(jí)上冊(cè)歷史期末復(fù)習(xí)??贾R(shí)點(diǎn)梳理復(fù)習(xí)提綱(教師版)
評(píng)論
0/150
提交評(píng)論