用si和di实现将字符串’welcome to masm!'复制到它后面的数据区中。

;用si和di实现将字符串'welcome to masm!'复制到它后面的数据区中。
assume cs:code,ds:data
data segmentdb 'welcome to masm!'db '................'
data endscode segmentstart:mov ax,datamov ds,axmov si,0mov di,16 ;设置两个偏移地址寄存器  或mov di,10Hmov cx,8;可以用字型数据来复制,所以可以设cx=8,循环八次copystring:mov ax,ds:[si]mov ds:[di],axadd si,2add di,2loop copystringmov ax,4c00hint 21h
code ends
end

注意,在程序中十六位寄存器进行内存之间的数据传送,一次复制两个字节,共循环八次。

si和di和bx功能相同,si和di不能分为两个八位寄存器来使用

优化:可以不需要di了,因为观他们 的关系差的是16,用mov ds:[si+16],ax即可

也可以通过设置栈:

;用si和di实现将字符串'welcome to masm!'复制到它后面的数据区中。
assume cs:code,ds:data
data segmentdb 'welcome to masm!'db '................'
data endsstack segmentdw 0,0,0,0dw 0,0,0,0dw 0,0,0,0dw 0,0,0,0stack endscode segmentstart:mov ax,stackmov ss,axmov sp,32mov ax,datamov ds,axmov si,0        mov cx,8;可以用字型数据来复制,所以可以设cx=8,循环八次copystring:push ds:[si] ;通过push poppop ds:[si+16]add si,2 loop copystringmov ax,4c00hint 21h
code ends
end

逻辑更清晰的写法:

或者:

用SI 和 DI实现字符串的复制相关推荐

  1. 汇编语言-用Si和Di实现字符串复制到其他的区域

    用Si和Di实现字符串的复制 完整的实验代码 利用dsdi指向要复制字符串的源位置,用ds:si指向要复制到的位置 assume cs:codesg , ds:datasgdb 'welcome to ...

  2. 贺利坚老师汇编课程34笔记:SI和DI复制字符串

    指路老师的博客 用寄存器将SI和DI实现字符串'welcome to masm!'16个字符复制到它后面的数据区 源数据起始地址:datasg:0,目标数据起始地址:datasg:16 DS:SI指向 ...

  3. [汇编语言]实验:更灵活的寻址方式 -应用si和di

    实验内容: (1) 用寄存器SI和DI实现将字符串'welcome to masm!' 复制到它后面的数据区中. (2) 用[bx(si或di)+idata]的方式,来使程序变得简洁. (1) 代码如 ...

  4. SI和DI寄存器(0703)

    本文为<汇编语言程序设计>0703小节例程.点击链接-进课程主页. 问题:用寄存器SI和DI实现将字符串'welcome to masm!'复制到它后面的数据区中. assume cs:c ...

  5. SI 和 DI 寄存器的区别

    SI(source index)是源变址寄存器 DI(destination index)是目的变址寄存器 SI和DI可以用来存放数据.地址,功能类似.用法类似.一般使用哪个都可以. 但需要注意的是: ...

  6. 汇编语言 字符串的复制

    方法一: assume cs:code, ds:datadata segmentdb 'welcome to mams!'db '----------------' data endscode seg ...

  7. C语言学习之利用指针将字符串a复制为字符串 b,然后输出字符串b

    利用指针将字符串a复制为字符串 b,然后输出字符串b int main(){char a[]="i am a student",b[20];//定义字符数组int i;for(i= ...

  8. linux中复制字符串出错,C语言实现字符串的复制的两种方法

    本文将要为您介绍的是C语言实现字符串的复制的两种方法,具体操作方法: 利用数组实现 1 #include 2 #include 3 4 void copy_string(char str1[],cha ...

  9. 编程题:字符串的指针引用。用指针法实现。功能:将字符串str2复制连接到str1...

    编程题:字符串的指针引用.用指针法实现.功能:将字符串str2复制连接到str1 #include<stdio.h> void main() { char *s1,*s2, str1[30 ...

最新文章

  1. 汉语分词工具的研发-----
  2. Linux: TLB 查询流程
  3. python计算每月工资-[Python] 2018新税法下工资计算
  4. sqlsourcesafe mysql_mysql权限问题,看不到其它的库!
  5. 什么是.hpp文件?
  6. Actions require unique method/path combination for Swagger
  7. Linux Socket学习--套接口的类型和协议
  8. places365_Google Places API网络服务示例
  9. effective C++ 条款 44:将与参数无关的代码抽离templates
  10. php操作mysql数据_详解PHP操作MySQL数据库
  11. rffc2071_基于RFFC2071的变频器设计
  12. android 微信小程序 唤起app,Android 微信小程序打不开app方案解决
  13. 42表盘直径是从哪测量_手表的术语中,直径指的是外观直径还是表盘直径?
  14. 软媒魔方 6.0 正式绿色版
  15. NX二次开发-UFUN新建工程图UF_DRAW_create_drawing
  16. 文字转语音软件哪个好?快把这些软件收好
  17. 《图解TCP/IP》——第一章 网络基础知识
  18. win10杀毒软件Win Defender设置白名单
  19. csapp-bomblab
  20. 夜光 带你走进设计模式(四)

热门文章

  1. php连接MYSQL(2)
  2. reverse() 几种操作
  3. nyist -- 组队赛(二)
  4. 关于异常捕获和Checked Exception
  5. 返回结果集的存储过程实例及调用
  6. NYOJ 734 奇数阶魔方
  7. 二叉查找树--java
  8. 5.intent_activity
  9. swift如何动态创建对象
  10. 安装logstash,elasticsearch,kibana三件套