已知字符串STRING以‘$’为结束标志;统计其中小写字母的个数,结果送到COUNT单元,并把该字符串中的小写字母变成大写字母,其它字符保持不变。要求分别在屏幕上输出原字符串以及修改后的字符串。

2023-05-16

只为记录汇编作业

题目:已知字符串STRING以‘$’为结束标志;统计其中小写字母的个数,结果送到COUNT单元,并把该字符串中的小写字母变成大写字母,其它字符保持不变。要求分别在屏幕上输出原字符串以及修改后的字符串。

代码如下:

;2.已知字符串STRING以‘$’为结束标志;统计其中小写字母的个数,结果送到COUNT单元,
;并把该字符串中的小写字母变成大写字母,其它字符保持不变。
;要求分别在屏幕上输出原字符串以及修改后的字符串。
DATA SEGMENT
    STRING DB '1a2a3aABCabc!@#$' ;定义字符串
    LEN  DB $-STRING             ;len用来记录string长度
    COUNT DB 0                   ;count用来记录小写字母个数  
    CRLF DB 0AH,0DH,"$"          ;回车换行
DATA ENDS
CODE SEGMENT
    ASSUME CS:CODE,DS:DATA

START:
    MOV AX,DATA
    MOV DS,AX
    
    XOR CX,CX        ;CX初始化
    MOV CL,LEN       ;设置循环次数
    
    LEA DX,STRING    ;使dx指向string初始地址
    MOV AH,09H       ;输出原字符串
    INT 21H
    
    LEA BX,STRING    ;使bx指向string初始地址
X:  MOV AL,[BX]      ;取bx指向地址所在的字符并放入al中
    CMP AL,'a'       ;字符与小写a作比较
    JB NEXT          ;小于则跳转next函数
    CMP AL,'z'       ;字符与小写z作比较
    JA NEXT          ;大于则跳转next函数
    INC COUNT        ;使count自增1
    SUB AL,20H       ;使当前的小写字母变成小写
    MOV [BX],AL      ;把小写字母变成大写
NEXT:
    INC BX           ;使bx指向下一个地址
    LOOP X           ;做循环,cx-1 当cx=0时则退出循环,执行下一条语句
    
    LEA DX, CRLF;回车换行           
    MOV AH, 09H							 
    INT 21H
    
    LEA DX,STRING  ;输出更新后的字符串
    MOV AH,09H
    INT 21H
    
    LEA DX, CRLF;回车换行           
    MOV AH, 09H							 
    INT 21H    
                
    ADD COUNT,30H  ;让count变成ascll码并且输出
    MOV DL,COUNT
    MOV AH,02H
    INT 21H

     
    MOV AH,4CH     ;结束
    INT 21H
CODE ENDS
END START  

以下代码可以输出10个以上的小写字母个数

;2.已知字符串STRING以‘$’为结束标志;统计其中小写字母的个数,结果送到COUNT单元,
;并把该字符串中的小写字母变成大写字母,其它字符保持不变。
;要求分别在屏幕上输出原字符串以及修改后的字符串。
DATA SEGMENT
    STRING DB 'aaaaaaaaaaaaaaaaaaaaaaaaaa!@#$' ;定义字符串 26个a
    LEN  DB $-STRING             ;len用来记录string长度
    COUNT DW 0                   ;count用来记录小写字母个数  
    CRLF DB 0AH,0DH,"$"          ;回车换行
    ANS DB 6 DUP(0)
    TIMES DB 0
DATA ENDS
CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
 
START:
    MOV AX,DATA
    MOV DS,AX
    
    XOR CX,CX        ;CX初始化
    MOV CL,LEN       ;设置循环次数
    
    LEA DX,STRING    ;使dx指向string初始地址
    MOV AH,09H       ;输出原字符串
    INT 21H
    
    LEA BX,STRING    ;使bx指向string初始地址
X:  MOV AL,[BX]      ;取bx指向地址所在的字符并放入al中
    CMP AL,'a'       ;字符与小写a作比较
    JB NEXT          ;小于则跳转next函数
    CMP AL,'z'       ;字符与小写z作比较
    JA NEXT          ;大于则跳转next函数
    INC COUNT        ;使count自增1
    SUB AL,20H       ;使当前的小写字母变成小写
    MOV [BX],AL      ;把小写字母变成大写
NEXT:
    INC BX           ;使bx指向下一个地址
    LOOP X           ;做循环,cx-1 当cx=0时则退出循环,执行下一条语句
    
    LEA DX, CRLF;回车换行           
    MOV AH, 09H							 
    INT 21H
    
    LEA DX,STRING  ;输出更新后的字符串
    MOV AH,09H
    INT 21H
    
    LEA DX, CRLF;回车换行           
    MOV AH, 09H							 
    INT 21H    
                
    XOR AX,AX            ;将count输出
    MOV AX,COUNT         ;将count放入ax中
    XOR BX,BX            ;bx初始化
    MOV BX,10            ;将10放入bx中
    MOV DI,OFFSET ANS    ;使di指向ans头地址
    
