匯編語言 : 子程序設計 ( 字符串轉大寫 )


簡介 :

設計一個程序 : 
data segment
  db "Hello world"
  db 11 dup(0)
data ends
將第一個字符串中的所有字符轉換為大寫字符 , 并對應地保存在下面的內存單元中
要求使用子程序設計的思想 , 小寫轉大寫作為一個子程序進行設計

代碼 :

assume cs:code,ds:data,ss:stack

data segment
    db "HelloASM"
    db 8 dup(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 cx, 0008H
        ; 初始化指向字符的寄存器
        mov si, 0
        mov di, 0
    my_loop:
        mov bl, ds:[si]
        call upper
        mov ds:[di + 8], bl
        inc si
        inc di
        loop my_loop ; 注意循環結束后一定要跳到正常結束程序的 finish 標號
        ; 否則 upper 還會執行一次 , 這樣程序就會錯亂
        jmp finish
    ; 功能 : 將一個小寫字符轉換為大寫字符
    ; 參數 : bl
    ; 返回 : bl
    upper:
        and bx, 11011111B ; 轉大寫
        ret

    finish:
        mov ax,4cH
        int 21H

code ends

end start
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容