字串的輸入與顯示(匯程式設計序)

2021-07-25 10:57:23 字數 2035 閱讀 6106

彙編臨近考試,雖然只是考察科目,但學了的東西不能白學,就把自己複習的東西拿出來,以後要回顧也方便

方法一:通過02號單個字元的輸出功能,迴圈輸出得到字串

data segment

strs db "please input a string:$"

buf db 20

db ?

db 20 dup(?)

crlf db 0ah,0dh,'$'

data ends

stacks segment

stack db 200 dup(?)

stacks ends

codes segment

assume cs:codes,ds:data,ss:stacks

start:

mov ax,data

mov ds,ax

lea dx,strs

mov ah,9;輸出功能入口在dx

int 21h

mov ah,10;輸入功能入口在dx

lea dx,buf

int 21h

lea dx,crlf

mov ah,9

int 21h

mov cl,buf+1;cl中放置實際字串長度

;注意,buf+1->cl,並不是把位址給cl,buf+1只是一種定址方式

;結果是cl中存放的是記憶體buf+1的實際內容

lea si,buf+2;si源變址暫存器指向串真正開始的地方

call print;注意,如果用jmp指令,子程式的ret就會返回到start最開始

mov ah,4ch

int 21h

print:

mov dl,[si];

mov ah,2;單個字元輸出入口在dl

int 21h

inc si

dec cl

jnz print

retcodes ends

end start

單步除錯的時候,發現jmp,call指令的差別,

上網找資料查了一下:

jmp無條件跳轉,指令本身無堆疊操作過程。所以一開始若寫成jmp print....ret,會返回最開始,因為無條件跳轉時不會保留當前ip指標

call子程式呼叫指令,指令本身有堆疊操作過程。注意子程式最後要ret

方法二:通過09號字串輸出功能,輸出字串

data segment

strs db "please input a string:$"

buf db 20

db ?

db 20 dup(?)

crlf db 0ah,0dh,'$'

data ends

stacks segment

stack db 200 dup(?)

stacks ends

codes segment

assume cs:codes,ds:data,ss:stacks

start:

mov ax,data

mov ds,ax

lea dx,strs

mov ah,9;輸出功能入口在dx

int 21h

mov ah,10;輸入功能入口在dx

lea dx,buf

int 21h

lea dx,crlf

mov ah,9

int 21h

mov al,buf+1;al中先放入字串實際個數

add al,2;因為buf第乙個位元組放的是最大長度,第二個是實際長度

;只有2+串實際長度才是串的末尾,(因為需要在末尾加上結束符)

mov ah,0

mov si,ax

mov buf[si],24h;'$'==24h

lea dx,buf+2;

mov ah,9

int 21h

mov ah,4ch

int 21h

codes ends

end start

匯程式設計序 字串加密

1 程式設計為datasg段中字串中的每個字元加密,加密規則是 每個字元的ascii值加4。加密好的字元寫在待加密字元的後面 assume cs codesg,ds datasg datasg segment db aah,i love you db datasg ends codesg segme...

匯程式設計序 實現字串中去除空格字元

程式需求 有乙個首位址為string的字串 剔除string中所有的空格字元。請從字串最後乙個字元開始逐個向前判斷 並進行處理。程式設計思路 假設串以0作為結束標誌,從右向左掃瞄,遇到空格後,將其後的所有字元向前移動乙個位置,直到該字元為止。由於串長是動態變化的,所以需要設定三個指標,tailp指向...

匯程式設計序 統計字元 A 在字串中出現的次數

str是乙個以 為結束的字串,如下程式統計字元 a 在字串中出現的次數,並將統計的結果 送到count單元,用組合語言完成此程式的設計 data segment data segment 定義乙個資料段 str db aaaacahjsjisjaidsajis 定義str串 在彙編中終止符是 c語言...