当前位置: 首页 > news >正文

4.1 编写程序,从键盘接收一个小写字母,然后找出他的前导字符和后续字符,再按顺序显示这三个字符

方法一:

运行效果:

输入B,输出显示ABC;输入A,输出显示@AB

思路:

1、通过键盘输入接收一个字母。

2、将输入的字母减去1,得到前导字符,然后输出。

3、将输入的字母加上1,得到中间字符,然后输出。

4、将输入的字母加上1,得到后续字符,然后输出。

通过MOV AH,07H调用中断接收输入字符,之后输入的字符就存储在AL中,只需要对AL进行操作就可以了。
 

Tips: MOV AH 01H 和 MOV AH 07H的区别:

MOV AH 01H:按下任何键,将其对应字符的ASCII码送入AL中,并在屏幕上显示该字符。

MOV AH 07H:按下任何键,将其对应字符的ASCII码送入AL中,不在屏幕上显示该字符。

使用MOV AH 01H的效果:

使用MOV AH 07H的效果:(本博客使用的是07H)

两者均是从键盘接收字符并存入AL中,只是显示的区别。

代码如下:

DATAS SEGMENT        ;数据段
DATAS ENDSSTACKS SEGMENT        ;堆栈段
STACKS ENDSCODES SEGMENT                                   ;代码段ASSUME CS:CODES,DS:DATAS,SS:STACKS    ;设置段寄存器 代码段寄存器CS:CODES 数据段寄存器DS:DATAS 堆栈段寄存器SS:STACKSSTART:                                      ;程序入口MOV    AX,DATAS                       ;设置数据段MOV    DS,AXMOV    AH,07H                         ;输入无回显 是指在输入字符时,字符不会在屏幕上显示出来INT    21H                            ;中断 AL=输入字符SUB    AL,1                           ;将输入的字符减1,得到其前导字符MOV    DL,AL                          ;将前导字符存入DLMOV    AH,02H                         ;输出前导字符INT    21H                            ;中断 DL=输出字符ADD    AL,1                           ;将输入的字符加1,得到中间字符MOV    DL,AL                          ;将中间字符存入DLMOV    AH,02H                         ;输出中间字符INT    21H                            ;中断 DL=输出字符ADD    AL,1                           ;将输入的字符加1,得到其后续字符MOV    DL,AL                          ;将后续字符存入DLMOV    AH,02H                         ;输出后续字符INT    21H                            ;中断 DL=输出字符MOV    AH,4CH                         ;结束程序INT    21H                            ;中断 0=结束程序
CODES ENDS                                      ;代码段结束END START                                     ;程序结束 

在上述代码中,我们可以总结出输出一个字符的固定格式

MOV DL,要显示的字符现在所存入的寄存器(例如本例中是AL)

MOV AH,02H

INT 21H

方法二:

从方法一中我们看出,当输出的字母是A时,打印出来的三个连续字符是“@AB”,这是因为A的ascll码前一位是“@”,如何实现当输出的字母是A时,打印出来的三个连续字符是“ZAB”呢?运行效果如下所示:

思路:

1、定义一组字符串,让'a','z'首尾相接,'zabcdefghijklmnopqrstuvwxyza'

2、接收用户从键盘输入的字母,将输入字母与字符串的字母进行比较。

3、如果字符不相等,则继续循环直到找到匹配的字符;找到匹配字符后,通过DEC指令将当前所在字符串的位置减1,以便指向输入字符的前导字符,输出;再加1,找到中间字符,输出;再加1,找到后续字符,输出。

代码如下:

DATA SEGMENTSTRING DB 'zabcdefghijklmnopqrstuvwxyza'CRLF   DB 0AH,0DH,'$'                         ;回车换行符
DATA ENDSSTACK SEGMENT PARA STACKDW  128 DUP(?)      ;定义栈段TOP LABEL WORD      ;栈顶指针
STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV    AX,DATAMOV    DS,AXMOV    AX,STACK                      ;设置栈段MOV    SS,AX                         ;设置栈顶指针LEA    SP,TOP                        ;设置栈顶MOV    AH,1                          ;读入一个字符INT    21H                           LEA    DI,STRING                     ;把STRING的地址放到DIL1:   INC    DI                            ;INC:+1,指向字符串的第一个字符 ,‘z’CMP    AL,[DI]                       ;比较当前字符和字符串的第一个字符JNE    L1                            ;如果不相等,则继续比较下一个字符DEC    DI                            ;如果相等,DEC:-1,指向前导字符MOV    AH,9                          ;显示字符串LEA    DX,CRLF                       ;显示回车换行符INT    21HMOV    CX,3                          ;设置循环次数L2:   MOV    DL,[DI]                       ;把字符串的字符放到DLMOV    AH,2                          ;显示字符INT    21HINC    DI                            ;指向下一个字符LOOP   L2                            ;循环CX次MOV    AH,4CH                        ;退出程序INT    21H
CODE ENDSEND START

相关文章:

4.1 编写程序,从键盘接收一个小写字母,然后找出他的前导字符和后续字符,再按顺序显示这三个字符

方法一: 运行效果: 输入B,输出显示ABC;输入A,输出显示AB 思路: 1、通过键盘输入接收一个字母。 2、将输入的字母减去1,得到前导字符,然后输出。 3、将输入的字母加上1,得…...

(Java)心得:LeetCode——18.四数之和

一、原题 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): …...

网络编程套接字详解

