最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

匯編語(yǔ)言系列之匯編實(shí)現(xiàn)字符串操作

 更新時(shí)間:2021年11月27日 14:13:03   作者:BoBoRing  
本文列出了字符串匹配和字符串輸入顯示的代碼,對(duì)匯編語(yǔ)言系列之匯編實(shí)現(xiàn)字符串操作相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧

軟件:emu8086

語(yǔ)言:匯編語(yǔ)言(Assembly)

注意:本文列出了字符串匹配和字符串輸入顯示的代碼,全部代碼為博主獨(dú)自一人編寫,會(huì)有瑕疵,謹(jǐn)慎使用。

1.字符串匹配設(shè)計(jì)

1.1設(shè)計(jì)要求:

要求掌握提示信息的設(shè)置及讀取鍵入信息的方法。設(shè)計(jì)程序,從鍵盤輸入兩個(gè)字符串進(jìn)行比較,如相同,則顯示“MATCH”,否則顯示“NO MATCH”。

1.2設(shè)計(jì)思路:

DOS功能調(diào)用輸入兩個(gè)字符串,通過CMPSB指令一個(gè)字節(jié)一個(gè)字節(jié)比較字符串,相同輸出MATCH,不同輸出NO MATCH。

1.3程序清單:

DATA    SEGMENT
        pkey   DB  0DH,0AH, 'please input str1 end by enter:','$'
        qkey   DB  0DH,0AH,'please input str2 end by enter:','$'
        skey   DB  0DH,0AH,'MATCH','$'
        tkey   DB  0DH,0AH,'NO MATCH','$' 
        BUFF1  DB  101,0,101 DUP(0)
        BUFF2  DB  101,0,101 DUP(0)`
DATA    ENDS

CODE    SEGMENT
        ASSUME  CS:CODE,DS:DATA 
        
START:  MOV AX,DATA
        MOV DS,AX
        MOV ES,AX          ;數(shù)據(jù)段和堆棧段初始化
              
        LEA DX,pkey             
        MOV AH,9
        INT 21H               ;DOS功能調(diào)用,輸出字符串
        LEA DX,BUFF1
        MOV AH,0AH
        INT 21H               ;輸入第一個(gè)字符串到BUFF1緩沖區(qū)
        
        LEA DX,qkey
        MOV AH,9
        INT 21H
        LEA DX,BUFF2
        MOV AH,0AH
        INT 21H               ;輸入第二個(gè)字符串到BUFF2緩沖區(qū)
   
        LEA SI,BUFF1          ;將第一個(gè)字符串給SI
        LEA DI,BUFF2          ;將第二個(gè)字符串給DI
        MOV CX,53            ;給計(jì)數(shù)器值
        CLD                  ;清方向標(biāo)準(zhǔn)DF
        REPZ CMPSB        ;一個(gè)字節(jié)一個(gè)字節(jié)比較字符串,SI和DI遞增
        JZ MATCH             ;全部字節(jié)都相等輸出MATCH
        LEA DX,tkey
        MOV AH,9
        INT 21H               ;不等輸出NO MATCH
        JMP START 
        
MATCH:  LEA DX,skey
        MOV AH,9
        INT 21H               ;DOS功能調(diào)用,輸出MATCH
        JMP START

CODE    ENDS
        END     START

1.4程序運(yùn)行結(jié)果及分析:

主要是學(xué)會(huì)CMPSB指令的使用,清零DF標(biāo)志使DI,SI遞增,然后實(shí)現(xiàn)一個(gè)字節(jié)一個(gè)字節(jié)的比較。

圖7 字符串匹配設(shè)計(jì)結(jié)果

2.字符串輸入及顯示設(shè)計(jì)

2.1設(shè)計(jì)要求:

要求掌握字符和數(shù)據(jù)的顯示方法。設(shè)計(jì)程序,接收鍵盤鍵入字符串,包括字符和數(shù)字,并在終端顯示。設(shè)計(jì)要求:有鍵入和結(jié)束提示信息,如在鍵入字符串之前提示:INPUT STRING,THE END FLAG IS $。要求統(tǒng)計(jì)鍵入字符串中數(shù)字(0-9)的個(gè)數(shù)和字符的個(gè)數(shù),分行顯示。

2.2設(shè)計(jì)思路:

判斷在0~9范圍內(nèi)DI累加,判斷在a~z和A~Z范圍內(nèi)SI累加,然后將SI和DI即字母?jìng)€(gè)數(shù)和數(shù)字個(gè)數(shù)分別轉(zhuǎn)十進(jìn)制輸出。

2.3程序清單:

DATA    SEGMENT
        pkey  DB  0dh,0ah,"input string,the end flag is $" 
        skey  DB  0dh,0ah,'abc length is:','$'
        tkey  DB  0dh,0ah,'num length is:','$' 
DATA    ENDS

CODE    SEGMENT
        ASSUME  CS:CODE,DS:DATA
        
START:  MOV AX,DATA
        MOV DS,AX
        MOV ES,AX                 ;數(shù)據(jù)段堆棧段初始化
        LEA DX,pkey
        MOV AH,9
        INT 21H                   ;DOS功能調(diào)用,輸出字符串
        MOV DX,'$'
        MOV AH,2
        INT 21H                   ;DOS功能調(diào)用,輸出$
        MOV DX,3AH
        MOV AH,2
        INT 21H                   ;DOS功能調(diào)用,輸出:
        MOV DX,0DH
        MOV AH,2
        INT 21H                   ;DOS功能調(diào)用,歸位
        MOV DX,0AH
        MOV AH,2
        INT 21H                   ;DOS功能調(diào)用,換行
        
        MOV SI,0
        MOV DI,0              ;清零,SI存放字母?jìng)€(gè)數(shù),DI存放數(shù)字個(gè)數(shù)
        
INPUT:  MOV AH,1 
        INT 21H
        CMP AL,'$'
        JZ  INEND
        CMP AL,'z'
        JA  INPUT                   
        CMP AL,'a'
        JAE ABC1                   ;輸入為a~f,SI加1
        CMP AL,'Z'
        JA  INPUT
        CMP AL,'A'                        
        JAE ABC1                   ;輸入為A~F,SI也加1
        CMP AL,'9'
        JA  INPUT
        CMP AL,'0'
        JAE NUM1                   ;輸入為0~9,DI加1
        JMP INPUT  
        
ABC1:  INC SI
       JMP INPUT    
        
NUM1:  INC DI
        JMP INPUT 
                
INEND:  MOV BX,0
        MOV CX,10        
        MOV AX,SI               ;將字母?jìng)€(gè)數(shù)給AX(十六進(jìn)制轉(zhuǎn)十進(jìn)制)  
        
LP1:    MOV DX,0
        DIV CX       ;AX表示的32位數(shù)除以10,商放在AX,余數(shù)放在DX
        PUSH DX                   ;將余數(shù)壓入棧
        INC BX
        CMP AX,0                  ;商不為0就繼續(xù)除10
        JNZ LP1
        LEA DX,skey
        MOV AH,9
        INT 21H                    ;DOS功能調(diào)用,輸出字符串

LLP1:   POP DX                     ;DX中數(shù)據(jù)依次出棧并顯示
        ADD DX,30H
        MOV AH,2
        INT 21H                    ;DOS功能調(diào)用,輸出字母?jìng)€(gè)數(shù)
        DEC BX
        JNZ LLP1
        MOV BX,0 
        MOV AX,DI              ;將數(shù)字個(gè)數(shù)給AX(十六進(jìn)制轉(zhuǎn)十進(jìn)制)
        
LP2:  
        MOV DX,0                 
        DIV CX       ;AX表示的32位數(shù)除以10,商放在AX,余數(shù)放在DX
        PUSH DX                 ;將余數(shù)壓入棧
        INC BX
        CMP AX,0
        JNZ LP2                 ;商不為0就繼續(xù)除10
        LEA DX,tkey
        MOV AH,9
        INT 21H                  ;DOS功能調(diào)用,輸出字符串
        
LLP2:   POP DX                   ;DX中數(shù)據(jù)依次出棧并顯示
        ADD DX,30H
        MOV AH,2
        INT 21H                  ;DOS功能調(diào)用,輸出數(shù)字個(gè)數(shù)
        DEC BX
        JNZ LLP2  
        JMP START
        
CODE    ENDS
        END     START

2.4程序運(yùn)行結(jié)果及分析:

當(dāng)輸入字母或數(shù)字個(gè)數(shù)大于10之后統(tǒng)計(jì)輸出比較麻煩,這里使用了除以10循環(huán)并存入堆棧再依次輸出的方法實(shí)現(xiàn)輸出。

圖8 字符串輸入及顯示設(shè)計(jì)結(jié)果

到此這篇關(guān)于匯編語(yǔ)言系列之匯編實(shí)現(xiàn)字符串操作的文章就介紹到這了,更多相關(guān)匯編字符串操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 匯編語(yǔ)言 輸入10個(gè)數(shù)排序并輸出的實(shí)現(xiàn)

    匯編語(yǔ)言 輸入10個(gè)數(shù)排序并輸出的實(shí)現(xiàn)

    這篇文章主要介紹了匯編語(yǔ)言 輸入10個(gè)數(shù)排序并輸出的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 匯編 JCC指令表與筆記

    匯編 JCC指令表與筆記

    這篇文章主要介紹了匯編 JCC指令表與筆記,需要的朋友可以參考下
    2020-01-01
  • 匯編語(yǔ)言位向量(位映射)的實(shí)現(xiàn)

    匯編語(yǔ)言位向量(位映射)的實(shí)現(xiàn)

    這篇文章主要介紹了匯編語(yǔ)言位向量(位映射)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 匯編實(shí)現(xiàn)冒泡排序的方法示例

    匯編實(shí)現(xiàn)冒泡排序的方法示例

    這篇文章主要介紹了匯編實(shí)現(xiàn)冒泡排序的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 匯編程序設(shè)計(jì)之DOSBox模擬環(huán)境配置

    匯編程序設(shè)計(jì)之DOSBox模擬環(huán)境配置

    最近在學(xué)習(xí)匯編語(yǔ)言設(shè)計(jì),然后上網(wǎng)找關(guān)于匯編程序的編譯軟件,不負(fù)有心人,終于找到了我需要的軟件,值得慶幸
    2023-08-08
  • 匯編基礎(chǔ)程序編寫教程示例

    匯編基礎(chǔ)程序編寫教程示例

    這篇文章主要為大家介紹了匯編基礎(chǔ),程序編寫教程示例,文中附含詳細(xì)的圖文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • 淺析ELF轉(zhuǎn)二進(jìn)制允許把 Binary 文件加載到任意位置

    淺析ELF轉(zhuǎn)二進(jìn)制允許把 Binary 文件加載到任意位置

    本文通過 eip + 偏移地址 實(shí)現(xiàn)了運(yùn)行時(shí)計(jì)算數(shù)據(jù)地址,不再需要把 Binary 文件裝載到固定的位置。本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2020-02-02
  • 詳解如何在Mac上用匯編語(yǔ)言寫HelloWorld

    詳解如何在Mac上用匯編語(yǔ)言寫HelloWorld

    這篇文章主要介紹了詳解如何在Mac上用匯編語(yǔ)言寫HelloWorld,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 計(jì)算機(jī)系統(tǒng)匯編語(yǔ)言和機(jī)器語(yǔ)言深入理解

    計(jì)算機(jī)系統(tǒng)匯編語(yǔ)言和機(jī)器語(yǔ)言深入理解

    這篇文章主要為大家介紹了計(jì)算機(jī)系統(tǒng)匯編語(yǔ)言和機(jī)器語(yǔ)言深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 匯編語(yǔ)言開發(fā)過程詳解

    匯編語(yǔ)言開發(fā)過程詳解

    這篇文章主要介紹了匯編語(yǔ)言開發(fā)過程詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03

最新評(píng)論

汾阳市| 安多县| 垫江县| 盐源县| 北京市| 芦溪县| 吉木萨尔县| 汉寿县| 元江| 兴宁市| 建水县| 杭锦后旗| 布拖县| 巴彦淖尔市| 台南县| 玉山县| 孝义市| 杭锦后旗| 固镇县| 谷城县| 河源市| 罗田县| 旬邑县| 江达县| 长葛市| 繁峙县| 清河县| 青海省| 大城县| 会东县| 和平区| 乡城县| 塘沽区| 仙桃市| 哈巴河县| 小金县| 嘉荫县| 祁连县| 常德市| 韶关市| 图木舒克市|