汇编语言 : 子程序设计 ( 字符串转大写 )


简介 :

设计一个程序 : 
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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容