簡介 :
設計一個子程序 , 功能 :
將一個全是字母 , 以 0 結尾的字符串 , 轉化為大寫
分析 :
如果我們實現不知道字符串的長度 , 那么我們應該如何去將一個小寫單詞轉成大寫呢 ?
可以很容易就想到 , 我們一般是使用 00000000B 來標示一個字符串的結尾
那么我們只需要在轉換的時候對字符進行判斷 , 如果這個字符為 0 了 , 那么就說明這個字符串已經結束
就停止轉換
代碼 :
assume cs:code,ds:data,ss:stack
data segment
db "Freedom",0
data ends
stack segment
db 16 dup(0)
stack ends
code segment
start:
; 初始化數據段寄存器
mov ax, data
mov ds, ax
; 初始化棧段寄存器
mov ax, stack
mov ss, ax
; 初始化棧偏移地址寄存器
mov sp, 00A0H
; 初始化指向字符的寄存器
mov si, 0
call string_upper
; 結束程序
jmp finish
; 功能 : 將一個小寫的英文單詞的所有字符轉換為大寫
; 參數 : si 為該字符串首個字符在內存中數據段的偏移地址
; 返回 : None
string_upper:
each_char:
mov ch, 00H
mov cl, ds:[si]
jcxz success ; 當 cx 為 0 , 則說明遇到了 0 的字符 , 這個字符串也就結束了
call char_upper
mov ds:[si], cl ; 將大寫字符再存回去
inc si
jmp each_char
success:
ret
; 功能 : 將一個小寫英文字符轉換為大寫字符
; 參數 : cl
; 返回 : cl
char_upper:
and cl, 11011111B ; 轉大寫
ret
finish:
mov ax,4cH
int 21H
code ends
end start
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。