汇编实现字符串大小写转换

来源:互联网 发布:文明网络标语 编辑:程序博客网 时间:2024/05/22 05:19

使用汇编编程,可以直接访问内存中的数据,对数据进行相关操作,将data段字符串都转换成大写字母。
例子:

assume cs:code,ds:data,ss:stackstack segment        dw 0,0,0,0,0,0,0,0        dw 0,0,0,0,0,0,0,0stack endsdata segment        db '1. Basic        '        db '2. Test         '        db '3. Information  'data endscode segment    start:mov ax,stack      ;设置栈          mov ss,ax          mov sp,32          mov ax,data                 mov ds,ax          mov bx,0          mov si,3          mov cx,3    upcol:push cx          push si          mov cx,13    uprow:mov al,ds:[bx+si]          and al,11011111B          mov ds:[bx+si],al          inc si          loop uprow          add bx,16          pop si          pop cx          loop upcol          mov ax,4c00h          int 21hcode endsend start

小写字母的ASCII码值,比大写字母大20H。ASSCII码的二进制形式来看,除第五位外,大写字母和小写字母的其他各位都是一样。大写字母ASCII码的第五位为0,小写字母第五位为1。所以代码中

and al,11011111B
可以实现al中的字符变为大写字母。

当将al中的字符变成小写字母时:

or al,00100000B

如果需要保存多个数据,使用寄存器可能不够,一般使用内存来保存数据,一般来说,在需要暂存数据时,我们都应该使用过栈。

通过这段代码我们可以学到:

  • 二重循环的处理方式
  • 临时数据存储时栈的应用
  • 大小写转换方法