版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第 10 講講 轉(zhuǎn)移控制類指令(轉(zhuǎn)移控制類指令(2)循環(huán)指令循環(huán)指令&子程序指令子程序指令&中斷指令中斷指令 控制轉(zhuǎn)移指令:控制轉(zhuǎn)移指令: 無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令 JMP 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令JZ / JNZ 、 JE / JNE、 JS / JNS、 JO / JNO、JP / JNP、 JB / JNB、 JL / JNL、 JBE / JNBE、JLE / JNLE、 JCXZ 循環(huán)指令循環(huán)指令 LOOP、LOOPZ / LOOPE、LOOPNZ / LOOPNE 子程序調(diào)用和返回指令子程序調(diào)用和返回指令 CALL、RET 中斷與中斷返回指令中斷與中斷返回指令 INT、IRE
2、T1. 循環(huán)指令:循環(huán)指令:注意:注意:* CX 中存放循環(huán)次數(shù)中存放循環(huán)次數(shù)* 只能使用段內(nèi)直接尋址的只能使用段內(nèi)直接尋址的8 位位移量位位移量LOOPLOOPZ / LOOPELOOPNZ / LOOPNE 執(zhí)行步驟:執(zhí)行步驟: (1) (CX) (CX) - 1 (2) 檢查是否滿足測試條件,如滿足則檢查是否滿足測試條件,如滿足則 (IP) (IP) + 8位位移量,實(shí)行循環(huán);位位移量,實(shí)行循環(huán); 不滿足則不滿足則 退出循環(huán),順序執(zhí)行。退出循環(huán),順序執(zhí)行。循環(huán)指令:循環(huán)指令:LOOP OPR測試條件測試條件:(CX) 0為零或相等時循環(huán)指令:為零或相等時循環(huán)指令:LOOPZ(LOOPE)
3、 OPR測試條件測試條件:ZF=1 且且 (CX) 0不為零或不相等時循環(huán)指令:不為零或不相等時循環(huán)指令:LOOPNZ(LOOPNE) OPR測試條件測試條件:ZF=0 且且 (CX) 0LOOP AGAIN DEC CX JNZ AGAIN如果將上面的程序?qū)懗扇缦碌那樾危喝绻麑⑸厦娴某绦驅(qū)懗扇缦碌那樾危篖1: MOVCX, 10 . ; 重復(fù)執(zhí)行的若干條指令重復(fù)執(zhí)行的若干條指令 LOOPL1這個程序?qū)o限制地運(yùn)行下去,稱為這個程序?qū)o限制地運(yùn)行下去,稱為“死循環(huán)死循環(huán)”。 MOVCX, 10L1: . ; 需要重復(fù)執(zhí)行的若干條指令需要重復(fù)執(zhí)行的若干條指令 LOOPL1上面的程序?qū)⑸厦娴某绦驅(qū)?/p>
4、L1到到LOOP指令之間的一段程序重復(fù)執(zhí)行指令之間的一段程序重復(fù)執(zhí)行10次。指令次。指令“MOV CX, 10”稱為稱為“裝載循環(huán)計數(shù)器裝載循環(huán)計數(shù)器”, 在循環(huán)之前完成。在循環(huán)之前完成?!纠?2-31】編程計算編程計算1+2+3+100=? 結(jié)果保存到字變量結(jié)果保存到字變量SUM中。中。XOR AX,AX XOR AX,AX ; ;累加器清零累加器清零 MOV BX,0001H MOV BX,0001H ;BX1;BX1 MOV CX,100 MOV CX,100 ;CX;CX循環(huán)次數(shù)循環(huán)次數(shù)100100AGAIN:AGAIN:ADD AX,BX ADD AX,BX ;AX(AX)+(BX
5、);AX(AX)+(BX) INC BXINC BX ;BX(BX)+1;BX(BX)+1 LOOP AGAINLOOP AGAIN ; ;未循環(huán)結(jié)束,則繼續(xù)未循環(huán)結(jié)束,則繼續(xù) MOV SUM,AX MOV SUM,AX ; ;循環(huán)結(jié)束,保存結(jié)果循環(huán)結(jié)束,保存結(jié)果(1)循環(huán)準(zhǔn)備階段循環(huán)準(zhǔn)備階段:累加器、計數(shù)器、指針賦初值,在循環(huán)開始:累加器、計數(shù)器、指針賦初值,在循環(huán)開始之前,每條指令只執(zhí)行一次;之前,每條指令只執(zhí)行一次;(2)循環(huán)階段循環(huán)階段:包括數(shù)據(jù)累加、修改指針、循環(huán)計數(shù)和控制三項(xiàng):包括數(shù)據(jù)累加、修改指針、循環(huán)計數(shù)和控制三項(xiàng)操作。每條指令重復(fù)執(zhí)行操作。每條指令重復(fù)執(zhí)行CX次。這部分的程序
6、稱為次。這部分的程序稱為“循環(huán)體循環(huán)體”。(3)循環(huán)結(jié)束處理階段循環(huán)結(jié)束處理階段:保存數(shù)據(jù)的累加和。這條指令在循環(huán)結(jié):保存數(shù)據(jù)的累加和。這條指令在循環(huán)結(jié)束后執(zhí)行,只執(zhí)行一次。束后執(zhí)行,只執(zhí)行一次。程序的主體部分分為三段:程序的主體部分分為三段:循環(huán)總結(jié)循環(huán)總結(jié)【例例 2 32】 數(shù)據(jù)段中分別以數(shù)據(jù)段中分別以STRING1 和和STRING2為首地址存放著為首地址存放著100 個字符,個字符,比較兩字符串,找出其中第一個不相同的字符分別送至比較兩字符串,找出其中第一個不相同的字符分別送至AL和和BL寄存器,若兩串寄存器,若兩串完全相同,則令完全相同,則令A(yù)L=BL=0。LEA SI,STRING
7、1 ;SI字符串字符串STRING1首地址首地址 LEA DI,STRING2 ;DI字符串字符串STRING2首地址首地址 MOV CX,100 ;CX循環(huán)次數(shù)循環(huán)次數(shù) CYCLE: MOV AL,SI ;AL串串1 中的字符中的字符 MOV BL,DI ;BL串串2 中的字符中的字符 INC SI ;SI(SI)+1 INC DI ;DI(DI)+1 CMP AL,BL ;(AL)(BL) LOOPE CYCLE ;若若(CX)0,且,且ZF=1,則轉(zhuǎn)向,則轉(zhuǎn)向CYCLE JNZ DONE ;若相應(yīng)兩個單元的內(nèi)容不等,則轉(zhuǎn)向若相應(yīng)兩個單元的內(nèi)容不等,則轉(zhuǎn)向DONE MOV AL,0 ;若兩
8、串完全相同,則若兩串完全相同,則AL0 MOV BL,0 ;若兩串完全相同,則若兩串完全相同,則BL0 DONE: . n程序使用程序使用LOOPE指令來控制循環(huán),既有計數(shù)(指令來控制循環(huán),既有計數(shù)(CX)控制,又有條件()控制,又有條件(ZF)控制。循環(huán)結(jié)束有兩種可)控制。循環(huán)結(jié)束有兩種可能性:能性:q字符串比較找出了第一個不相同的字符:循環(huán)結(jié)束時字符串比較找出了第一個不相同的字符:循環(huán)結(jié)束時ZF=0,AL和和BL寄存器內(nèi)是第一個不相同的字符;寄存器內(nèi)是第一個不相同的字符;q比較字符串沒有找到不相同的字符:循環(huán)結(jié)束時比較字符串沒有找到不相同的字符:循環(huán)結(jié)束時ZF=1。n對于對于LOOPZ/L
9、OOPE,LOOPNZ/LOOPNE控制的控制的循環(huán),一般應(yīng)在循環(huán)結(jié)束后用條件轉(zhuǎn)移指令分開這循環(huán),一般應(yīng)在循環(huán)結(jié)束后用條件轉(zhuǎn)移指令分開這兩種情況,分別處理。兩種情況,分別處理。 子程序結(jié)構(gòu)程序的優(yōu)點(diǎn)子程序結(jié)構(gòu)程序的優(yōu)點(diǎn):1.1.每個子程序就是一個具有特定功能的獨(dú)立的程序,每個子程序就是一個具有特定功能的獨(dú)立的程序,提高程提高程序的序的“可重用性可重用性”,提高了軟件開發(fā)效率。,提高了軟件開發(fā)效率。2.2.每個子程序可以獨(dú)立地進(jìn)行調(diào)試,由于子程序規(guī)模較小,每個子程序可以獨(dú)立地進(jìn)行調(diào)試,由于子程序規(guī)模較小,降低了調(diào)試難度。降低了調(diào)試難度。3.3.程序結(jié)構(gòu)清晰,程序結(jié)構(gòu)清晰,提高了程序的可閱讀性和可
10、維護(hù)性提高了程序的可閱讀性和可維護(hù)性。2. 子程序調(diào)用與返回指令子程序調(diào)用與返回指令n子程序是完成特定功能的一段程序子程序是完成特定功能的一段程序n當(dāng)主程序(調(diào)用程序)需要執(zhí)行這個功能時,采用當(dāng)主程序(調(diào)用程序)需要執(zhí)行這個功能時,采用CALL調(diào)用指令轉(zhuǎn)移到該子程序的起始處執(zhí)行調(diào)用指令轉(zhuǎn)移到該子程序的起始處執(zhí)行n當(dāng)運(yùn)行完子程序功能后,采用當(dāng)運(yùn)行完子程序功能后,采用RET返回指令回到主返回指令回到主程序繼續(xù)執(zhí)行程序繼續(xù)執(zhí)行演示演示 轉(zhuǎn)移指令轉(zhuǎn)移指令有去無回有去無回 子程序子程序調(diào)用需要返回調(diào)用需要返回,其中利用堆棧保存返回地址其中利用堆棧保存返回地址主程序與子程序主程序與子程序CALL labe
11、lMOV AX,0主程序主程序RET子程序子程序回到回到CALL指令后的指令指令后的指令處處返回地址返回地址子程序定義子程序定義n子程序定義偽操作子程序定義偽操作 子程序名子程序名 PROC 屬屬 性性 ; 子程序體子程序體子程序子程序名名 ENDPn子程序名:子程序名: 子程序入口的符號地址。子程序名應(yīng)為合法的子程序入口的符號地址。子程序名應(yīng)為合法的標(biāo)識符,標(biāo)識符,子程序名不能與同一個源程序中的標(biāo)號、變量名、子程序名不能與同一個源程序中的標(biāo)號、變量名、其它子程序名相同其它子程序名相同。n屬屬 性:類型性:類型 屬屬 性(性(NEAR、FAR)qNEAR: 調(diào)用程序和子程序在調(diào)用程序和子程序在
12、同一個代碼段同一個代碼段中(段內(nèi)調(diào)用),缺省中(段內(nèi)調(diào)用),缺省為為NEAR屬性,可以省略。屬性,可以省略。qFAR:調(diào)用程序和子程序:調(diào)用程序和子程序不在同一個代碼段不在同一個代碼段中(段間調(diào)用)中(段間調(diào)用)n只能被同一個代碼段里的程序調(diào)用只能被同一個代碼段里的程序調(diào)用的子程序。的子程序。n由于主程序和子程序處于同一個代碼段,調(diào)用和返回時由于主程序和子程序處于同一個代碼段,調(diào)用和返回時只只需要改變需要改變IPIP寄存器的值寄存器的值,CSCS寄存器的值保持不變。寄存器的值保持不變。n近程子程序的近程子程序的入口地址用入口地址用1616位段內(nèi)偏移地址表示位段內(nèi)偏移地址表示。 近程子程序(屬性
13、為近程子程序(屬性為NEAR 型)型)遠(yuǎn)程子程序遠(yuǎn)程子程序: (屬性為(屬性為FAR 型)型)n能夠被不同代碼段的程序調(diào)用能夠被不同代碼段的程序調(diào)用,也能被同一代碼段的程序也能被同一代碼段的程序調(diào)用的子程序調(diào)用的子程序。n調(diào)用這樣的子程序時,調(diào)用這樣的子程序時,需要同時改變需要同時改變CSCS和和IPIP寄存器的值寄存器的值,返回時,需要從堆棧里彈出返回時,需要從堆棧里彈出3232位的返回地址送入位的返回地址送入IPIP,CSCS寄寄存器。存器。n遠(yuǎn)程子程序的入口地址遠(yuǎn)程子程序的入口地址用用1616位段基址和位段基址和1616位段內(nèi)偏移地址位段內(nèi)偏移地址表示表示。子程序調(diào)用和返回指令:子程序調(diào)
14、用和返回指令:code1 segmentcode1 segmentmain proc main proc farfar callcall far ptr subp far ptr subp ret retmain endpmain endpcode1 endscode1 endscode2 segmentcode2 segmentsubp proc subp proc farfar retretsubp endpsubp endpcode2 endscode2 ends 段間調(diào)用和返回段間調(diào)用和返回code segmentcode segmentmain proc main proc farf
15、ar call call subp subp ret retmain endpmain endpsubp proc subp proc nearnear retretsubp endpsubp endpcode endscode ends 段內(nèi)調(diào)用和返回段內(nèi)調(diào)用和返回(1)段內(nèi)調(diào)用與返回)段內(nèi)調(diào)用與返回n段內(nèi)直接調(diào)用段內(nèi)直接調(diào)用qCALL 符號地址(子程序名)符號地址(子程序名);NEAR屬性屬性n(SP) (SP)- 2 ;入棧保護(hù)返回地址入棧保護(hù)返回地址n(SS:SP) (IP)n(IP) 符號地址的偏址符號地址的偏址 ;轉(zhuǎn)到子程序去執(zhí)行轉(zhuǎn)到子程序去執(zhí)行n段內(nèi)返回段內(nèi)返回qRET;按按NE
16、AR屬性返回屬性返回n(IP) (SS:SP);從堆棧中取出返回地址從堆棧中取出返回地址n(SP) (SP)+ 2段內(nèi)調(diào)用與返回舉例段內(nèi)調(diào)用與返回舉例code SEGMENT 、 、 CALL subp 2000:200H 、 、 、 、 subp PROC NEAR2000:300H 、 、 、 RET subp ENDP code ENDS A450調(diào)用后調(diào)用后 (IP)=300H1000:1006SS:SP 返回后返回后 (IP)=200H1000:1006SS:SP 0002A4501000:1004SS:SP 1000:1004SS:SP 0002(2)段間調(diào)用與返回)段間調(diào)用與返回
17、n段間調(diào)用段間調(diào)用qCALL 符號地址(過程名)符號地址(過程名) ;FAR屬屬 性性n(SP) (SP)- 2 ;先保存段地址先保存段地址n(SS:SP) (CS) n(SP) (SP)- 2 ;后保存偏移地址后保存偏移地址n(SS:SP) (IP) n(IP) 符號地址的偏址符號地址的偏址n(CS) 符號地址的段址符號地址的段址 注意壓棧的順序,先段后偏移注意壓棧的順序,先段后偏移(2)段間調(diào)用與返回(續(xù))段間調(diào)用與返回(續(xù))n段間返回段間返回qRET ;按按FAR屬屬 性返回性返回q (IP) (SS:SP);先取出偏移地址先取出偏移地址q (SP) (SP)+ 2q (CS) (SS:
18、SP) ;后取出段地址后取出段地址q (SP) (SP)+ 2調(diào)用后調(diào)用后 (IP)=200H (CS)=3000H1000:1006SS:SP A450 返回后返回后 (IP)=100H, (CS)=2000H1000:1006SS:SP 1000:1002SS:SP 00010020A450 code1 SEGMENT 、 、 CALL far ptr subp 2000:100H 、 、 code1 ENDS code2 SEGMENT 、 subp PROC FAR3000:200H 、 、 、 RET subp ENDP code2 ENDS 1000:1002SS:SP 00010
19、020段間調(diào)用與返回舉例段間調(diào)用與返回舉例ZEROBYTESPROC; 定義一個子程序定義一個子程序PUSH AXPUSH CXXORAX, AX; AX清零清零MOVCX, 128; 循環(huán)次數(shù)送循環(huán)次數(shù)送CXZEROLOOP:MOV BX, AX; 將一個字存儲單元清零將一個字存儲單元清零ADDBX, 2; 修改地址修改地址LOOP ZEROLOOP; 循環(huán)控制循環(huán)控制POP CXPOP AXRET; 返回主程序返回主程序ZEROBYTESENDP; 子程序結(jié)束子程序結(jié)束 思考思考:該子程序完成了什么功能?調(diào)用該子程序時,:該子程序完成了什么功能?調(diào)用該子程序時, 應(yīng)該先做什么準(zhǔn)備工作?應(yīng)該
20、先做什么準(zhǔn)備工作?子程序定義舉例子程序定義舉例簡寫形式簡寫形式ZEROBYTES:PUSH AXPUSH CXXOR AX, AX; AX寄存器清零寄存器清零MOVCX, 128 ; 計數(shù)器計數(shù)器CX置初值置初值ZEROLOOP:MOVBX, AX; 一個字單元清零一個字單元清零ADDBX, 2 ; 修改地址指針,指向下一個字修改地址指針,指向下一個字LOOPZEROLOOP; 循環(huán)控制循環(huán)控制POP CXPOP AXRET ; 結(jié)束程序運(yùn)行,返回主程序結(jié)束程序運(yùn)行,返回主程序 缺點(diǎn):邊界不容易清晰地區(qū)分;只能定義缺點(diǎn):邊界不容易清晰地區(qū)分;只能定義“近程子程序近程子程序”; 只能被同一代碼段
21、內(nèi)的程序調(diào)用只能被同一代碼段內(nèi)的程序調(diào)用 。子程序名子程序名PROCNEAR/FARPUSH; 保護(hù)現(xiàn)場(寄存器保護(hù)現(xiàn)場(寄存器/存儲器)存儲器)PUSH; 個數(shù)根據(jù)具體情況決定個數(shù)根據(jù)具體情況決定;子程序主體;子程序主體POP ;恢復(fù)現(xiàn)場,注意出棧次序;恢復(fù)現(xiàn)場,注意出棧次序POP ; 先進(jìn)棧的寄存器后出棧先進(jìn)棧的寄存器后出棧RET;返回;返回子程序名子程序名ENDP子程序的基本格式子程序的基本格式3. 中斷指令和系統(tǒng)功能調(diào)用中斷指令和系統(tǒng)功能調(diào)用n中斷(中斷(Interrupt)是又一種改變程序執(zhí)行順序的方法)是又一種改變程序執(zhí)行順序的方法n8086/8088 CPU支持支持256個中斷,
22、每個中斷用一個編號(中個中斷,每個中斷用一個編號(中斷向量號)區(qū)別斷向量號)區(qū)別n中斷指令有中斷指令有3條:條:INT IRET INTOn要求掌握中斷調(diào)用指令要求掌握中斷調(diào)用指令I(lǐng)NT ,進(jìn)而掌握,進(jìn)而掌握系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用 類型類型0的的(IP) 類型類型0的的(CS) 類型類型1的的(IP) 類型類型1的的(CS) 類型類型N的的(IP) 類型類型N的的(CS) 類型類型255的的(IP) 類型類型255的的(CS)0000000004 4*N003FC中斷向量表中斷向量表中斷向量:中斷向量:中斷服務(wù)程序的入口地址,中斷服務(wù)程序的入口地址,存放于中斷向量表區(qū)。存放于中斷向量表區(qū)。
23、中斷指令:中斷指令: INT TYPE執(zhí)行操作:執(zhí)行操作: (SP) (SP) - 2 ( (SP)+1,(SP) ) (FLAGS) (SP) (SP) - 2 ( (SP)+1,(SP) ) (CS) (SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (IP) (TYPE*4) (CS) (TYPE*4+2) 注意:注意: * TYPE (0255) 是中斷類型號。是中斷類型號。根據(jù)根據(jù)TYPE ,在中斷向量表中找到它所,在中斷向量表中找到它所對應(yīng)的中斷向量,即得到所要執(zhí)行的程序段的段基地址:段偏移地址對應(yīng)的中斷向量,即得到所要執(zhí)行的程序段的段基地址:段偏移地址* IN
24、T 指令還把指令還把 IF 和和 TF 置置0,但不影響其它標(biāo)志位,但不影響其它標(biāo)志位 中斷返回指令:中斷返回指令:IRET執(zhí)行操作:執(zhí)行操作: (IP) ( (SP)+1,(SP) ) (SP) (SP) + 2 (CS) ( (SP)+1,(SP) ) (SP) (SP) + 2 (FLAGS) ( (SP)+1,(SP) ) (SP) (SP) + 2 注意:注意:* IRET 指令執(zhí)行完,標(biāo)志位由堆棧中取出的值確定指令執(zhí)行完,標(biāo)志位由堆棧中取出的值確定4. 處理器控制類指令處理器控制類指令 標(biāo)志處理指令標(biāo)志處理指令 CLC、 STC、 CMC、 CLD、STD、 CLI、STI 處理器
25、控制指令處理器控制指令 NOP、HLT標(biāo)志處理指令:標(biāo)志處理指令: CLC ;CF 0 CMC ;CF CF STC ;CF 1 CLD ;DF 0 STD ;DF 1 CLI ;IF 0 STI ;IF 1注意注意: * 只影響本指令指定的標(biāo)志只影響本指令指定的標(biāo)志處理器控制指令:處理器控制指令: NOP 無操作無操作 ( (機(jī)器碼占一個字節(jié)機(jī)器碼占一個字節(jié)) )HLT 暫停暫停 ( (等待一次外中斷,之后繼續(xù)執(zhí)行程序等待一次外中斷,之后繼續(xù)執(zhí)行程序) )注意注意: * 不影響條件標(biāo)志不影響條件標(biāo)志 5. 基本基本I/O功能調(diào)用功能調(diào)用nDOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用qDOS利用利用21H號
26、中斷號中斷提供給用戶近百個系統(tǒng)功能,主要包括設(shè)提供給用戶近百個系統(tǒng)功能,主要包括設(shè)備管理、目錄管理和文件管理三個方面的功能備管理、目錄管理和文件管理三個方面的功能nROM-BIOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用qROM-BIOSROM-BIOS也以中斷服務(wù)程序的形式,向程序員提供系統(tǒng)的基本輸入也以中斷服務(wù)程序的形式,向程序員提供系統(tǒng)的基本輸入輸出程序輸出程序qROM-BIOSROM-BIOS功能更加基本,且與操作系統(tǒng)無關(guān)功能更加基本,且與操作系統(tǒng)無關(guān)q當(dāng)當(dāng)DOSDOS沒有啟動或不允許使用沒有啟動或不允許使用DOSDOS功能調(diào)用時,可以使用功能調(diào)用時,可以使用ROM-BIOSROM-BIOS功功能調(diào)用
27、能調(diào)用 BIOS和和DOS基本調(diào)用基本調(diào)用調(diào)用方法:調(diào)用方法:1. 將將調(diào)用參數(shù)調(diào)用參數(shù)裝入裝入指定的指定的寄存器中;寄存器中;2. BIOS或或DOS功能號功能號裝入裝入AH;3. 如需如需子功能號子功能號,把它裝入,把它裝入AL;4. 按中斷號按中斷號調(diào)用調(diào)用DOS或或BIOS中斷中斷(INT);5. 檢查或取得檢查或取得返回參數(shù)返回參數(shù)。子程序調(diào)用子程序調(diào)用 主程序主程序 CALL SUBP 子程序子程序 RETDOS/BIOS調(diào)用調(diào)用 源程序源程序 INT n DOS/BIOS 例行程序例行程序 IRETDOS常用輸出功能調(diào)用常用輸出功能調(diào)用( AH 功功 能能 調(diào)調(diào) 用用 參參 數(shù)數(shù)
28、 2 顯示一個字符顯示一個字符(檢驗(yàn)檢驗(yàn)Ctrl-Break) DL = 字符字符ASCII碼碼 光標(biāo)跟隨字符移動光標(biāo)跟隨字符移動 9 顯示字符串顯示字符串 DS:DX=串地址串地址,光標(biāo)跟隨串移動,光標(biāo)跟隨串移動 功功 能能 調(diào)用參數(shù)調(diào)用參數(shù) 返回參數(shù)返回參數(shù) 從鍵盤輸入一個字符并回顯在屏幕上從鍵盤輸入一個字符并回顯在屏幕上 AL=字符字符ASCII碼碼DOS常用輸入功能調(diào)用常用輸入功能調(diào)用(例例:下面的程序在顯示器上輸出數(shù)字字符:下面的程序在顯示器上輸出數(shù)字字符“9”:MOVAH, 2;功能號;功能號02HMOVDL, 39H;字符;字符“9”的的ASCII代碼代碼INT21H;調(diào)用;調(diào)用
29、21H號系統(tǒng)服務(wù)程序號系統(tǒng)服務(wù)程序 字符字符“9”顯示在顯示在光標(biāo)光標(biāo)(Cursor)位置,光標(biāo)向右移動一個字符位置。位置,光標(biāo)向右移動一個字符位置。 DL 待輸出字符的待輸出字符的ASCII代碼代碼 AH 02H INT 21HX為為DB定義的一個變量,下面的程序能夠輸出定義的一個變量,下面的程序能夠輸出X的值嗎?的值嗎? MOVAH, 2;功能號;功能號02H裝入裝入AH寄存器寄存器MOVDL, X;變量;變量X的值裝入的值裝入DL寄存器寄存器INT21H;調(diào)用;調(diào)用21H號系統(tǒng)服務(wù)程序號系統(tǒng)服務(wù)程序(1)輸出單個字符顯示)輸出單個字符顯示CODESEGMENTASSUME CS: COD
30、ESTART:LEABX, STRINGMOVCX, 7ONE:MOVDL, CS: BX;取出一個字符的;取出一個字符的ASCII代碼代碼MOVAH, 2;單個字符輸出的功能號;單個字符輸出的功能號INT21H;調(diào)用系統(tǒng)服務(wù),輸出一個字符;調(diào)用系統(tǒng)服務(wù),輸出一個字符INCBX;修改指針;修改指針LOOP ONE;計數(shù)與循環(huán)控制;計數(shù)與循環(huán)控制MOVAX, 4C00HINT21HSTRINGDB“Hello !”CODEENDSENDSTART例例 在顯示器上輸出文字在顯示器上輸出文字“Hello !” STRING在代碼段里定義,取字符需要增加在代碼段里定義,取字符需要增加段跨越前綴段跨越前綴“CS: BX”,否則會到,否則會到“DS: BX”處取字符,輸出不確定的內(nèi)容。處取字符,輸出不確定的內(nèi)容。 代碼為代碼為0DH的字符稱為的字符稱為“回車回車(Carriage
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中國建筑國際集團(tuán)校園招聘245人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國人壽保險股份限公司南漳縣支公司13人(湖北)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年重慶酉陽自治縣教育事業(yè)單位招聘125人開考?xì)v年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年浙江省舟山市生態(tài)環(huán)境局下屬事業(yè)單位招聘2人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年四川省阿壩州事業(yè)單位招聘191人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年四川甘孜州事業(yè)單位招聘619人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上海市行政法制研究所研究人員公開招聘歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年江蘇省南通通州事業(yè)單位招聘78人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川省資陽安岳縣人力資源和社會保障局考試招聘89人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川涼山西昌市招聘教師212人高頻重點(diǎn)提升(共500題)附帶答案詳解
- GB∕T 41550-2022 畜禽屠宰用脫毛劑使用規(guī)范
- 輕型觸探儀地基承載力參數(shù)對照表
- 綜合管理部負(fù)責(zé)人(部長)崗位職責(zé)
- 檢驗(yàn)科15項(xiàng)質(zhì)量控制指標(biāo)(檢驗(yàn)科質(zhì)控小組活動記錄)
- GB∕T 2518-2019 連續(xù)熱鍍鋅和鋅合金鍍層鋼板及鋼帶
- 海南省商品住宅專項(xiàng)維修資金管理辦法
- 美國文學(xué)各個時期作家作品集合
- 空運(yùn)委托書范本
- 工業(yè)氯化芐企業(yè)標(biāo)準(zhǔn)連云港泰樂
- 機(jī)翼翼肋實(shí)例零件庫設(shè)計
- GB∕T 10596-2021 埋刮板輸送機(jī)
評論
0/150
提交評論