匯編在數(shù)據(jù)中應(yīng)用ppt課件_第1頁(yè)
匯編在數(shù)據(jù)中應(yīng)用ppt課件_第2頁(yè)
匯編在數(shù)據(jù)中應(yīng)用ppt課件_第3頁(yè)
匯編在數(shù)據(jù)中應(yīng)用ppt課件_第4頁(yè)
匯編在數(shù)據(jù)中應(yīng)用ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、匯編言語(yǔ)在數(shù)據(jù)處置中的運(yùn)用 匯編言語(yǔ)在數(shù)據(jù)處置中運(yùn)用1、數(shù)值轉(zhuǎn)換中運(yùn)用 數(shù)據(jù)輸入/輸出時(shí)的轉(zhuǎn)換2、串操作中運(yùn)用 串挪動(dòng)、串搜索、串比較、 串插入、串刪除3、代碼轉(zhuǎn)換中運(yùn)用 ASCII碼 BCD碼 二進(jìn)數(shù) BCD碼 4、算術(shù)運(yùn)算 ASCII碼輸入設(shè)備ASCII碼表示的十進(jìn)制二進(jìn)制ASCII碼表示的十六進(jìn)制二進(jìn)制ASCII碼表示的二進(jìn)制二進(jìn)制機(jī)內(nèi)二進(jìn)制操作運(yùn)算二進(jìn)制ASCII碼表示的十進(jìn)制二進(jìn)制ASCII碼表示的十六進(jìn)制二進(jìn)制ASCII碼表示的二進(jìn)制ASCII碼輸出設(shè)備例例10-1 ASCII碼十進(jìn)制轉(zhuǎn)換為二進(jìn)制數(shù)碼十進(jìn)制轉(zhuǎn)換為二進(jìn)制數(shù)設(shè)設(shè)5位十進(jìn)數(shù)從高位到低位位十進(jìn)數(shù)從高位到低位依次是依次是d4

2、、d3、d2、d1、d0。可用以下多項(xiàng)式進(jìn)展計(jì)算:可用以下多項(xiàng)式進(jìn)展計(jì)算: (0*10+d4)*10+d3)*10+d2)*10+d1)*10+d0初始化是0-9ASCII碼-30H累加器*10累加器+這一位值修正指令終了NY例例10-1 ASCII碼十進(jìn)制轉(zhuǎn)換為二進(jìn)制數(shù)碼十進(jìn)制轉(zhuǎn)換為二進(jìn)制數(shù) CHG_DEC_BIN PROC ;SI 指向十進(jìn)制緩沖區(qū)首址指向十進(jìn)制緩沖區(qū)首址MOV DX, 0 ;初始化;初始化MOV CX, 10GET_ASC:MOV AL, SI;獲得十進(jìn)制數(shù);獲得十進(jìn)制數(shù)CMP AL, 0JB EXITCMP AL, 9JA EXITDEC_BIN:SUB AL, 30H

3、MOV AH, 0PUSH AXMOV AX, DXMUL CX ;*10MOV DX, AXPOP AXADD DX, AXINC SI ;修正指針;修正指針JMP GET_ASCEXIT: RET ;轉(zhuǎn)換后的二進(jìn)數(shù)在;轉(zhuǎn)換后的二進(jìn)數(shù)在DX中中 CHG_DEC_BIN ENDP例例10-2 二進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)轉(zhuǎn)換為 ASCII碼十進(jìn)制碼十進(jìn)制例例10-2 二進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼十進(jìn)制碼十進(jìn)制 BIN_TO_DEC PROC ;被轉(zhuǎn)換的十進(jìn)數(shù)在;被轉(zhuǎn)換的十進(jìn)數(shù)在A(yíng)X中中 PUSH DI ;DI 指向存放十進(jìn)數(shù)緩沖區(qū)首址指向存放十進(jìn)數(shù)緩沖區(qū)首址MOV CX, 5 ;初始化;

4、初始化 CLEAR_BUF:MOV BYTE PTRDI, INC DILOOP CLEAR_BUFDEC DIMOV CX, 10 CHANGE:MOV DX, 0;轉(zhuǎn)換;轉(zhuǎn)換DIV CX ;除以;除以10,余數(shù)在,余數(shù)在DXADD DL, 30H;ASCII碼碼MOV BYTE PTRDI, DL;存儲(chǔ)十進(jìn)制數(shù);存儲(chǔ)十進(jìn)制數(shù)DEC DICMP AX, 0 商能否為商能否為0?JNZ CHANGEPOP DIRETBIN_TO_DECENDPASCII碼十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)碼十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù) 十六進(jìn)制數(shù)的字符為十六進(jìn)制數(shù)的字符為09和和AF,輸入后,輸入后,ASCII碼為碼為30

