不同的寻址方式的应用——将每行的单词都变成大写
编程,将data段中每个字母改为大写字母
和C语言一样,外层循环控制行,内层循环控制列!
;编程,将data段中每个字母改为大写字母
assume cs:code,ds:data
data segment;'0123456789ABCDEF'db 'ibm ' ;IBMdb 'dec 'db 'dos 'db 'vax '
; 要四行,每一行有三个字母需要变成大写,怎么做?
; 首先想怎么把第一行的三个字母变成大写
data endscode segment
start:mov ax,datamov ds,axmov bx,0mov cx,4 ;执行四行uprow: mov dx,cx ;☆☆☆☆☆可以使用我们没有使用过的寄存器,把cx临时保存起来 mov cx,3mov si,0upletter: mov al,ds:[bx+si] ;把第一行的三个字母变成大写and al,11011111Bmov ds:[bx+si],alinc siloop uplettermov cx,dx ;把cx从dx中拿回来 ;用dx恢复cxadd bx,16 ;每循环一行,bx要加16loop uprow ;外层循环的loop指令将cx中计数值-1mov ax,4c00hint 21hcode ends
end start
方法1、我们应该在每次开始内层循环的时候,将外层循环的cx中的数值保存起来,在执行外层循环loop指令前,再恢复外层循环cx的数值。可以用寄存器dx来临时保存cx中的数值
方法2、放入栈中
在CPU指令loop指令的时候,要进行两步操作:
①cx=cx-1
②判断cx中的值,不为零则跳转☞标号处执行程序,如果为0则向下执行。
涉及到了loop的嵌套
改进:寄存器是有限的,所以可以声明一个值:dw 0,将cx保存在这里,40H
assume cs:code,ds:data
data segment;'0123456789ABCDEF'db 'ibm ' ;IBMdb 'dec 'db 'dos 'db 'vax 'dw 0
; 要四行,每一行有三个字母需要变成大写,怎么做?
; 首先想怎么把第一行的三个字母变成大写
data endscode segment
start:mov ax,datamov ds,axmov bx,0mov cx,4 ;执行四行uprow: mov ds:[40h],cx ;将外层循环的cx值保存在data:40H单元中mov cx,3 ;cx设置为内层循环的次数mov si,0upletter: mov al,ds:[bx+si] ;把第一行的三个字母变成大写and 11011111Bmov ds:[bx+si],alinc siloop uplettermov cx,dx:[40h] ;用data:40H单元中的值恢复cxadd bx,16 ;每循环一行,bx要加16loop uprow ;外层循环的loop指令将cx中的计数值-1mov ax,4c00hint 21hcode ends
end start
一般来说,在暂存数据的时候,我们都应该使用栈
更好的方法:用栈存放
;编程,将data段中每个字母改为大写字母
assume cs:code,ds:data
data segment;'0123456789ABCDEF'db 'ibm ' ;IBMdb 'dec 'db 'dos 'db 'vax 'dw 0
data endsstack segmentdw 0,0,0,0 ;定义一个段,用来做栈段dw 0,0,0,0dw 0,0,0,0dw 0,0,0,0stack ends
code segment
start:mov ax,stackmov ss,axmov sp,32mov ax,datamov ds,axmov bx,0mov cx,4 ;执行四行uprow: push cx ;将外层循环的cx值压栈mov cx,3 ;cx设置为内层循环的次数mov si,0upletter: mov al,ds:[bx+si] ;把第一行的三个字母变成大写and 11011111Bmov ds:[bx+si],alinc siloop upletterpop cx ;从栈顶弹出原cx的值,恢复cxadd bx,16 ;每循环一行,bx要加16loop uprow ;外层循环的loop指令将cx中的计数值-1mov ax,4c00hint 21hcode ends
end start
一般来说,在需要暂存数据的时候,我们都应该使用栈
不同的寻址方式的应用——将每行的单词都变成大写相关推荐
- 对文件中的行,单词和字符进行迭代
编写不同的文本处理和文件操作脚本时,通常需要对文件中的行,单词和字符进行迭代,尽管这个问题看起来很简单,但是实现起来却常常出现问题,下面,就让我们来看看怎样实现上述功能. 为了实现上述的功能,我们需要 ...
- linux查看单词个数,Linux怎么统计文本的的行数/单词数和字符数?
Linux怎么统计文本的的行数/单词数和字符数? Linux系统中想要统计文本的行数.单词和字符数量,该怎么统计呢?我们可以使用SecureCRT来统计,下面我们就来看看详细的教程. 1.启动Linu ...
- 统计输入的行数,单词数与字符数(C语言)
#include <stdio.h>#define IN 1 //在单词内 #define OUT 0 //在单词外 /***统计输入的行数,单词数与字符数*/ main() {// c: ...
- word 每行的末尾都有一个奇怪的符号怎么去掉
故障现象: 解决办法: 取消"段落标记",即可. 参考: word 2013 每行的末尾都有一个奇怪的符号怎么去掉_百度知道
- 问题 C: 3.02 星号三角 输出10行内容,每行的内容都不一样,第1行一个星号,第2行2个星号,依此类推第10行10个星号。
问题 C: 3.02 星号三角 时间限制: 1 Sec 内存限制: 128 MB 提交: 4974 解决: 3233 [提交] [状态] [讨论版] [命题人:liupg] 题目描述 输出10行内容, ...
- 不同的寻址方式的应用——将每行单词的前X个字母改为大写
编程,将data段中每个单词的前4个字母改为大写 代码如下: ;将data段每个单词的前四个字母改为大写字母 assume cs:code,ss:stack,ds:data stack segment ...
- linux 将test.log中第1行的所有都替换成,【Linux面试题7】三剑客笔试题集合
三剑客笔试题集合 一. 三剑客-基础部分题目 1. 选择 1.在给定文件中查找与条件相符字符串的命令及查找某个目录下相应文件的命令为:(多选)(AC) A:grep B:gzip C:find D:s ...
- 数据去重复_字典应用实例(每行每列都要去重复值)
我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务.支持我,也为自己加油! 前面两节课中的去重复,不论是单张表里的去重复还是多张表里的去重 ...
- 每天学点Linux命令:倒叙打印文件第二行的前100个大写字母
sed -n '2p' afile | grep '[[:upper:]]' -o | tr -d '\n' | cut -c1-100 | rev 处理第二行 grep:提取 ...
最新文章
- android 开发框架 怎么使用,Android快速开发框架dyh详解(二)---控件层的使用
- python免费入门教程-python入门免费教程看这些就够了
- 图像分割(Image Segmentation)
- 大数据项目产品选型的五个建议
- UNIX(多线程):24---哪些STL容器是线程安全的
- Linux后台运行java的jar包,java基础面试笔试题
- artTemplate模板引擎的源码拜读
- 机器学习面试-数学基础
- cocos android保存图片到相册,android平台 cocos2d-x 读取相册数据
- Snake活动轮廓模型Matlab实现
- oracle alter database,DBA常用命令之alter database
- 输入中文错误:\xE4\xBB\x8E\xE5\x85\xA5...‘ for column ‘detail‘ at row 1
- 十、网络编程(高琪java300集+java从入门到精通笔记)
- 最常被遗忘的 Web 性能优化:浏览器缓存
- 面试时如何做好5分钟自我介绍?
- 走近国内同人游戏开发者 一探游戏开发的喜与悲
- html5限制拖拽区域怎么实现,html5怎么实现拖拽
- 这 6 款在线 PDF 转换工具,得试试
- window系统中打开命令行的四种方式
- 目标跟踪经典算法汇总(持续更新...)
热门文章
- hdu 5568(dp+大数模拟)
- URAL 1091. Tmutarakan Exams
- Arduino LiquidCrystal库函数中文对照
- Python(字符串,列表,元组,字典)
- 关于bootstrap的一些想法
- Hadoop-Yarn-框架原理及运作机制
- Python学习笔记007_图形用户界面[EasyGui][Tkinter]
- 经典网页设计:20例与众不同的网页联系表单设计
- 纯CSS实现提示框小三角
- Python3.5 报错:NameError: name 'reload' is not defined