[汇编语言]实验:应用更灵活的寻址方式来定位内存地址
实验内容:
(1)将datasg段中每个单词的头一个字母改成大写字母。
datasg段中的数据为:
(2)
将datasg段中每个单词的字母改成大写字母。
datasg段中的数据为:
ibm
dec
dos
vax
(3)
将datasg段中每个单词的前四个字母改成大写字母
datasg段中的数据为:
(1)
变量+常量的方式定位内存地址:
代码如下:
assume cs:codesg,ds:datasgdatasg segmentdb '1. file 'db '2. edit 'db '3. search 'db '4. view ' db '5. options 'db '6. help '
datasg endscodesg segment
start: mov ax,datasgmov ds,axmov bx,0mov cx,6s: mov al,[bx+3]and al,11011111bmov [bx+3],aladd bx,16loop smov ax,4c00hint 21h
codesg ends
end start
(2)
用ds保存cx的值,以达到双层循环的效果。
代码如下:
assume cs:codesg,ds:datasgdatasg segmentdb 'ibm 'db 'dec 'db 'dos 'db 'vax '
datasg endscodesg segment
start: mov ax,datasgmov ds,axmov bx,0mov cx,4s0: mov dx,cxmov si,0mov cx,3s: mov al,[bx+si]and al,11011111bmov [bx+si],alinc siloop s0add bx,16mov cx,dxloop s0mov ax,4c00hint 21hcodesg ends
end start
用内存保存cx
代码如下:
assume cs:codesg,ds:datasgdatasg segmentdb 'ibm 'db 'dec 'db 'dos 'db 'vax 'db 0 ;定义一个字,用来存放cx
datasg endscodesg segment
start: mov ax,datasgmov ds,axmov bx,0mov cx,4s0: mov ds:[40h],cxmov si,0mov cx,3s: mov al,[bx+si]and al,11011111bmov [bx+si],alinc siloop s0add bx,16mov cx,ds:[40h]loop s0mov ax,4c00hint 21hcodesg ends
end start
最好的处理方式 - 栈:
代码如下:
assume cs:codesg,ds:datasg,ss:stacksgdatasg segmentdb 'ibm 'db 'dec 'db 'dos 'db 'vax '
datasg endsstacksg segmentdw 0,0,0,0,0,0,0,0
stacksg endscodesg segment
start: mov ax,stacksgmov ss,axmov sp,16mov ax,datasgmov ds,axmov bx,0mov cx,4s0: push cxmov si,0mov cx,3s: mov al,[bx+si]and al,11011111bmov [bx+si],alinc siloop sadd bx,16pop cxloop s0mov ax,4c00hint 21h
codesg ends
end start
(3)
代码如下:
assume ds:datasg,ss:stacksg,cs:codesgstacksg segmentdw 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: mov ax,datasgmov ds,axmov ax,stacksgmov ss,axmov sp,16mov bx,0mov cx,4s: push cxmov cx,4mov si,0s0:mov al,[bx+si+3]and al,11011111bmov [bx+si+3],alinc siloop s0add bx,16pop cxloop smov ax,4c00hint 21h
codesg ends
end start
[汇编语言]实验:应用更灵活的寻址方式来定位内存地址相关推荐
- 更灵活的定位内存地址的方法---汇编学习笔记
更灵活的定位内存地址的方法 前面,我们用[0].[bx]的方法,在访问内存的指令中,定位内存单元的地址.本章将用更灵活的方式来定位内存地址. 7.1 and和or指令 (1)and指令:逻辑与指令,按 ...
- 更灵活的定位内存地址的方法02 - 零基础入门学习汇编语言33
第七章:更灵活的定位内存地址的方法02 让编程改变世界 Change the world by program [bx+idata] 在前面,我们可以用[bx]的方式来指明一个内存单元, 我们还可以用 ...
- [汇编语言]更灵活的定位内存地址的方法
目录 一.and和or指令 二.以字符的形式给出数据 三.大小写转化问题 四.[bx+idata] 五.SI和DI 六.[bx+si]和[bx+di] 与 [bx+si+idata]和[bx+di+i ...
- 更灵活的定位内存地址的方法05 - 零基础入门学习汇编语言36
第七章:更灵活的定位内存地址的方法05 让编程改变世界 Change the world by program 问题7.8 [codesyntax lang="asm"] assu ...
- (七)汇编语言——更灵活的定位内存地址的方法
目录 and和or ASCII码 [bx+idata] SI和DI寄存器 [bx+si]和[bx+di] [bx+si+idata]和[bx+di+idata] 总结 例子(双重循环的解决方案) 我们 ...
- 汇编程序-更灵活的定位内存地址方法
汇编程序-更灵活的定位内存地址方法 如何灵活运用定位内存的方法呢?在之后,我们将列出几个实际例子.通过例子,展示定位内存的一些方法,熟悉和提升我们对汇编程序的理解. 大小写转化(1) 通过上面的汇编程 ...
- 汇编: 更灵活的定位内存地址的方法
bx是偏移地址寄存器.同样的, si,di也是偏移地址寄存器. 这样使用了si,di可以更灵活的定位内存地址. assume cs:codecode segmentstart: mov bx,0mov ...
- 王爽 汇编语言第三版 第7章 --- 更灵活的定位内存地址的方法(可以理解为 数组形式的内存定位)
汇编语言(第三版)王爽著 的十二个实验:https://blog.csdn.net/OrangeHap/article/details/89791064 大小端 字节对齐 对于 arm,intel 这 ...
- 《汇编语言》总结04 —— 更灵活的定位内存地址的方法
(一)and和or指令 and指令:逻辑与指令,按位进行与运算 mov al,01100011B and al,00111011B 执行后,al=00100011B 作用:通过该指令可将操作对象的相应 ...
最新文章
- [jobdu]调整数组顺序使奇数位于偶数前面
- GDCM:gdcm::IconImageGenerator的测试程序
- python决策树可视化_「决策树」| Part3—Python实现之可视化
- jzoj3854-分组【树状数组,线段树】
- javaone_JavaOne 2012覆盖率
- JavaParser中AST节点的观察者
- [译]JavaScript async / await:好处、坑和正确用法
- 从系统盘符选错到认识硬盘的各种分区
- View的setLayerType() , setDrawingCacheEnabled() 方法用法
- 《Go程序设计语言》- 第12章:反射
- 受力分析软件_大赛作品 | 关于Z型路灯受力情况分析
- 计算机毕业设计jsp酒店管理系统
- HTML+CSS制作仿制当当网
- Docker基础:指定USER的容器中获得root用户的方法
- 记录一次app崩溃信息调试
- 1-系统C盘迁移到新买的固态硬盘SSD中有影响但不主要,但有必要将系统盘C盘迁移到新安装的 固态硬盘SSD中吗?
- 用关联规则和聚类探索药物配伍规律
- 易优EyouCMS手机端url路径改为/mobile/方案(非自带m.xxx.com二级域名方案)
- 【WORD】单词分栏
- VUE教程(持续更新中)
热门文章
- 架构师必须知道的架构设计原则
- Chrome 双击关闭标签,新窗口打开新地址,一个插件搞定,安装方便,自带hosts
- 解决夜神模拟器无法联机调试 adb server version (**) doesn't match this client (**); killing...
- 定量遥感:计算地方时和太阳高度角(C++代码)
- System.Diagnostics.Process.Start()用法详解
- C和指针之实现可变参数函数编译出现expanded from macro ‘va_arg‘ #define va_arg(ap, type) 解决办法
- Android之bitmap压缩的几种方法的解读
- (10)C#偷懒的开始永无止境的循环?
- sql between...and 用法(mysql)
- npm 安装less插件_node+npm+webpack+less安装