5、H39H和和41H46H 轉(zhuǎn)換時(shí),假設(shè)是數(shù)字轉(zhuǎn)換時(shí),假設(shè)是數(shù)字09,減,減30H 假設(shè)是假設(shè)是AF,減去,減去37H例例10-3 ASCII碼十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)碼十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù) HEX_TO_BIN PROC PUSH AX PUSH CX MOV DX, 0 ;轉(zhuǎn)換后結(jié)果在;轉(zhuǎn)換后結(jié)果在DX中中 GET_CHAR: MOV AX, 01H ;鍵盤(pán)輸入;鍵盤(pán)輸入 INT 21H SUB AL,30H JL EXIT CMP AL, 0AH JL CHANGE SUB AL, 07HCMP AL, 0AH ;能否是大寫(xiě)字母JL EXITCMP AL, 0FHJLE CHANGEC

6、MP AL, 2AH ;能否是小寫(xiě)字母JL EXITCMP AL, 2FHJLE CHANGEJMP EXIT CHANGE:MOV CL, 4 ;轉(zhuǎn)換SHL DX, CLMOV AH, 0ADD DX, AXJMP GET_CHARPOP CXPOP AX EXIT:RET HEX_TO_BIN ENDP匯編言語(yǔ)在串操作中的運(yùn)用匯編言語(yǔ)在串操作中的運(yùn)用 串挪動(dòng)數(shù)據(jù)塊挪動(dòng)串挪動(dòng)數(shù)據(jù)塊挪動(dòng) 串搜索串搜索 串比較串比較 串插入串插入 串刪除串刪除 求串長(zhǎng)求串長(zhǎng) 數(shù)據(jù)塊挪動(dòng)數(shù)據(jù)塊挪動(dòng) 1、普通情況、普通情況 S1 S2 源區(qū)源區(qū) 目的區(qū)目的區(qū)2、特殊情況:源區(qū)與目的區(qū)重疊、特殊情況:源區(qū)與目的區(qū)重疊

7、 源區(qū)源區(qū) 目的區(qū)目的區(qū) 目的區(qū)目的區(qū) 源區(qū)源區(qū) 例例10-4 串搜索例串搜索例 將串將串STR中第一個(gè)中第一個(gè)I字符找出,并顯示字符找出,并顯示 其在串中的位移量其在串中的位移量D_SEG SEGMENTSTR DB THIS IS A COMPUTERSTR_LEN = $-STRD_SEG ENDS.LEA DI, STRMOV CX, STR_LENMOV AL, ICLD FOUND:REPNZ SCASBJE OK1JCXZ RETNOK1: MOV DX, DIDEC DL ;第一個(gè);第一個(gè)I字符距串頭位移量字符距串頭位移量MOV BL, DL PUSH CXMOV CL,4SH

8、R DL, CLPOP CXCMP DL, 0AHJB OK2ADD DL, 7OK2: ADD DL, 30HMOV AH, 02HINT 21H;顯示位移量高位MOV DL, BLAND DL, 0FHCMP DL, 0AHJB OK3 ADD DL, 70K3:ADD DL, 30HMOV AH, 02HINT 21H;顯示位移量低位MOV DL, HINT 21H RETN:.例例10-5 串比較例串比較例 比較串比較串STR1和和STR2能否相等能否相等 D_SEG SEGMENTSTR1 DB STRING1STR2 DB STRING2STR_LEN = ($-STR1)/2MS

9、G1 DB NOT EQUAL,$MSG2 DB EQUAL,$ D_SEG ENDS.LEA SI, STR1MOV DI, OFFSET STR2MOV CX, STR_LENCLDREPE CMPSBJNZ NO_EQUAEQUA:MOV AH, 09HLEA DX, MSG2INT 21H;提示兩個(gè)串相等;提示兩個(gè)串相等JMP CMP_ENDNO_EQUA: MOV AH, 09HLEA DX, MSG1INT 21H;提示兩個(gè)串不等;提示兩個(gè)串不等.CMP_END:.串插入串插入串插入分三種情況:串插入分三種情況: 1、在目的串首插入、在目的串首插入 2、在目的串尾插入、在目的串尾插

