汇编语言 循环嵌套 将datasg段中每个单词改为大写字母 改进版
题目要求
将datasg段中每个单词改为大写字母
思路
注意用al存放ascii即可
大写对应的ascii第五位是0,除了第五位以外不变 and al,11011111b
注意循环嵌套的时候 只有一个cx不够用怎么办 可以放在dx中临时存储 等内循环执行完毕后 再从dx中将cx取出 即可正常嵌套循环
改进:将cx放栈中 这样使用push pop指令更方便 并且解决寄存器数量有限的问题
运行过程
执行前:所有行都是小写
执行完一遍外循环:第一行变成大写
执行完所有外循环:所有行都变成大写
程序结束
代码(原始)
;将datasg段中每个单词改为大写字母
;注意用al存放ascii即可
;;大写对应的ascii第五位是0,除了第五位以外不变 and al,11011111b
assume cs:code,ds:datasgdatasg segmentdb 'ibm 'db 'dec 'db 'dos 'db 'vax '
datasg endscode segment
start:;把datasg地址放到ds中mov ax,datasgmov ds,axmov si,0mov cx,6 ;6行 循环6次
s1: ;外循环6mov dx,cx ;用dx暂存cxmov bx,0 ;从第0个字母开始mov cx,3 ;改变3个字母 3次循环
s2: ;内循环mov al,ds:[si+bx] ;取出and al,11011111b ;改成大写mov ds:[si+bx],al ;放回inc bxloop s2 ;内循环底部mov cx,dx ;把外循环的cx还给它mov ax,si ;借助axadd ax,10h ;借助ax指向下一行mov si,ax ;ds指向下一行loop s1 ;外循环底部mov ax,4c00hint 21h
code ends
end start
改进后
题目有一点点小的变化:
题目要求
编程,将datasg段中每个单词的前4个字母改为大写字母
*本次改进,增加了对栈的使用
运行过程
执行一次外循环后,第一行单词前三个字母被改为大写
执行所有外循环后,所有单词前三个字母被改为大写,成功~
代码
还是图片版代码看着舒服 有高亮
;编程,将datasg段中每个单词的前4个字母改为大写字母
assume cs:codesg,ss:stacksg,ds:datasgstacksg segment stackdw 0,0,0,0,0,0,0,0
stacksg endsdatasg segmentdb '1. display 'db '2. brows 'db '3. replace 'db '4. modify '
datasg endscodesg segment
start: ;把datasg地址放到ds中mov ax,datasgmov ds,ax;把stacksg地址放到ss中mov ax,stacksgmov ss,axmov sp,10h ;设置栈顶mov si,0 ;si控制行数;外循环6mov cx,6 ;6行 循环6次
s1: push cx ;cx值存入栈mov bx,3 ;从第3个字符开始;内循环3mov cx,3 ;改变3个字母 3次循环
s2: mov al,ds:[si+bx] ;取出and al,11011111b ;改成大写mov ds:[si+bx],al ;放回inc bxloop s2 ;内循环底部pop cx ;cx的值pop回去mov ax,si ;借助axadd ax,10h ;借助ax指向下一行mov si,ax ;ds指向下一行loop s1 ;外循环底部mov ax,4c00hint 21h
codesg ends
end start
汇编语言 循环嵌套 将datasg段中每个单词改为大写字母 改进版相关推荐
- 汇编语言:编程,将datasg段中的每个单词改为大写字母
问题介绍 编程,将datasg段中的每个单词改为大写字母.用栈段存储临时数据. 代码展示 ;编程,将datasg段中的每个单词改为大写字母 ;用栈来存储临时数据 assume cs:code,ds:d ...
- 读入一段文本到 vector 对象,每个单词存储为 vector 中的一个元素。把 vector 对象中每个单词转化为大写字母。输出 vector 对象中转化后的元素,每八个单词为一行输出。
int main(void) { string alphabet; string T_p; vector<string>count; cout << " ...
- word中如何使用快捷键将大写字母转换为小写字母
word中如何使用快捷键将大写字母转换为小写字母 方法一:快捷键方法 快捷键:shift+F3 使用方法:选中要转换的英文单词,按住shift的同时按下F3,选中的英文单词就会在以下三种状态下循环切换 ...
- 将字符串“I am a college student at CCBUPT”中的大写字 母改小写字母,小写字母改为大写字母,打印输出,并显示程序运行时 间(毫秒)。
将字符串"I am a college student at CCBUPT"中的大写字 母改小写字母,小写字母改为大写字母,打印输出,并显示程序运行时间(毫秒). public c ...
- c语言字符串的一个简单例子,把一个字符串中的小写字母改成大写字母
把一个字符串中小写字母改成大写字母,利用toupper()函数,这个函数定义在 ctype.h 头文件中 #include <stdio.h> #include <ctype.h&g ...
- c语言学习-自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数)
c语言自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数) 程序流程图: 代码: #include<stdio.h> char strupr(char ch[ ...
- golang: 密码中允许出现数字、大写字母、小写字母、特殊字符,但至少包含其中2种且长度在8-16之间(四种符号任意满足三种即可)
要求: 密码中允许出现数字.大写字母.小写字母.特殊字符(.@$!%*#_~?&^),但至少包含其中2种且长度在8-16之间(四种符号任意满足三种即可) package mainimport ...
- 汇编语言编程,将DATAS段中的每个单词的前4个字母改为大写并将改写后的结果分4行输出到屏幕上
编程,将DATAS段中的每个单词的前4个字母改为大写并将改写后的结果分4行输出到屏幕上 题目: 编程,将DATAS段中的每个单词的前4个字母改为大写并将改写后的结果分4行输出到屏幕上. DATAS S ...
- java 查找大写字母_在Java中查找字符串的所有大写字母
因此,我试图在用户输入的字符串中查找所有大写字母,但始终出现此运行时错误: Exception in thread "main" java.lang.StringIndexOutO ...
最新文章
- mysql bypass_Bypass MySQL Safedog
- 《上海市数据中心建设导则(2021版)》
- CVPR 2019 | APDrawingGAN:人脸秒变艺术肖像画
- python测试开发django-44.xadmin上传图片和文件
- 从易到难,写一个JavaScript加载器之一
- (八)限定某个目录禁止解析php、限制user_agent和PHP相关配置
- 微软Build 2019大会.NET课程视频汇总
- 装B指南之使用浏览器播放电影
- SpringCloud集成Dubbo实现RPC调用
- html把多个div做成块,HTML块
- SQL Server高级查询之T-SQL编程(存储过程)
- python3 round函数
- HTML中行内元素与块级元素的区别:
- 双点双向重分发中的次优路径和环路问题
- 2015 多校联赛 ——HDU5302(矩阵快速幂)
- cad自动标注界址点_CAD自带“块属性”即可实现自动标注坐标
- linux转换文件导出16进制,xxd命令转换二进制十六进制文件
- 3-八爪鱼自定义数据采集(关键词循环、数据格式化)
- linux大容量硬盘 克隆到小硬盘_clonezilla 不管用了,手动把 GPT 分区的 ubuntu14.04 操作系统从大硬盘克隆到小硬盘...
- 项目实战 - 使用Fiddler抓取bilibili安卓客户端口数据并分析(http、https)