美文网首页
汇编7.9-将datasg段中每个单词的前4个字母改为大写字母

汇编7.9-将datasg段中每个单词的前4个字母改为大写字母

作者: cyh老崔 | 来源:发表于2020-09-25 15:08 被阅读0次

1. 题目: 有字符串如下, 将前4个字母改为大写字母

datasg segment
        db '1. display      '
        db '2. brows        '
        db '3. replace      '
        db '4. modify       '
datasg ends

每一段字符串的长度都是16, 即后面有补空格, 存储结构如下:


datasg数据存储结构

2. 实现如下:

assume cs:codesg, ds:datasg, ss: stacksg
stacksg segment
        dw 0,0,0,0,0,0,0,0
stacksg ends

datasg segment
        db '1. display      '
        db '2. brows        '
        db '3. replace      '
        db '4. modify       '
datasg ends

codesg segment
  start:
        mov ax, stacksg
        mov ss, ax
        mov ax, datasg
        mov ds, ax
        mov bx, 0
        mov cx, 4
    s0: push cx
        mov si, 0
        mov cx, 4

    s1: mov al, [bx+3+si]
        and al, 11011111b
        mov [bx+3+si], al
        inc si
        loop s1

        add bx, 16
        pop cx
        loop s0

        mov ax, 4c00h
        int 21h

codesg ends
end start

3. 运行前后, 查看内存数据对比:

数据对比

注: 英文字母小写变大写, 只要其二进制的第5位改为0; 大写变小写, 第5位为1. 因为第5位为2的5次方==32, 如:

  • A 的ASCII为65, 二进制为0100 0001
  • a 的ASCII为97, 二进制为0110 0001

相关文章

网友评论

      本文标题:汇编7.9-将datasg段中每个单词的前4个字母改为大写字母

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