10、入 3、在目的串中指定的位置插入、在目的串中指定的位置插入 例例10-6 串插入例串插入例 將正數(shù)將正數(shù)N插入一個(gè)升序的字?jǐn)?shù)組中,插入一個(gè)升序的字?jǐn)?shù)組中, 數(shù)組的首地址和末地址為數(shù)組的首地址和末地址為 A_HEAD和和A_END X 3 A_HEAD X DW ? 5 A_HEAD DW 3,5,23,49,52,65 23 A_END DW 105 49 N DW 32 52 65 105 A_END 32 N MOV AX, N MOV A_HEAD-2, -1 MOV SI, 0 COMPARE:CMP A_ENDSI, AX ;從最后一個(gè)元素開(kāi)場(chǎng)比較 JLE INSERT MOV BX

11、, A_ENDSI MOV A_ENDSI+2, BX ;后移一個(gè)元素 SUB SI, 2 JMP COMPARE INSERT: MOV A_ENDSI+2, AX ;插入 .串刪除串刪除 例例10-7 串刪除例串刪除例 附加段中有一個(gè)首地址為附加段中有一個(gè)首地址為 LIST的字?jǐn)?shù)組,數(shù)組的第一的字?jǐn)?shù)組,數(shù)組的第一字中存放該數(shù)組長(zhǎng)度,數(shù)組字中存放該數(shù)組長(zhǎng)度,數(shù)組首地址在首地址在DI中,數(shù)中,數(shù)X在在A(yíng)X中,中,現(xiàn)要在數(shù)組中查找現(xiàn)要在數(shù)組中查找X,假設(shè)找,假設(shè)找到那么刪除。到那么刪除。 CLD PUSH DI MOV CX, ES:DI;數(shù)組長(zhǎng)度送CX ADD DI, 2;DI指向第一個(gè)元素

12、REPNE SCASW;串掃描 JE DELETE;如找到那么刪除 POP DI;否那么,退出 JMP EXITDELET: JCXZ DEC_CNT;假設(shè)CX=0,X為最后一個(gè)元素NEXT_EL: MOV BX, ES:DI MOV ES:DI-2, BX ;向前挪動(dòng)一個(gè)元素 ADD DI, 2 LOOP NEXT_ELDEC_CNT: POP DI DEC WORD PTR ES:DI;數(shù)組元素個(gè)數(shù)減1EXIT:. 求串長(zhǎng)求串長(zhǎng)例例10-8 求串長(zhǎng)例求串長(zhǎng)例 求字符串的長(zhǎng)度送入求字符串的長(zhǎng)度送入LEN,假定串以,假定串以$終了終了 STRING DB Hello,How are you!,

13、$ . MOV SI, OFFSET STRING XOR BL, BLLOP: MOV AL, SI CMP AL,$ JZ DONE INC BL INC SI JMP LOPDONE: MOV LEN, BL 匯編言語(yǔ)在代碼轉(zhuǎn)換中的運(yùn)用匯編言語(yǔ)在代碼轉(zhuǎn)換中的運(yùn)用1、十進(jìn)制、十進(jìn)制ASCII 碼轉(zhuǎn)換成碼轉(zhuǎn)換成BCD碼碼2、BCD碼轉(zhuǎn)換成十進(jìn)制數(shù)的碼轉(zhuǎn)換成十進(jìn)制數(shù)的ASCII碼碼3、二進(jìn)制數(shù)轉(zhuǎn)換為、二進(jìn)制數(shù)轉(zhuǎn)換為BCD碼碼4、BCD碼轉(zhuǎn)換為二進(jìn)制數(shù)碼轉(zhuǎn)換為二進(jìn)制數(shù) 例例10-9十進(jìn)制十進(jìn)制ASCII 碼轉(zhuǎn)換成碼轉(zhuǎn)換成BCD碼例碼例 令令A(yù)SC_BUF開(kāi)場(chǎng)的緩沖區(qū)開(kāi)場(chǎng)的緩沖區(qū)內(nèi)存放著假設(shè)干個(gè)內(nèi)

