日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

微机原理实验1:字符串匹配程序实验

發(fā)布時間:2023/12/2 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微机原理实验1:字符串匹配程序实验 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、實驗目的

1.掌握分支程序的設計方法。
2.熟悉在PC機上建立、匯編、鏈接、調(diào)試和運行8086匯編程序的過程。

二、實驗內(nèi)容

1.比較兩個字符串STRING1和STRING2所含的字符是否相同,若相同則顯示‘Match’,否則顯示‘No Match’。
2.修改程序,顯示所比較字符的個數(shù)。

三、程序清單

DATAREA SEGMENT ; 數(shù)據(jù)段 STRING1 DB 'Move the cursor backward.' STRING2 DB 'Move the cursor backward.'MESS1 DB 'Match.',13,10,'$' MESS2 DB 'No match.',13,10,'$' DATAREA ENDS PROGNAM SEGMENT ; 代碼段 MAIN PROC FARASSUME CS:PROGNAM,DS:DATAREA,ES:DATAREA START: PUSH DSSUB AX,AXPUSH AXMOV AX,DATAREAMOV DS,AX ; DS指向數(shù)據(jù)段MOV ES,AX ; ES指向數(shù)據(jù)段LEA SI,STRING1 ; 源數(shù)據(jù)寄存器LEA DI,STRING2 ; 目的數(shù)據(jù)寄存器CLD ; DF=0,向高地址增加MOV CX,STRING2-STRING1 ; 字符串STRING1的長度REPZ CMPSB ; 當CX!=0并且ZF=1時 重復執(zhí)行后邊的指令,每執(zhí)行一次CX的值減1 ;CMPSB 指令比較 SI 指向的內(nèi)存操作數(shù)與 DI 指向的內(nèi)存操作數(shù),按字節(jié)比較JZ MATCH ; 比較完ZF=1則 匹配,否則 不匹配LEA DX,MESS2JMP DISP MATCH: LEA DX,MESS1 DISP: MOV AH,09HINT 21HRET MAIN ENDP PROGNAM ENDSEND START

四、實驗過程

1.用編輯器建立源文件D101-1.ASM

2.用匯編程序MASM.EXE對源文件進行匯編,產(chǎn)生目標文件,再用連接程序LINK產(chǎn)生可執(zhí)行文件

3.使用調(diào)試工具DEBUG進行程序調(diào)試
先用U命令反匯編,以便了解指令地址。顯示結果如下∶

將斷點設置在程序的主要部分運行前。

用G命令將程序運行到寄存器初始化后暫停,查看當前數(shù)據(jù)段中的值,如下:

用R命令查看當前各個寄存器中的值如下:

用E命令將數(shù)據(jù)區(qū)的字符串backward,修改為forward.,如下:

五、實驗結果分析

1.程序執(zhí)行結果

通過E命令修改STRING2為“Move the cursor forward.”后再運行程序,得到結果為“No match.”,即兩個字符串內(nèi)容不相同,如下。但使用L命令重新加載程序,結果還是“Match.”,這正說明了DEBUG調(diào)試期間所修改的數(shù)據(jù)段或代碼段的內(nèi)容只是修改內(nèi)存中的內(nèi)容,而磁盤文件并未改變。

重新進入編輯器,通過編輯代碼修改字符串的內(nèi)容,使它們互不相同,如下:

然后重新匯編、連接、執(zhí)行。其運行結果應為: No match!

2.分析總結
首先,實驗指導書上所給的程序缺少2行代碼需要自己進行補齊,才可以實現(xiàn)本實驗的目的和該程序的功能,這兩行代碼分別是JZ MATCH和JMP DISP。其中,第一句代碼的功能是在CX寄存器遞減到值為0時,如果此時源操作地址和目的操作地址中的字節(jié)相同,那么說明兩個字符串是相同的,則跳轉(zhuǎn)到匹配標號;否則不跳轉(zhuǎn),執(zhí)行第二句JMP指令。

其次,該實驗的核心所在是指令REPZ CMPSB,只要把該條指令的執(zhí)行過程搞明白了,那么整個實驗原理基本就沒什么問題了,該條指令中REPZ其含義為:當CX!=0并且ZF=1時,則重復執(zhí)行后面緊接著的指令即CMPSB,每執(zhí)行一次CX的值減1;而CMPSB指令的含義為:按字節(jié)比較比較SI指向的內(nèi)存操作數(shù)與DI指向的內(nèi)存操作數(shù),也就是對兩個操作數(shù)進行相減的操作,顯然該操作影響標志位,因此其后面一般跟隨跳轉(zhuǎn)指令,在該程序中為JZ MATCH。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的微机原理实验1:字符串匹配程序实验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。