F:
    XOR DX,DX     ;dx初始化
    DIV BX        ;ax/bx 因为count是dw类型因此商在AX,余数在DX,这里的余数<=9,因此也在DL
    ADD DL,30H    ;将dl中的0-9变成ascll码里的0-9方便输出
    MOV [DI],DL   ;将dl放入di指向地址的内容里
    INC DI        ;di指针+1
    INC TIMES     ;tiems+1,方便后面的倒叙输出
    CMP AX,0      ;ax和0作比较,如果ax=0则说明已经被除完了
    JNE F         ;如果ax≠0,则跳到f函数
    DEC DI        ;di指针-1,此时指向的是最高位
    XOR CX,CX     ;cx初始化
    MOV CL,TIMES  ;把times给cl方便循环输出
FUNCTION:
    MOV DL,[DI]   ;把dl指向地址的内容给dl,并做dos单字符输出操作
    MOV AH,2
    INT 21H
    DEC DI        ;di指针-1
    LOOP FUNCTION ;cl>0则cl-1并且循环fuction,否则执行下一条语句       
         
    MOV AH,4CH     ;结束
    INT 21H
CODE ENDS
END START  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

已知字符串STRING以‘$’为结束标志;统计其中小写字母的个数,结果送到COUNT单元,并把该字符串中的小写字母变成大写字母,其它字符保持不变。要求分别在屏幕上输出原字符串以及修改后的字符串。 的相关文章

  • 进程与线程

    进程与线程 讲线程之前要了解 xff1a 进程间的通信 xff08 Inter Process Communication IPC xff1a 理论上 xff0c 进程之间是独立的 xff0c 但实际上往往是多个进程之间的互相配合完成复杂的
  • STM32的八种工作模式

    一 模式介绍 STM32单片机具有高性能 低成本 低功耗的优点 xff0c 与它打交道就必须先了解它的几种工作模式 xff0c 它共有八种IO口模式 xff0c 分别是 xff1a 模拟输入 浮空输入 上拉输入 下拉输入 开漏输出 推挽输出
  • matlab学习笔记

    matlab笔记 上课期间自己整理的一系列matlab相关用法的笔记 xff0c 自认为也并不非常有条理 xff0c 但还是囤放在这里 xff0c 供需要的人查阅 取用 写在前面 help 43 函数名 xff1a 查找某函数的使用方法lo
  • 计算机组成原理——总线

    一 总线概述 1 xff0e 基本概念 xff08 1 xff09 总线简图 每个总线可能由很多根信号线组成 xff08 2 xff09 总线的物理实现 如上图 xff0c 4根信号线组成 一根 总线 xff0c 所有硬件部件都可以通过这根
  • 计算物理学复习笔记(一) 连续随机变量的抽样(直接、变换抽样,三类舍选法)

    文章目录 前言 前置知识一 直接抽样法二 变换抽样法三 舍选法1 第一类舍选法2 第二类舍选法3 第三类舍选法 总结 前言 使用教材 xff1a 马文淦 计算物理学 xff0c 限于篇幅 xff0c 这本书上部分知识写得并不十分详细 xff
  • Keil MDK配置ARM汇编/C语言混合开发环境

    Keil MDK配置ARM开发环境 1 安装Keil MDK 安装方法这里不再说明 xff0c 懂得都懂 xff01 x1f436 2 安装ARM开发包 在Keil MDK5之后 xff0c 不再原生支持ARM7 9 xff0c 需要自行安
  • ESP8266初学(一) 遇问题大全及解决方案(持续更新)

    最近开始学习wifi模块 xff0c 谁知一开始用PC连接调试wifi模块就遇到了很多问题 一 输入指令后没有反应 刚起步就头大 快乐地接好各种接口各种线 xff0c 连上电脑发现它冒蓝光光了 xff0c 好耶 xff01 然后兴致勃勃打开
  • PTA实验题:6-4 派生类的定义和使用 (10 分)

    按要求完成下面的程序 xff1a 1 定义一个Animal类 xff0c 包含一个void类型的无参的speak方法 xff0c 输出 animal language 2 定义一个Cat类 xff0c 公有继承自Animal类 xff0c
  • 模块学习(一)——编码电机

    想实现对电机的测速 xff0c 因此开始接触编码电机 此次采用的是RS365编码器电机 一 编码电机的初步了解 通过编码电机可以测出速度 常见一般编码电机分成两种 xff0c 一是光电编码器 xff0c 另一个是霍尔编码器 有六个接口 xf
  • nuxt如何处理用户登录状态持久化:nuxtServerInit 页面渲染前的store处理

    在一般的vue cli项目中 xff0c 我们可以用vuex persistedstate xff0c 它可以使vuex的状态持久化 xff0c 页面刷新都不会丢失 xff0c 原理当然是localStorage啦 xff01 当然也可以使
  • C语言查找字符

    C语言查找字符 相关文章路径 xff1a C语言求字符串的长度 gt C语言字符串的复制 gt C语言的字符串的联接 gt C语言字符串的比较 gt C语言查找字符 gt C语言BF算法 gt C语言输出字符串 gt C语言输入字符串 C
  • CPU、MPU、MCU、SOC的概念和区别

    概念 1 cpu cpu central processing unit 是一台计算机的运算核心和控制核心 xff0c CPU由运算器 控制器和寄存器以及实现他们联系的数据 控制总线构成 xff0c cpu典型的三级流水线操作是取值 译码
  • VScode报错:undefined reference to ‘WinMain’ collect2.exe: error: ld returned 1 exit status

    这是因为vs code并不会你点击了运行后就自动保存 xff0c 需要自己Ctrl 43 s保存一下 没保存显示一个圆点
  • 解决Realsense摄像头插着开机后,需要重新插拔程序才能正常工作

    安装 uhubctl 的过程 span class token function sudo span span class token function apt get span span class token function inst
  • Jetson TX2 刷机

    文章目录 准备工作1 host端 xff08 ubuntu xff09 配置2 连接线3 安装 NVIDIA SDK Manager 开始刷机STEP1STEP2STEP3STEP4 准备工作 1 host端 xff08 ubuntu xf
  • 链表头结点的插入和删除

    看了不少博客 xff0c 大都讲的比较详细到关于链表节点的删除和插入 xff0c 但因为没找到相关的头结点插入和删除的博客 xff0c 所以打算自己写一下方便大家查阅 下面是已经给出的链表的抽象数据结构 然后 然后下面是定义的插入结点的构造
  • gazebo无人机仿真显示:failsafe enabled: no rc

    修改qgc地面站参数 COM RC IN MODE 更改为 34 Joystick No RC Checks 34 这允许操纵杆输入并禁用 RC 输入检查 NAV RCL ACT to 34 Disabled 34 这可确保在没有无线遥控的
  • 力扣77组合(c++)

    力扣77组合 c 43 43 力扣题目链接 思路 这是一道经典的回溯算法题 xff0c 回溯法解决的问题都可以抽象为树形结构 xff08 N叉树 xff09 xff0c 我们可以通过树形结构来理解回溯算法 那么我把组合问题抽象为如下树形结构
  • 我的创作纪念日

    x1f36c 博主介绍 x1f468 x1f393 博主介绍 xff1a 大家好 xff0c 我是 PowerShell xff0c 很高兴认识大家 主攻领域 xff1a 渗透领域 数据通信 通讯安全 web安全 面试分析 x1f389 点
  • IDEA创建一个springboot项目教程(过程中各种报错解决)

    是不是不知道如何创建一个springboot项目 xff1f 是不是创建项目总是失败 xff1f 今天手把手带你创建一个springboot项目 配置maven 我们在创建一个springboot项目时一定要先配好maven配置文件sett

