实验内容:

(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

[汇编语言]实验:应用更灵活的寻址方式来定位内存地址相关推荐

  1. 更灵活的定位内存地址的方法---汇编学习笔记

    更灵活的定位内存地址的方法 前面,我们用[0].[bx]的方法,在访问内存的指令中,定位内存单元的地址.本章将用更灵活的方式来定位内存地址. 7.1 and和or指令 (1)and指令:逻辑与指令,按 ...

  2. 更灵活的定位内存地址的方法02 - 零基础入门学习汇编语言33

    第七章:更灵活的定位内存地址的方法02 让编程改变世界 Change the world by program [bx+idata] 在前面,我们可以用[bx]的方式来指明一个内存单元, 我们还可以用 ...

  3. [汇编语言]更灵活的定位内存地址的方法

    目录 一.and和or指令 二.以字符的形式给出数据 三.大小写转化问题 四.[bx+idata] 五.SI和DI 六.[bx+si]和[bx+di] 与 [bx+si+idata]和[bx+di+i ...

  4. 更灵活的定位内存地址的方法05 - 零基础入门学习汇编语言36

    第七章:更灵活的定位内存地址的方法05 让编程改变世界 Change the world by program 问题7.8 [codesyntax lang="asm"] assu ...

  5. (七)汇编语言——更灵活的定位内存地址的方法

    目录 and和or ASCII码 [bx+idata] SI和DI寄存器 [bx+si]和[bx+di] [bx+si+idata]和[bx+di+idata] 总结 例子(双重循环的解决方案) 我们 ...

  6. 汇编程序-更灵活的定位内存地址方法

    汇编程序-更灵活的定位内存地址方法 如何灵活运用定位内存的方法呢?在之后,我们将列出几个实际例子.通过例子,展示定位内存的一些方法,熟悉和提升我们对汇编程序的理解. 大小写转化(1) 通过上面的汇编程 ...

  7. 汇编: 更灵活的定位内存地址的方法

    bx是偏移地址寄存器.同样的, si,di也是偏移地址寄存器. 这样使用了si,di可以更灵活的定位内存地址. assume cs:codecode segmentstart: mov bx,0mov ...

  8. 王爽 汇编语言第三版 第7章 --- 更灵活的定位内存地址的方法(可以理解为 数组形式的内存定位)

    汇编语言(第三版)王爽著 的十二个实验:https://blog.csdn.net/OrangeHap/article/details/89791064 大小端 字节对齐 对于 arm,intel 这 ...

  9. 《汇编语言》总结04 —— 更灵活的定位内存地址的方法

    (一)and和or指令 and指令:逻辑与指令,按位进行与运算 mov al,01100011B and al,00111011B 执行后,al=00100011B 作用:通过该指令可将操作对象的相应 ...

最新文章

  1. [jobdu]调整数组顺序使奇数位于偶数前面
  2. GDCM:gdcm::IconImageGenerator的测试程序
  3. python决策树可视化_「决策树」| Part3—Python实现之可视化
  4. jzoj3854-分组【树状数组,线段树】
  5. javaone_JavaOne 2012覆盖率
  6. JavaParser中AST节点的观察者
  7. [译]JavaScript async / await:好处、坑和正确用法
  8. 从系统盘符选错到认识硬盘的各种分区
  9. View的setLayerType() , setDrawingCacheEnabled() 方法用法
  10. 《Go程序设计语言》- 第12章:反射
  11. 受力分析软件_大赛作品 | 关于Z型路灯受力情况分析
  12. 计算机毕业设计jsp酒店管理系统
  13. HTML+CSS制作仿制当当网
  14. Docker基础:指定USER的容器中获得root用户的方法
  15. 记录一次app崩溃信息调试
  16. 1-系统C盘迁移到新买的固态硬盘SSD中有影响但不主要,但有必要将系统盘C盘迁移到新安装的 固态硬盘SSD中吗?
  17. 用关联规则和聚类探索药物配伍规律
  18. 易优EyouCMS手机端url路径改为/mobile/方案(非自带m.xxx.com二级域名方案)
  19. 【WORD】单词分栏
  20. VUE教程(持续更新中)

热门文章

  1. 架构师必须知道的架构设计原则
  2. Chrome 双击关闭标签,新窗口打开新地址,一个插件搞定,安装方便,自带hosts
  3. 解决夜神模拟器无法联机调试 adb server version (**) doesn't match this client (**); killing...
  4. 定量遥感:计算地方时和太阳高度角(C++代码)
  5. System.Diagnostics.Process.Start()用法详解
  6. C和指针之实现可变参数函数编译出现expanded from macro ‘va_arg‘ #define va_arg(ap, type) 解决办法
  7. Android之bitmap压缩的几种方法的解读
  8. (10)C#偷懒的开始永无止境的循环?
  9. sql between...and 用法(mysql)
  10. npm 安装less插件_node+npm+webpack+less安装