14、存放著假設(shè)干個(gè)ASCII碼表示碼表示 ASC_BUF 31H 的十進(jìn)制數(shù),的十進(jìn)制數(shù),(每個(gè)單元存放一每個(gè)單元存放一 32H個(gè)十進(jìn)制數(shù)個(gè)十進(jìn)制數(shù)),要求將其轉(zhuǎn)換成,要求將其轉(zhuǎn)換成 33HBCD碼,并把兩個(gè)相鄰單元的碼,并把兩個(gè)相鄰單元的 34HBCD碼合并在一個(gè)存儲(chǔ)單元中碼合并在一個(gè)存儲(chǔ)單元中 35H 假設(shè)假設(shè)ASCII碼的個(gè)數(shù)為奇數(shù),碼的個(gè)數(shù)為奇數(shù),那么將首地址單元的十進(jìn)制數(shù)對(duì)那么將首地址單元的十進(jìn)制數(shù)對(duì) 應(yīng)的應(yīng)的BCD碼單獨(dú)存放一個(gè)單元碼單獨(dú)存放一個(gè)單元, BCD_BUF 1其他的按一致方法處置其他的按一致方法處置 32 子程序名:子程序名:DEC_ASC_BCD 54入口參數(shù):入口參數(shù):

15、DS:SI指向指向ASCII碼首地址碼首地址ASC_BUF ES:DI指向指向BCD碼首地址碼首地址BCD_BUF CX=串長(zhǎng)度串長(zhǎng)度, DS,ES指向同一個(gè)段指向同一個(gè)段 出口參數(shù):出口參數(shù):BCD碼存放在碼存放在BCD_BUF為首地址的緩沖區(qū)內(nèi)為首地址的緩沖區(qū)內(nèi) DEC_ASC_BCD PROC FAR PUSH SI ;維護(hù)現(xiàn)場(chǎng) PUSH DI PUSH AX PUSH BX PUSH CX ROR CX, 1 JNC NEXT ;ASCII碼為偶數(shù)個(gè)轉(zhuǎn)移 ROL CX,1 LODSB ;取ASCII碼到AL AND AL, 0FH ;ASCII碼轉(zhuǎn)換成BCD碼 STOSB ;存儲(chǔ)BCD

16、碼 DEC CX ROR CX,1 ;奇數(shù)個(gè)時(shí)單獨(dú)處置完 NEXT: LODSB AND AL, 0FH MOV BL, AL LODSB PUSH CX MOV CL, 4 SAL AL, CL POP CX ADD AL, BL ;合并BCD碼 STOSB ;存儲(chǔ)BCD碼 LOOP NEXT POP CX ;恢復(fù)現(xiàn)場(chǎng) POP BX POP AX POP DI POP SI RET DEC_ASC_BCD ENDP 例例10-10 BCD碼轉(zhuǎn)換成十進(jìn)制數(shù)的碼轉(zhuǎn)換成十進(jìn)制數(shù)的ASCII碼例碼例 將數(shù)據(jù)段字節(jié)變量將數(shù)據(jù)段字節(jié)變量BCD_BUF為首地址的緩沖區(qū)中一個(gè)為首地址的緩沖區(qū)中一個(gè)八位十進(jìn)制

17、數(shù)對(duì)應(yīng)的緊縮八位十進(jìn)制數(shù)對(duì)應(yīng)的緊縮BCD碼轉(zhuǎn)換成碼轉(zhuǎn)換成ASCII碼,并顯示碼,并顯示 BCD_BUF 12 34 56 78 顯示:顯示:7 8 5 6 3 4 1 2 子程序名:子程序名: BCD_DEC_ASC 入口參數(shù):一個(gè)八位十進(jìn)制數(shù)對(duì)應(yīng)的緊縮入口參數(shù):一個(gè)八位十進(jìn)制數(shù)對(duì)應(yīng)的緊縮BCD碼存儲(chǔ)碼存儲(chǔ) 在在BCD_BUF緩沖區(qū)緩沖區(qū) 出口參數(shù):出口參數(shù): 正常終了,正常終了,DH=0FFH BCD_DEC_ASC PROC NEAR PUSH SI ;維護(hù)現(xiàn)場(chǎng);維護(hù)現(xiàn)場(chǎng) PUSH AX PUSH CX MOV CX, 4 LEA SI, BCD_BUF ADD SI, 3 MOV DH,

18、 0 CHG_OUT1: PUSH CX MOV AL, SI ;取緊縮;取緊縮BCD碼碼 DEC SI ;修正指針;修正指針 MOV DL, AL MOV CL, 4 ROR AL, 4 AND AL, 0FH ;取高半字節(jié);取高半字節(jié)BCD碼碼 ADD AL, 30H ;生成;生成ASCII碼碼 CALL STD_OUT ;規(guī)范設(shè)備輸出;規(guī)范設(shè)備輸出 CHG_OUT2: POP CX CMP CX, 1 JNZ CHG_OUT3 MOV DH, 0FFH CHG_OUT3: PUSH CX MOV AL, DL AND AL, 0FH ;取低半字節(jié)BCD碼 ADD AL, 30H ;生成A