随机推荐

  • PHPWord相关

    phpword中进行换行操作 xff1a re 39 work experience 39 61 str replace array 34 r 34 34 n 34 34 r n 34 34 lt w br gt 34 re 39 work
  • 文件操作fwrite写txt文件乱码怎么办,我这里有方法解决

    很多大一新生到了期末做课设时 xff0c 遇到文件操作 总会有人不明白为什么写入的内容会乱码 先引入一些知识 xff1b 文件有二进制文件 xff0c 文本文件 二进制文件是按内存写入的 xff1b 文本文件是按格式写入的 xff1b 因此
  • DC电源口实物VCC引脚和GND引脚

    从后往前看 xff08 前面是电源线插进来的地方 xff09 xff0c 前面和左面是GND xff0c 后面是VCC
  • Docker入门

    前言 这就是一个简单的docker入门 因为可能现在用的少 笔者后面就有了些许草率 Docker 一篇入门 这里有阮一峰老师的docker简介传送门 这里有个语雀大佬的笔记传送门 后序也可以参考这个文章 一 Docker 简介 1 基本概述
  • java枚举类详解

    一 初始枚举 枚举类型是Java 5中新增特性的一部分 xff0c 它是一种特殊的数据类型 xff0c 之所以特殊是因为它既是一种类 class 类型却又比类类型多了些特殊的约束 xff0c 但是这些约束的存在也造就了枚举类型的简洁性 安全
  • vue报错:Component name “xxx“ should always be multi-word

    这个问题困扰我这个菜鸡很久了 xff0c 当我run serve的时候总是会报错Component name xxx should always be multi word 一直以为是命名的问题 xff0c 可是改了又改还是不行 xff0c
  • C语言学习---通过指针形参修改实参的值/交换两个数字的值---原理深究

    C语言学习 通过指针形参修改实参的值 交换两个数字的值 原理深究 要通过函数调用修改实参的值 xff0c 首先我们要明白函数调用过程中的传参方式与返回方式 xff1a 传参方式 xff1a 在c语言里面 xff0c 所有的参数传递都是单向的
  • [已解决]Git无法连接远程

    如果你是开了代理的情况下 xff0c Git失效了可以参考我的解决方法 今天Git忽然抽风了 xff0c 显示连接失败 正在获取 origin kex exchange identification Connection closed by
  • 服务端和客户端通信--UDP(含完整源代码)

    UDP通信实验 实验设备 xff1a 目标系统 xff1a Windows 软件工具 xff1a vs2022 vc6 dev 实验要求 xff1a 完成UDP服务端和客户端的程序编写 xff1b 分别实现UDP一对一通信和广播通信功能 实
  • Proteus 8 Professional发生关键仿真错误(疑似中文路径导致)

    Proteus 8 Professional发生关键仿真错误 xff08 疑似中文路径导致 xff09 在软件仿真时出现错误 显示好多红色代码 疑似之前把电脑名命名为中文了 所以缓存路径也是中文 导致Proteus 8 Profession
  • pm2实现linux重启后自启动node服务

    简介 利用pm2非常简单就可以实现 开机自启node服务的功能 目的是为解决服务器由于各种原因自动重启后 node服务没自动启动 导致无法工作的问题 操作步骤 使用pm2 start xff08 启动服务 执行pm2 save 保存当前已经
  • 【C++音视频开发】视频篇 | 图像基础概念

    前言 本专栏将不间断更新有关C 43 43 音视频开发的内容 xff0c 其中有初级章 中级章与高级章的内容 xff0c 包括但不限于音视频基础 FFmpeg实战 QT 流媒体客户端 流媒体服务器 WebRTC实战 Android NDK等
  • 【C++音视频开发】视频篇 | RGB与YUV

    前言 本专栏将不间断更新有关C 43 43 音视频开发的内容 xff0c 其中有初级章 中级章与高级章的内容 xff0c 包括但不限于音视频基础 FFmpeg实战 QT 流媒体客户端 流媒体服务器 WebRTC实战 Android NDK等
  • Docker-常用命令

    目录 一 docker基础命令1 启动与关闭docker2 查看docker信息3 docker帮助命令 二 docker镜像命令1 查询与搜索镜像2 拉取镜像3 删除镜像4 保存与加载镜像 三 docker容器命令1 查看容器运行及状态2
  • Ubuntu18.04安装VScode并配置ROS环境

    1 安装VScode 1 1通过命令安装 在终端命令行中依次输入以下命令 sudo add apt repository ppa ubuntu desktop ubuntu make sudo apt get update sudo apt
  • cropper.js使用

    这两天一直在写上传头像那一部分 xff0c 需要用到cropper裁剪 xff0c 算起来这是我第二次用了 xff0c 本来以为会比较顺手 xff0c 结果一直报这个错 本来以为是jq和cropper的引入顺序问题 xff0c 结果调好了还
  • linux编程基础——文件、进程

    stat 函数获取文件属性 运用 使用stat 函数获取文件属性 xff0c 输出文件大小 写入文件内容 include lt stdio h gt include lt unistd h gt include lt stdlib h gt
  • 【matlab】设置中文版帮助

    版本 xff1a MATLAB2016a 1 双击图标打开MATLAB 2 打开帮助文档页面 3 打开预设项界面 4 设置帮助文档位置 点击帮助 xff0c 文档位置选择在mathworks com上 xff08 需要Internet连接
  • plugin

    plugin是什么 xff1f 1 plugin是插件的意思 xff0c 通常是用于对某个现有的架构进行扩展 2 webpack中的插件 xff0c 就是对webpack现有功能的各种扩展 xff0c 比如打包优化 xff0c 文件压缩等等
  • 已知字符串STRING以‘$’为结束标志;统计其中小写字母的个数,结果送到COUNT单元,并把该字符串中的小写字母变成大写字母,其它字符保持不变。要求分别在屏幕上输出原字符串以及修改后的字符串。

    只为记录汇编作业 题目 xff1a 已知字符串STRING以 为结束标志 xff1b 统计其中小写字母的个数 xff0c 结果送到COUNT单元 xff0c 并把该字符串中的小写字母变成大写字母 xff0c 其它字符保持不变 要求分别在屏幕