编写一个汇编语言程序,将字符串"Hello World"中的全部小写字母转换为大写字母,并存放回原地址处。

P176
4.10

编程思路:首先DATA段中,定义string存放字符串"Hello World",LEN为字符串string长度;其次,BX获取string的有效地址,将string存放的字符串赋值给AL,通过AL进行与’a’和’z’这个范围进行比较,若在该范围表示为小写字母,则需要转换为大写字母,即AL-20H(小写字母要比大写字母所对应的ASCII码值大20H),所以AL-20H就是小写字母所对应的大写字母。

代码如下:

DATA SEGMENT
string  DB  "Hello World!"    ;将需要转换的字符串存放到string中,定义类型为DB型
LEN EQU $-string            ;等值伪指令EQU,将LEN表示string的长度
DATA    ENDS
CODE    SEGMENTASSUME   CS:CODE,DS:DATA
START:  MOV AX,DATA ;由于DATA为立即数,不能用赋值给段寄存器DS,需要借助AX通用寄存器MOV   DS,AX   ;将AX赋值给DSMOV    BX,OFFSET string    ;BX获取string的有效地址用于取出string中的字符串MOV  CL,LEN  ;CL为string字符串的长度
NEXT:   MOV AL,[BX] ;此时[BX]为string所存放字符串的内容,赋值给ALCMP AL,'a'    ;由于是DB字节类型,只需要将AL的一个字节单元与单个字符'a'进行比较JB LOP     ;JB为小于跳转,即AL存放的字节单元的内容所对应的ASCII码值小于'a'所对应的ASCII码值,跳转到LOP标签处 否则不跳转执行下一条指令CMP AL,'z'    ;若执行到此条指令,代表AL>='a',接下来需要与'z'进行比较即可JA LOP     ;JA为大于跳转,即AL存放的字节单元的内容所对应的ASCII码值大于'z'所对应的ASCII码值,跳转到LOP标签处 否则不跳转执行下一条指令  SUB   AL,20H  ;执行到此条指令,表示以及确定此时的AL为小写字母,AL-20H表示将小写字母转换为所对应的大写字母(小写字母比对应的大写字母的ASCII码值大20H)MOV [BX],AL ;将小写字母转换为对应的大写字母结束后,结果AL存放回原来的物理地址[BX]处
LOP:    INC BX      ;BX+1(因为DB字节类型),表示判断下一个字节单元存放的字符串DEC  CL      ;CL-1,表示字符串string所需要判断字符的长度减一JNZ NEXT    ;若CL不为0,即字符串string仍有需要判断的字符,跳转到NEXT标签处MOV AH,4CH  ;调用4CH号功能,返回DOS操作系统指令INT 21H     ;终止当前程序的运行,并返回DOS系统
CODE    ENDSEND START

编写一个汇编语言程序,将字符串Hello World中的全部小写字母转换为大写字母,并存放回原地址处。相关推荐

  1. 编写一个汇编语言程序,完成以下要求。从BUF单元处定义有10个带符号字数据:-1,3,24,94,62,72,55,0,-48,99,试找出他们中的最大值和平均值,并以此分别存放至该数据区的后两个单元

    编写一个汇编语言程序,完成以下要求.从BUF单元处定义有10个带符号字数据:-1,3,24,94,62,72,55,0,-48,99,试找出他们中的最大值和平均值,并以此分别存放至该数据区的后两个单元 ...

  2. 试编写一个汇编语言程序,要求从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数

    试编写一个汇编语言程序,要求从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数 data segment data ends stack segment stack dw 30h dup ...

  3. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来

    试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来 DATA SEGMENT DATA ENDS STACK SEGMENT STACK ENDS CODE SEGMENT ASSUM ...

  4. 编写一个汇编语言程序,有一个50个数据的数据区,找出最大数和最小数,分别存放在AX和BX寄存器中

    [微机原理]-汇编题 编写一个汇编语言程序,有一个50个数据的数据区,找出最大数和最小数,分别存放在AX和BX寄存器中. DATA SEGMENT NUM DB 21H,34,23H...DATA E ...

  5. AX寄存器中存放着16位二进制数。试编写一个汇编语言程序,将这4位十六进制数分别转换为相应的ASCⅡ码,并依次存放到PLUS数组的4个字节中去,要求用调用子程序的方法实现

    [微机原理]-汇编题 AX寄存器中存放着16位二进制数.试编写一个汇编语言程序,将这4位十六进制数分别转换为相应的ASCⅡ码,并依次存放到PLUS数组的4个字节中去,要求用调用子程序的方法实现. 方法 ...

  6. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。(两种方法/每步详解)

    试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来. 小写变大写的实现方法: 1.SUB AL,32 ; 只能满足于输入只是小写的时候 2. AND AL,11011111B ; 该方 ...

  7. 【汇编】 编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

    编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来.

  8. 微型计算机使用的键盘大写,键盘输入字符串,小写字母转换为大写字母,其余字符不变...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ;8086汇编语言 ;从键盘输入一字符串,将其中所有小写字母转换为大写字母,其余字符不变,将结果在屏幕上输出. DATA SEGMENT ;数据段 COU ...

  9. C语言 把字符串s中所有小写字母转换为大写字母,其他字符不变

    在 C 语言中,可以使用以下方法来将字符串 s 中的所有小写字母转换为大写字母: #include <stdio.h> #include <ctype.h>int main() ...

最新文章

  1. Go实现简单的K-V存储
  2. 运营资源很少的时候,怎么运营自己的产品(完结)
  3. netty依赖_高性能:《一遍文章带你看懂 Netty世界》
  4. linux iopen i2c dev,i2c-dev - Linux驱动子系统之I2C_Linux编程_Linux公社-Linux系统门户网站...
  5. 《数据结构上机实验(C语言实现)》笔记(2 / 12):线性表
  6. android优美列表页面,android listview 列表 点击列表进入详细页面
  7. mysql未监控在3306_监控MySQL或Web服务是否正常
  8. 开课吧:微服务与DDD解析
  9. STK之Commu模块之二-仿真同步卫星与地面站通信显示EIRP分布
  10. 来了!2020 云栖大会 蚂蚁金融科技产品能力再升级
  11. 直播继续搅局双11?
  12. 电脑如何设置uefi启动 电脑设置uefi启动方法
  13. 关于股权激励方案建议参考
  14. CMDB资产管理系统
  15. 人脸识别主要机算法原理
  16. 裁员、年终奖减半:在公司打工,你永远不知道意外和明天哪个先来
  17. Android黑白照片上色APP,Colorize上色APP
  18. 真假金士顿U盘大拆解
  19. JAVA通过itextpdf实现PDF骑缝章
  20. 算法-22-字符串的排序算法(四种排序)

热门文章

  1. scss-字符串连接符
  2. (2017.9.27) 自定义列表项 list-style 使用心得
  3. html5中如何去掉input type date默认
  4. Tomcat启用HTTPS协议配置过程
  5. Android View 的滑动
  6. 使用镜像源安装EASY_INSTALL和PIP教程
  7. androidstudio新建项目中在布局文件中不显示title的方法
  8. 为移动端网页构造快速响应按钮
  9. WCF Testing Tool(转)
  10. 详细讲解Java中log4j的使用方法