美文网首页
[汇编语言] 实验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