19、SCII碼 CALL STD_OUT ;規(guī)范設(shè)備輸出 CHG_OUT4: POP CX LOOP CHG_OUT1 POP CX POP AX POP SI RET BCD_DEC_ASC ENDP STD_OUT PROC NEAR ;規(guī)范設(shè)備輸出;規(guī)范設(shè)備輸出 PUSH DX PUSH AX MOV DL, AL MOV AH, 2 INT 21H POP AX POP DX RET STD_OUT ENDP例例10-11二進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)轉(zhuǎn)換為BCD碼例碼例 DX存放器中為一個(gè)十六位無(wú)符號(hào)二進(jìn)制存放器中為一個(gè)十六位無(wú)符號(hào)二進(jìn)制數(shù)數(shù)(0-65535),將其轉(zhuǎn)換為緊縮的將其轉(zhuǎn)換為緊縮的B

20、CD碼碼,保管保管在在BCD_BUF緩沖區(qū)緩沖區(qū) DX BCD_BUFBIN_TO_BCD PROC FAR 15678 78 PUSH AX 56 PUSH CX 1 PUSH DX 0 PUSH DI 0 LEA DI, BCD_BUF MOV AL, 0 MOV CX, 5CLEAR_BUF: MOV DI, AL ;初始化緩沖區(qū);初始化緩沖區(qū) INC DI LOOP CLEAR_BUF LEA DI, BCD_BUF CHG_BCD1: MOV AX, DX ;轉(zhuǎn)換開(kāi)場(chǎng);轉(zhuǎn)換開(kāi)場(chǎng) MOV DX,0 MOV CX,10 DIV CX XCHG AX, DX ;交換余數(shù)和商;交換余數(shù)和商

21、MOV BL, AL ;余數(shù)送;余數(shù)送AL MOV AX, DX MOV DX, 0 MOV CX, 10 DIV CX XCHG AX, DX MOV CL, 4 ROL AL, CL AND AL, 0F0H OR AL, BL ;組合;組合BCD碼碼 MOV DI, AL ;存儲(chǔ);存儲(chǔ)BCD碼碼 INC DI CMP DX, 0 JNZ CHG_BCD1 POP DI 例例10-12 BCD碼轉(zhuǎn)換為二進(jìn)制數(shù)例碼轉(zhuǎn)換為二進(jìn)制數(shù)例 將將AX存放器中的四位緊縮型存放器中的四位緊縮型BCD碼轉(zhuǎn)換為二進(jìn)制數(shù)碼轉(zhuǎn)換為二進(jìn)制數(shù) BCD_TO_BIN PROC PUSH CX PUSH SI PUSH

22、DI MOV SI, AX XOR AX, AX MOV CX, 4 AGAIN1: MOV DI, 0 PUSH CX MOV CX, 4 AGAIN2: SHL SI, 1 ;左移;左移1位,最高位位,最高位-CF RCL DI, 1 ;CF移入移入DI中中 LOOP AGAIN2 ;反復(fù);反復(fù)4次得到次得到1位位BCD碼碼 MOV CX,10 MUL CX ;乘10 ADD AX, DI POP CX LOOP AGAIN1 MOV DX, AX ;轉(zhuǎn)換后的二進(jìn)數(shù)在DX中 POP DI POP SI POP CX RET BCD_TO_BIN ENDP例例10-13 多精度加法運(yùn)算多精度

23、加法運(yùn)算 例如,兩個(gè)無(wú)符號(hào)四字節(jié)二進(jìn)數(shù)相加:例如,兩個(gè)無(wú)符號(hào)四字節(jié)二進(jìn)數(shù)相加: 3 4 6 B 7 F 7 A H + 2A BC 8 5 4 8 H 5 F 2 8 0 4 C 2 H 計(jì)算步驟為:計(jì)算步驟為: 第一步第一步 第二步第二步 7 A F 7 4 8 8 5 ADC 0 ADC 0 C 2 (CF=0) 0 4 (CF=1) 第三步第三步 第四步第四步 6 B 3 4 B C 2 A ADC 1 ADC 1 2 8 (CF=1) 5 F (CF=0)ADR1 DB 7AH, 7FH, 6BH, 34HADR2 DB 48H, 85H, 0BCH, 2AHSUM DB 0, 0, 0, 0 MOV SI, OFFSET A

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論