美文网首页
[汇编语言] 实验11

[汇编语言] 实验11

作者: 耿杰 | 来源:发表于2019-08-04 10:56 被阅读0次

    一、编写一个子程序,将包含任意字符,以0结尾的字符串的小写字母转变成大写字母,描述如下:

    名称:letters
    功能:将以0结尾的字符串中的小写字母转变成大写字母
    参数:ds:si指向字符串首地址

    应用举例

    assume cs:codesg
    
    datasg segment
        db "Beginner's All-purpose Symbolic Instruction Code.", 0
    datasg ends
    
    codesg segment
        begin: mov ax, datasg
           mov ds, ax
           mov si, 0
           call letterc
            
           mov ax, 4c00h
           int 21h
            
        letterc:
                    :
                    :
           
    codesg ends
    end begin
    

    答案

    assume cs:codesg
    
    datasg segment
        db "Beginner's All-purpose Symbolic Instruction Code.", 0
    datasg ends
    
    codesg segment
        begin: mov ax, datasg
           mov ds, ax
           mov si, 0
           call letterc
    
           mov ax, 4c00h
           int 21h
            
        letterc:
           // 暂时寄存器的值
           push ax
           push bx
           push cx
           push si
           // 清空cx的值   
           mov ch, 0
           
         s0: 
           // 如果读取到0,就跳转至标号处ok处
           mov cl, [si]
           jcxz ok
            
           // cl - 64h 如果结果<0的话,就跳转至标号s1处
           cmp cl, 64h
           jb s1
           // cl - 7Ah 如果结果大于7A处的话,就跳转至标号s1处
           cmp cl, 7Ah
           ja s1
           // 来到说明是小写字母了,小写字母转大写字母只要 & 11011111就可以了
           and cl,11011111b
           // 赋值给上面对应的内存单元
           mov [si], cl
           // 循环读取
           jmp s0
                  
         s1:
           // si ++,每次读取自增一个偏移地址
           inc si
           jmp s0  
          
         // 结束方法,还原寄存器的值,并退出 
         ok: 
           pop si
           pop cx
           pop bx
           pop ax
           ret
           
    codesg ends
    end begin
    

    相关文章

      网友评论

          本文标题:[汇编语言] 实验11

          本文链接:https://www.haomeiwen.com/subject/xmvedctx.html