题目要求

将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段中每个单词改为大写字母 改进版相关推荐

  1. 汇编语言:编程,将datasg段中的每个单词改为大写字母

    问题介绍 编程,将datasg段中的每个单词改为大写字母.用栈段存储临时数据. 代码展示 ;编程,将datasg段中的每个单词改为大写字母 ;用栈来存储临时数据 assume cs:code,ds:d ...

  2. 读入一段文本到 vector 对象,每个单词存储为 vector 中的一个元素。把 vector 对象中每个单词转化为大写字母。输出 vector 对象中转化后的元素,每八个单词为一行输出。

    int main(void) {     string alphabet; string T_p; vector<string>count;     cout << " ...

  3. word中如何使用快捷键将大写字母转换为小写字母

    word中如何使用快捷键将大写字母转换为小写字母 方法一:快捷键方法 快捷键:shift+F3 使用方法:选中要转换的英文单词,按住shift的同时按下F3,选中的英文单词就会在以下三种状态下循环切换 ...

  4. 将字符串“I am a college student at CCBUPT”中的大写字 母改小写字母,小写字母改为大写字母,打印输出,并显示程序运行时 间(毫秒)。

    将字符串"I am a college student at CCBUPT"中的大写字 母改小写字母,小写字母改为大写字母,打印输出,并显示程序运行时间(毫秒). public c ...

  5. c语言字符串的一个简单例子,把一个字符串中的小写字母改成大写字母

    把一个字符串中小写字母改成大写字母,利用toupper()函数,这个函数定义在 ctype.h 头文件中 #include <stdio.h> #include <ctype.h&g ...

  6. c语言学习-自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数)

    c语言自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数) 程序流程图: 代码: #include<stdio.h> char strupr(char ch[ ...

  7. golang: 密码中允许出现数字、大写字母、小写字母、特殊字符,但至少包含其中2种且长度在8-16之间(四种符号任意满足三种即可)

    要求: 密码中允许出现数字.大写字母.小写字母.特殊字符(.@$!%*#_~?&^),但至少包含其中2种且长度在8-16之间(四种符号任意满足三种即可) package mainimport ...

  8. 汇编语言编程,将DATAS段中的每个单词的前4个字母改为大写并将改写后的结果分4行输出到屏幕上

    编程,将DATAS段中的每个单词的前4个字母改为大写并将改写后的结果分4行输出到屏幕上 题目: 编程,将DATAS段中的每个单词的前4个字母改为大写并将改写后的结果分4行输出到屏幕上. DATAS S ...

  9. java 查找大写字母_在Java中查找字符串的所有大写字母

    因此,我试图在用户输入的字符串中查找所有大写字母,但始终出现此运行时错误: Exception in thread "main" java.lang.StringIndexOutO ...

最新文章

  1. mysql bypass_Bypass MySQL Safedog
  2. 《上海市数据中心建设导则(2021版)》
  3. CVPR 2019 | APDrawingGAN:人脸秒变艺术肖像画
  4. python测试开发django-44.xadmin上传图片和文件
  5. 从易到难,写一个JavaScript加载器之一
  6. (八)限定某个目录禁止解析php、限制user_agent和PHP相关配置
  7. 微软Build 2019大会.NET课程视频汇总
  8. 装B指南之使用浏览器播放电影
  9. SpringCloud集成Dubbo实现RPC调用
  10. html把多个div做成块,HTML块
  11. SQL Server高级查询之T-SQL编程(存储过程)
  12. python3 round函数
  13. HTML中行内元素与块级元素的区别:
  14. 双点双向重分发中的次优路径和环路问题
  15. 2015 多校联赛 ——HDU5302(矩阵快速幂)
  16. cad自动标注界址点_CAD自带“块属性”即可实现自动标注坐标
  17. linux转换文件导出16进制,xxd命令转换二进制十六进制文件
  18. 3-八爪鱼自定义数据采集(关键词循环、数据格式化)
  19. linux大容量硬盘 克隆到小硬盘_clonezilla 不管用了,手动把 GPT 分区的 ubuntu14.04 操作系统从大硬盘克隆到小硬盘...
  20. 项目实战 - 使用Fiddler抓取bilibili安卓客户端口数据并分析(http、https)

热门文章

  1. UVA - 11694 Gokigen Naname(dfs)
  2. 1.1 Windows 程序运行原理(消息循环和响应)
  3. Python 中的url,Base64和MD5编码解码的使用
  4. QUIC学习笔记之 如何做到0RTT加密传输
  5. 深入理解netfilter框架|经典PDF
  6. 如何有效控制 Go 线程数?
  7. [译]提案:在Go语言中增加对持久化内存的支持
  8. LeetCode 打家劫舍问题
  9. B站直播中HLS和去中心化P2P的实际应用
  10. 关于语音发送/接收 方法和装置发明专利正式发布