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

2021-09-02 17:48:29 字數 1468 閱讀 3689

;str是乙個以'$'為結束的字串,如下程式統計字元'a'在字串中出現的次數,並將統計的結果

;送到count單元,用組合語言完成此程式的設計

data segment ; //data segment 定義乙個資料段

str db 'aaaacahjsjisjaidsajis','$';定義str串 在彙編中終止符是'$' c語言中是'\0' 因此定義'$'結束符

count db 0 ;定義count位元組單位 初始值0

data ends ;資料段結束

stact segment para stack ;建立乙個堆疊段 名稱stact segment 段定義語句 para:屬於定位型別預設是para 節

buffer db 128 dup(0) ;定義100個位元組的堆疊空間

stact ends ;堆疊結束標誌

code segment ;定義乙個**段 code segment

assume ds:data,cs:code,ss:stack;分配段暫存器 assume ds:data,cs:code,ss:stack 段分配語句

start:mov ax,data ;start標號 將data的段位址賦值給ax

mov ds,ax ;將ax中的data的段位址賦值給ds

mov cl,0 ;cl 用來計數'a'出現的次數

lea si,str ;裝入str有效位址到si 這裡有乙個知識點就是對於字串操作

;源串位於當前資料段中,ds定址 si做指標

;目標串位於當前附加段中 es定址 di做指標

lp1:mov al,[si] ;取str中的乙個字元送到暫存器

cmp al,'a' ;將al中取到的乙個位元組的字元與'a'比較

jz sum ;如果是'a' 字元轉統計 jz如果是0 表名al中的字元與'a'相等

cmp al,'$' ;比較是否為字串結束符 判斷是否是結束標誌'$'

jz exit ;如果是$ 轉

inc si ;調整si 對si加1

jmp lp1 ;jmp 跳轉到lp1 重新執行

sum:inc cl ;如果是'a'字元 將cl暫存器 加+1

inc si ;對偏移位址加1

jmp lp1 ;跳轉到lp1中

exit: mov count,cl ;結果送到count單元

mov ah,4ch ;程式終止

int 21h ;返回dos

code 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指向...

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

彙編臨近考試,雖然只是考察科目,但學了的東西不能白學,就把自己複習的東西拿出來,以後要回顧也方便 方法一 通過02號單個字元的輸出功能,迴圈輸出得到字串 data segment strs db please input a string buf db 20 db db 20 dup crlf db...