大小写转换

规律:大写字母的ASCII值+20H=小写字母的ASCII值。在ASCII值中,大写字母第5位为0,小写字母第5位为1。所以通过and、or指令可以方便地进行大小写转换,而不需要提前判断字母的大小写。
      如:将al中的字符改为大写字母的方法:and al,11011111B
      将al中的字符改为小写字母的方法:or al,00100000B

实验6

将datasg段中的每个单词的前4个字母改为大写字母。

 assume cs:codesg,ds:datasg,ss:stacksgstacksg segmentdw 0,0,0,0,0,0,0,0stacksg endsdatasg segmentdb '1. display           '        每个字符串的长度刚好是16字节db '2. brows             'db '3. replace           'db '4. modify            'datasg endscodesg segmentstart:mov ax,datasgmov ds,ax        初始化数据段mov ax,stacksgmov ss,axmov sp,10h     初始化栈段mov bx,0mov cx,4        一共4行s: mov si,3     每一行中的第一个起始字符的下标push cx          将外层的循环次数入栈mov cx,4      每一行共计4个字符需要改动s0:mov al,[bx+si]and al,11011111Bmov [bx+si],alinc siloop s0pop cx           将外层的循环次数出栈add bx,10hloop smov ax,4c00hint 21hcodesg endsend start
做一点小改动

将datasg段中的每个单词改为大写字母。(提示:空格的ASCII值为20h,要用到前面讲过的条件转移指令jcx或je)

 assume cs:codesg,ds:datasg,ss:stacksgstacksg segmentdw 0,0,0,0,0,0,0,0stacksg endsdatasg segmentdb '1. display           '        每个字符串的长度刚好是16字节db '2. brows             'db '3. replace           'db '4. modify            'datasg endscodesg segmentstart:mov ax,datasgmov ds,ax        初始化数据段mov ax,stacksgmov ss,axmov sp,10h     初始化栈段mov bx,0mov cx,4        一共4行s: mov si,3     每一行的第一个字符起始地址为3push cx          将外层的循环次数入栈s0:mov cl,[bx+si]    //mov al,[bx+si]mov ch,0sub cx,20h     //cmp al,20h    判断是否为空格字符jcxz done      //je done   如果是的话表示本行的所有字符都已经转换过了,进入下一行mov al,[bx+si]and al,11011111Bmov [bx+si],alinc sijmp short s0done:pop cx           将外层的循环次数出栈add bx,10hloop smov ax,4c00hint 21hcodesg endsend start

汇编语言随笔(6)-大小写转换与实验6(双重循环:需要保存cx值)相关推荐

  1. 汇编语言 字母的大小写转换

    大小写转换问题 A 41H 0100 0001B or 0010 0000B 转换为小写 B 42H 0100 0010B C 43H 0100 0011B D 44H 0100 0100Ba 61H ...

  2. 汇编语言随笔(8)-实验9(显示字符串)、实验10(子程序:除法溢出,数值到字符串的转换)和课程设计1

    实验9 编程,在屏幕中间分别显示绿色,绿底红色,白底蓝色的字符串'welcome to masm!'.       80x25彩色字符模式下的显示缓冲区,每页可以显示25行,每行80个字符,其中每个字 ...

  3. 汇编语言大小写转换问题

    首先,我们观察一下,大小写字母对应的ASCII码有何联系 不难发现,'A'+20H='a',但在我们写源程序的时候,就要判断字符是大写还是小写,然后我们来决定是该 +20H,还是 -20H.但似乎在汇 ...

  4. 汇编语言:简单的英文字母大小写转换

    简单的英文字母大小写转换

  5. 巧用位运算实现大小写转换

    今天看王爽老师的<汇编语言>时,很有收获,不论是技术还是思考方式. 任务是将字符串进行大小写转换,但是还暂时不会用分支判断语句(而且这样的效率也不是最高的,有点类似于高级语言了). &qu ...

  6. Python 零基础入门到实战(一)笔记:内置对象、浅拷贝、深拷贝、计算圆面积、凯撒密码、英文大小写转换、输入国家打印出国家名和首都、输入数字英文输出、统计句子中的字母数量、猜随机数

    Python入门到实战(一) 为什么写这篇文章 Part 1 入门部分 什么是编程语言? Python的优势 目前应用 特点 Part 2 6种内置对象 1 整数.浮点数 2 字符串 3 列表 4 元 ...

  7. c++ 大小写转换字符转数字

    大小写转换&&字符转数字,实验笔记. int main() { //其实就是对ASCii表的操作string s;char a = 'a';int b = a - '0'; //字符转 ...

  8. Excel大小写转换函数

    Excel中的大小写转换函数 (1).转换为全部小写字母:lower函数 (2).转换为全部大写字母:upper函数 (3).转换为首字母大写,其余小写字母:proper函数 三种函数的使用方式,如下 ...

  9. C++知识精讲11——字母大小写转换讲解(单个字母基础版)

    本文我们来讲C++知识精讲的第11篇,C++知识精讲11--字母大小写转换讲解(单个字母基础版),此专栏会讲许多,各种各样的类型,如果喜欢此专栏请订阅持续关注,感谢大家的支持.接下来,进入今天的知识精 ...

最新文章

  1. C++头文件中预编译宏的目的
  2. 设为首页 收藏(IE可用)
  3. 按键精灵脚本 php,HTML_按键精灵 脚本-学习VBS的一个不错的教程,今天我就从总体上对VBS进行介 - phpStudy...
  4. struts2导入excel模板_「微干货」“人员其他数据导入”应用介绍
  5. 关于redis的文章
  6. Ubuntu Linux将支持所有树莓派设备
  7. abctod_123456
  8. ldap radius_在LDAP上使用RADIUS的好处
  9. s 修饰符:dotAll 模式
  10. 笔记 编写可读性代码的艺术
  11. mysql2018漏洞_MySQL多个远程安全漏洞CVE-2018-2562/91 大批版本受影响
  12. HTML5+CSS3 Pink老师课后作业——小米logo过渡切换的实现
  13. 2020编程入门先学什么
  14. 精忠报国用计算机弹,同人精忠报国岳飞传
  15. 温莎大学的计算机科学,温莎大学荣誉计算机科学专业本科.pdf
  16. 计算机连接网络需要什么,宽带怎么安装需要什么_安装宽带步骤-系统城
  17. DL4J中文文档/开始/从源码构建
  18. 基于TT 双WAN固件(dualwan)下的QOS脚本 很给力
  19. Raspberry Pi 3 -- Respeaker 4-mic的基本使用
  20. HDU1435 Stable Match 【稳定婚姻问题】

热门文章

  1. 云计算入门学习资料,linux云计算学习大纲
  2. 工作中git 操作汇总
  3. 160613、MyBatis insert操作返回主键
  4. poj 2891 Strange Way to Express Integers 2012-09-05
  5. hdu5253最小生成树
  6. hdu2158 最短区间版大家来找碴
  7. hdu2962 二分 + spfa
  8. 【Linux 内核】CFS 调度器 ⑥ ( CFS 调度器就绪队列 cfs_rq | Linux 内核调度实体 sched_entity | “ 红黑树 “ 数据结构 rb_root_cached )
  9. 【Groovy】集合遍历 ( 操作符重载 | 集合中的 “ + “ 操作符重载 | 集合中的 “ - “ 操作符重载 | 代码示例 )
  10. 【Android 插件化】使用 PluginKiller 帮助应用开发者规避发布的 APK 安装包被作为插件的风险 ( 验证应用是否运行在插件化引擎中 )