[026][汇编语言]ASCII字符显示、字母大小写转换

and or 指令

  • and 将相应位设为0
  • or 将相应位设为1
Mov al,01100011B
And al,00111011B

Mov al,01100011B
Or  al,00111011B
[026][汇编语言]ASCII字符显示、字母大小写转换_第1张图片
and or 指令

ASCII 码

  • 文本编辑软件内存 中取出 61H ,将其送到 显卡显存 中;
  • 工作在文本模式下的 显卡,用 ASCII码 的规则解释 显存 中的内容;
  • 61H 被当作字符 'a'
  • 显卡 驱动 显示器,将字符 ‘a’ 的图像画在屏幕上;

ASCII 码查询

  • http://ascii.911cha.com/

显示ASCII 字符

assume cs:code,ds:data

data segment
    db 'unIX'
    db 'foRX'
data ends

code segment
start:  mov al,'a'
        mov bl,'b'
        mov ax,4c00H
        int 21H
    code ends
    end start
[026][汇编语言]ASCII字符显示、字母大小写转换_第2张图片
程序从 DS+10H=076AH 段开始.png
  • DS寄存器内容为075AH
  • 程序从DS+10H=076AH段开始
  • data段是程序的第一个段,data段的段地址也为076AH

写入对应的ASCII

[026][汇编语言]ASCII字符显示、字母大小写转换_第3张图片
写入对应ASCII码

ASCII字母大小写转换

assume cs:codesg,ds:datasg

datasg segment
    db  'BaSiC'
    db  'iNfOrMaTiOn'
datasg ends

codesg segment
    start:  mov ax,datasg
            mov ds,ax
            
            mov bx,0
            mov cx,5
            s:  mov al,[bx]
                and al,11011111B
                mov [bx],al
                inc bx
                loop s
                
            mov bx,5
            mov cx,11
            s0: mov al,[bx]
                or  al,00100000B
                mov [bx],al
                inc bx
                loop s0
                
            mov ax,4c00H
            int 21H
    
    codesg ends
    end start
[026][汇编语言]ASCII字符显示、字母大小写转换_第4张图片
data 段的数据.png
[026][汇编语言]ASCII字符显示、字母大小写转换_第5张图片
ASCII 码大小写转换.png
  • 程序执行前, 根据DS+10H找到data段的段地址
  • ASCII码 大小写字符区别只在 二进制的第5位
A  0100 0001
a  0110 0001

大写字母ABCD 第5位是 0
小写字母abcd 第5位是 1

一律大写
 and al,11011111B
一律小写
 or  al,00100000B

你可能感兴趣的:([026][汇编语言]ASCII字符显示、字母大小写转换)