(組合語言實現)用字串處理指令編制程式,處理字串的比較和查詢,顯示結果。
要求:(1)字串的比較函式中,乙個字串在資料段定義,另乙個字串在程式執行時從鍵盤輸入,必須定義鍵盤緩衝區。指出不相等的位置。
(2)在字串中查詢某個字元,並指出找到的位置。
第一問:
data
segment
buff
db255
dup('?');定義乙個緩衝區,緩衝區長度比需要比較的字串長即可,緩衝區的?需要加單引號
data
ends
extsegment
mess
db'www.omegaxyz.com$';注意最後一定要加$
extends
code
segment
assume
cs:code,ds
:data,es
:ext
start
:mov
ax,data
movds,ax
movax,ext
moves,ax
;套路lea
dx,buff
movah,0ah
int21h
;使用dos 0ah命令向緩衝區輸入字串
movcl,buff+1
;注意dos 0ah命令實際輸入的字元數量儲存在記憶體dx+1中(見附錄),即buff+1,因此把buff+1的值給cl
leasi,buff+2
;需要使用cmpsb命令,從buff+2開始是真正輸入的值賦值給si
leadi,mess
;被比較的原始串
cldmov
bl,'0'
;為了顯示串開始不同的地方,設定bl的初始值,由於顯示的是ascii碼所代表的值,因此把『0』賦值給bl
xy:inc
blcmpsb
loopz
xy;迴圈一次bl+1
jzyes
movdl,bl
jmp *********x
yes:mov
dl,'y'
*********x:
movah,2
int21h
;顯示mov
ah,4ch
int21h
code
ends
endstart
第二問:
ext
segment
mess
db'www.omegaxyz.com$'
extends
;注意要使用scasb命令必須將資料儲存在es中
code
segment
assume
cs:code,es
:ext
start
:mov
ax,ext
moves,ax
movah,01h
int21h
;呼叫dos
01h命令,從鍵盤中輸入1個字元並儲存在al中
movcx,17
leadi,mess
cldmov
bl,'0'
;為了尋找所求字元位置,設定乙個暫存器用來儲存
xy:inc
blscasb
loopnz
xy;loopnz
cx不等於0,zf=0即不相等時迴圈
jzyes
movdl,'n'
;n說明沒有查詢到
jmpdisp
yes:mov
dl,bl
disp
:mov
ah,2
int21h
movah,4ch
int21h
code
ends
endstart
組合語言(四)之比較字串
輸入兩個字串,比較字串是否相同 程式執行 mov ax,datas 初始化ds mov ds,ax 輸出輸入string1提示 lea dx,input1prompt mov ah,9 int 21h 輸入string1 lea dx,string1maxlength mov ah,10 int 2...
計算字串長度 組合語言
設有一字串存放在以 buf 為首址的資料區中,其最後一字元 作為結束標誌,計算該字串的長度並輸出 datas segment buf db 20,20 dup datas ends stacks segment stacks ends codes segment assume cs codes,ds...
組合語言巧妙排序字串
用組合語言實現任意輸入字串排序,我主要是採用先分組,然後分別排序,在把兩個組合起來排序的使用演算法。在我的輸出結果頁面中,總共會有6行,第一行表示的是你所輸入的我們需要排序的字串,第二行表示的是將字串分為兩組其中的第一組,第三行表示的是將字串分為兩組其中的第二組,第四行表示的是對分成的第一組排序得到...