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

【35分钟掌握金融风控策略25】定额策略实战2
目录 基于收入和负债的定额策略 确定托底额度和盖帽额度 确定基础额度 基于客户风险评级确定风险系数 计算最终授信额度 确定授信有效期 基于收入和负债的定额策略 在实际生产中,客户的收入和负债数据大多无法直接获得,对于个人的收入和负债数据&…...

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

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

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

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

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

数据结构---经典链表OJ
乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 点击主页:optimistic_chen和专栏:c语言, 创作不易,大佬们点赞鼓…...

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

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

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

AI跟踪报道第41期-新加坡内哥谈技术-本周AI新闻:本周Al新闻: 准备好了吗?事情即将変得瘋狂
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

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

简约在线生成短网址系统源码 短链防红域名系统 带后台
简约在线生成短网址系统源码 短链防红域名系统 带后台 安装教程:访问 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 限制所需的字段,间接mapjoin2.2 解决异常值倾斜,如NULL加随机数打散2.…...

SAF文件选择、谷歌PhotoPicker图片视频选择与真实路径转换
一、构建选择文件与回调方法 //文件选择回调ActivityResultLauncher<String[]> pickFile registerForActivityResult(new ActivityResultContracts.OpenDocument(), uri->{if (uri ! null) {Log.e("cxy", "返回的uri:" uri);Log.e("cxy&q…...

java可变参数
前言 我们虽然能够用重载实现,但多个参数无法弹性匹配 代码 class mycalculator{//下面的四个calculate方法构成了重载//计算2个数的和,3个数的和,4,5,6个数的和// public void calculate(int n1){// System.out.…...

Flutter 中的 Expanded 小部件:全面指南
Flutter 中的 Expanded 小部件:全面指南 在 Flutter 中,Expanded 是一个用于控制子控件占据可用空间的布局小部件,通常与 Row、Column 或 Flex 等父级布局小部件一起使用。Expanded 允许你创建灵活的布局,其中子控件可以按照指定…...

[Kubernetes] KubeKey 部署 K8s v1.28.8
文章目录 1.K8s 部署方式2.操作系统基础配置3.安装部署 K8s4.验证 K8s 集群5.部署测试资源 1.K8s 部署方式 kubeadm: kubekey, sealos, kubespray二进制: kubeaszrancher 2.操作系统基础配置 主机名内网IP外网IPmaster192.168.66.2139.198.9.7node1192.168.66.3139.198.40.17…...

C# 与 Qt 的对比分析
C# 与 Qt 的对比分析 目录 C# 与 Qt 的对比分析 1. 语言特性 2. 开发环境 3. 框架和库 4. 用户界面设计 5. 企业级应用 6. 性能考量 在软件开发领域,C# 和 Qt 是两种常用的技术栈,它们分别在.NET平台和跨平台桌面应用开发中占据重要位置。本文将深…...

MapReduce | 二次排序
1.需求 主播数据--按照观众人数降序排序,如果观众人数相同,按照直播时长降序 # 案例数据 用户id 观众人数 直播时长 团团 300 1000 小黑 200 2000 哦吼 400 7000 卢本伟 100 6000 八戒 250 5000 悟空 100 4000 唐僧 100 3000 # 期望结果 哦吼 4…...

Java后端初始化项目(项目模板)
介绍 emmmm,最近看了一些网络资料,也是心血来潮,想自己手工搭建一个java后端的初始化项目模板来简化一下开发,也就发一个模板的具体制作流程,(一步一步搭建,从易到难) okÿ…...

electron 多窗口 vuex/pinia 数据状态同步简易方案(利用 LocalStorage)
全局 stroe 添加 mutations 状态同步方法 // 用于其他窗口同步 vuex 中的 DeviceTcpDataasyncDeviceTcpData(state: StateType, data: any) {state.deviceTcpData data},App.vue 里 onMounted(() > {console.log("App mounted");/*** vuex 多窗口 store 同步*//…...

自定义数据集图像分类实现
模型训练 要使用自己的图片分类数据集进行训练,这意味着数据集应该包含一个目录,其中每个子目录代表一个类别,子目录中包含该类别的所有图片。以下是一个使用Keras和TensorFlow加载自定义图片数据集进行分类训练的例子。 我们自己创建的数据集…...

【C++】手搓读写ini文件源码
【C】手搓读写ini文件源码 思路需求:ini.hini.cppconfig.confmian.cpp 思路 ini文件是一种系统配置文件,它有特定的格式组成。通常做法,我们读取ini文件并按照ini格式进行解析即可。在c语言中,提供了模板类的功能,所以…...