内存地址[bx+idata]、[bx+si/di]、[bx+si/di+idata]的灵活定位
内存地址[bx+idata]、[bx+si/di]、[bx+si/di+idata]的灵活定位
- 一. 实验目的
- 二.实验内容
- 三. 实验步骤
- 四. 结果
- 五. 心得体会
一. 实验目的
1、 掌握and和or指令的用法。
2、灵活运用[bx+idata]、[bx+si/di]等指令定位内存地址。
3、利用不同寻址方式实现大小写的转换问题。
二.实验内容
1、 利用[bx+idata]、[bx+si/di]等指令实现大小写的转换。
2、 不同寻址方式的灵活运用。
3、 Debug调试追踪。
三. 实验步骤
(1) 编写源程序。
(a) 将datasg段中每个单词的1、3、5位改为大写。
assume cs:codesg,ds:datasg
datasg segmentdb 'integer 'db 'integent 'db 'notebook ’db 'company ’datasg endscodesg segmentstart:mov ax,datasgmov ds,axmov bx,0mov cx,4s:mov al,[bx+0]and al,01111111Bmov al,[bx+2]and al,11011111Bmov al,[bx+4]and al,11110111Bmov [bx+4],aladd bx,16loop s
codesg ends
end start
(b) 编写程序,将datasg段中每个单词的前4个字母改为大写。
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segmentdw 0,0,0,0,0,0,0,0
stacksg ends
datasg segmentdb '1. display 'db '2. brows 'db '3. replace 'db '4. modify '
datasg endscodesg segmentstart: mov ax,stacksgmov ss,axmov sp,16mov ax,datasgmov ds,axmov bx,0mov cx,4s: push cxmov di,3mov cx,4s0: mov al,[bx+di]and al,11011111bmov [bx+di],alinc diloop s0pop cxadd bx,16loop smov ax,4c00hint 21codesg endsend start
© 编写程序,利用si、di实现将‘welcome to class’复制到它后面的数据区中。
assume cs:codesg,ds:datasg
datasg segmentdb 'welcome to class'db ' 'datasg endscodesg segmentstart:mov ax,datasgmov ds,axmov si,0mov cx,8s:mov ax,[si]mov[si+16],axadd si,2loop smov ax,4c00hint 21h
codesg ends
end start
(2) 完成一个完整程序的全过程,包括编辑、编译、连接生成可执行文件。
(3) 上机调试,追踪运行结果。
四. 结果
(a) 测试前:
测试后:
(b) 测试前:
测试后:
© 测试前:
测试后:
五. 心得体会
1、datasg中定义了4个字符串,每个字符串的长度为16个字节,为了在debug调试时方便查看,在每个字符串的后面都加上了空格符,以使得它们的长度刚好为16个字节。
2、通过实验进一步熟悉了or和and指令,“and al,11011111B”可以将al中的ASCII码变为大写字母,“or al,00100000”可以将al中的ASCII码转为小写字母。
3、第3题复制代码的时候可以用’…’的方式表明数据是以字符的形式给出的,编程时注意指明内存单元。
4、由于我所有的代码均在debug上进行调试,故没有指明段地址,第一题与第三题程序默认段地址为ds,第二题为了简化程序故使用栈所以段地址为ss。
内存地址[bx+idata]、[bx+si/di]、[bx+si/di+idata]的灵活定位相关推荐
- 汇编程序-更灵活的定位内存地址方法
汇编程序-更灵活的定位内存地址方法 如何灵活运用定位内存的方法呢?在之后,我们将列出几个实际例子.通过例子,展示定位内存的一些方法,熟悉和提升我们对汇编程序的理解. 大小写转化(1) 通过上面的汇编程 ...
- 更灵活的定位内存地址的方法---汇编学习笔记
更灵活的定位内存地址的方法 前面,我们用[0].[bx]的方法,在访问内存的指令中,定位内存单元的地址.本章将用更灵活的方式来定位内存地址. 7.1 and和or指令 (1)and指令:逻辑与指令,按 ...
- 王爽 汇编语言第三版 第7章 --- 更灵活的定位内存地址的方法(可以理解为 数组形式的内存定位)
汇编语言(第三版)王爽著 的十二个实验:https://blog.csdn.net/OrangeHap/article/details/89791064 大小端 字节对齐 对于 arm,intel 这 ...
- 《汇编语言》总结04 —— 更灵活的定位内存地址的方法
(一)and和or指令 and指令:逻辑与指令,按位进行与运算 mov al,01100011B and al,00111011B 执行后,al=00100011B 作用:通过该指令可将操作对象的相应 ...
- 汇编语言-王爽 第7章 更灵活的定位内存地址的方法-笔记
将datasg中的第一个字符串转化为大写,第二个字符串转化为小写. 第一种方法: assume cs:codesg,ds:datasgdatasg segmentdb 'BaSic'db 'iNfOr ...
- (七)汇编语言——更灵活的定位内存地址的方法
目录 and和or ASCII码 [bx+idata] SI和DI寄存器 [bx+si]和[bx+di] [bx+si+idata]和[bx+di+idata] 总结 例子(双重循环的解决方案) 我们 ...
- [汇编语言]更灵活的定位内存地址的方法
目录 一.and和or指令 二.以字符的形式给出数据 三.大小写转化问题 四.[bx+idata] 五.SI和DI 六.[bx+si]和[bx+di] 与 [bx+si+idata]和[bx+di+i ...
- 汇编语言——更灵活定位内存地址(基于8086CPU)
ax用来存放数据,bx存放内存偏移地址,cx存放循环次数,dx? 汇编语言的注释是";" 栈用于暂存数据,因为寄存器有限 1. and和or指令 1.1 and:逻辑与指令,按位与 ...
- 汇编: 更灵活的定位内存地址的方法
bx是偏移地址寄存器.同样的, si,di也是偏移地址寄存器. 这样使用了si,di可以更灵活的定位内存地址. assume cs:codecode segmentstart: mov bx,0mov ...
最新文章
- 下列不属于python第三方库的是-python后端开发工程师考证试题
- mysql 共享锁和排他锁 意向锁 记录锁 Gap Locks Next-Key Locks 插入意向锁介绍
- 设置tableView的分割线从最左端开始
- java ee各类组件_在Java EE组件中使用骆驼路线
- Vue 2.0 入门系列(15)学习 Vue.js 需要掌握的 es6 (2)
- 使用Axios拦截器打印前端请求日志和后端后返回日志
- 【ARM-Linux开发】Wi-Fi 应用工具wpa_supplicant
- 暴风影音彻底凉凉!土豆、乐视、pps、风行曾经也辉煌过
- eclipse中birt插件使用_eclipse安装birt插件
- Linux下二进制包安装postgresql10.4
- python import自定义模块方法
- zookeeper入门及进阶
- 电脑丢失api-ms-win-core-libraryloader-|1-1-1.dll怎么办
- iOS 屏幕适配 X XR XS XSMax 尺寸
- Error: pngquant failed to build, make sure that libpng-dev is installed
- Echarts中国地图json文件,去除诸岛
- 低级程序员和高级程序员的区别
- Top-Down Bottom-Up
- JAVA代码实现扫码购带圆图二维码生成
- unity3d中ScriptingBackend选择mono和il2cpp的区别
热门文章
- D3.js音乐可视化
- js判断客户端是PC端还是移动端访问
- 【计算机考研】从N非本科到考研上岸一线211的心路历程
- [svn]最常用、频用的10个命令
- 如何批量生成文件夹并命名
- 热词解析(9) — hangry
- springboot基于JAVA的电影推荐系统的开发与实现 附源码-毕业设计112306
- aoa定位算法matlab仿真,基于信号到达角度(AOA)的定位算法研究
- [MODIS数据处理#9]例四:基于MCD12Q2数据集初步分析中国植被物候空间分布特征
- R语言作图——Pie chart(饼图)