;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...