目录 1. 预备介绍 2.网络字节序 3.udp网络程序 4.地址转换函数 5.udp网络编程 1.预备介绍 1.1源IP地址和目标IP地址 举个例子: 从北京出发到上海旅游, 那么源IP地址就是北京, 目标IP地址就是上海. 1.2 端口号 作用: 标识一个进程, 告诉OS这个数据交给那个进程来处理; (1)…...

蓝桥杯备战11.歌唱比赛

P5738 【深基7.例4】歌唱比赛 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc.h> #define endl \n #define int long long using namespace std; const int N 2e710,M 1e310; int a[N],sum[N];signed main() {//std::ios::sync_with_stdio(0),cin.…...

微信小程序中的图像奥秘:图片与Base64的华丽变身记

微信小程序中的图像奥秘&#xff1a;图片与Base64的华丽变身记 基本概念解析图片与Base64的关系为何转换 图片转Base64实战微信小程序使用wx.getImageInfo获取图片信息图片转换为Base64注意 Base64转图片直接在小程序页面显示云开发环境转换注意 遇遇问题排查思路结语引发讨论 …...

【35分钟掌握金融风控策略25】定额策略实战2

目录 基于收入和负债的定额策略 确定托底额度和盖帽额度 确定基础额度 基于客户风险评级确定风险系数 计算最终授信额度 确定授信有效期 基于收入和负债的定额策略 在实际生产中&#xff0c;客户的收入和负债数据大多无法直接获得&#xff0c;对于个人的收入和负债数据&…...

我和爬虫的故事

文章目录 爬虫简介个人经历未来总结 爬虫简介 网络爬虫&#xff08;又称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。另外…...

常用的简单友好的工单系统(免费)- WGCAT

最近在项目中&#xff0c;有工单系统的需求场景&#xff0c;所以想寻找一款轻量简单的运维工单软件&#xff0c;主要用来记录和处理工作中的一些故障、维护&#xff0c;主要用来记录设备的维护状态&#xff0c;包括服务器、主机、交换机那些 WGCAT&#xff0c;是一款简单轻量的…...

使用Pycharm编写Python程序时对基本类结构中方法的重写的两种初步操作方式

使用Pycharm编写Python程序时对基本类结构中方法的重写的两种初步操作方式 Python和其他一些高级面向对象的编程语言中&#xff0c;子类可继承父类中的方法&#xff0c;而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法&#xff0c;而是想作一定的修改&…...

HTTP URL 详解

概述 URL 提供了一种定位因特网上任意资源的手段&#xff0c;大多数 URL 语法都由以下九个结构的通用格式组成&#xff1a; <scheme>://<user>:<password><host>:<port>/<path>;<params>?<query>#<frag> 方案&#…...

Python 原生爬虫

Python 描述代码 描述 爬网站的页面配合正则表达式设置定时任务 仅学习参考&#xff0c;切勿使用其他用途 代码 import re import schedule import timefrom urllib.request import urlopenclass Spider:def __init__(self):# 初始化代码...pass# self.start_schedule()# 需要…...

数据结构---经典链表OJ

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 点击主页&#xff1a;optimistic_chen和专栏&#xff1a;c语言&#xff0c; 创作不易&#xff0c;大佬们点赞鼓…...

HTML_CSS学习:CSS像素与颜色

一、像素 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>像素</title> </head><style>.atguigu1{/*单位可以是cm&#xff0c;但不能是m,dm*/width: 1cm;height: 1cm;background-c…...

华为交换机配置导出备份python脚本

一、脚本编写思路 &#xff08;一&#xff09;针对设备型号 主要针对华为&#xff08;Huawei&#xff09;和华三&#xff08;H3C&#xff09;交换机设备的配置备份 &#xff08;二&#xff09;导出前预处理 1.在配置导出前&#xff0c;自动打开crt软件或者MobaXterm软件&am…...

DS:时间复杂度和空间复杂度

欢迎各位来到 Harper.Lee 的学习世界&#xff01; 博主主页传送门&#xff1a;Harper.Lee的博客主页 想要一起进步的uu欢迎来后台找我哦&#xff01; 本片博客主要介绍的是数据结构中关于算法的时间复杂度和空间复杂度的概念。 一、算法 1.1 什么是算法&#xff1f; 算法(Alg…...

AI跟踪报道第41期-新加坡内哥谈技术-本周AI新闻:本周Al新闻: 准备好了吗?事情即将変得瘋狂

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

Go 之 interface接口理解

go语言并没有面向对象的相关概念&#xff0c;go语言提到的接口和java、c等语言提到的接口不同&#xff0c;它不会显示的说明实现了接口&#xff0c;没有继承、子类、implements关键词。go语言通过隐性的方式实现了接口功能&#xff0c;相对比较灵活。 interface是go语言的一大…...

简约在线生成短网址系统源码 短链防红域名系统 带后台

简约在线生成短网址系统源码 短链防红域名系统 带后台 安装教程&#xff1a;访问 http://你的域名/install 进行安装 源码免费下载地址抄笔记 (chaobiji.cn)https://chaobiji.cn/...

设置默认表空间和重命名

目录 设置默认表空间 创建的临时表空间 tspace4 修改为默认临时表空间 创建的永久性表空间 tspace3 修改为默认永久表空间 重命名表空间 将表空间 tspace3 修改为 tspace3_1 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/13520…...

Hive大表join大表如何调优

目录 一、调优思路1、SQL优化1.1 大小表join1.2 大大表join 2、insert into替换union all3、排序order by换位sort by4、并行执行5、数据倾斜优化6、小文件优化 二、实战2.1 场景2.2 限制所需的字段&#xff0c;间接mapjoin2.2 解决异常值倾斜&#xff0c;如NULL加随机数打散2.…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...