用SI 和 DI实现字符串的复制
用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实现字符串的复制相关推荐
- 汇编语言-用Si和Di实现字符串复制到其他的区域
用Si和Di实现字符串的复制 完整的实验代码 利用dsdi指向要复制字符串的源位置,用ds:si指向要复制到的位置 assume cs:codesg , ds:datasgdb 'welcome to ...
- 贺利坚老师汇编课程34笔记:SI和DI复制字符串
指路老师的博客 用寄存器将SI和DI实现字符串'welcome to masm!'16个字符复制到它后面的数据区 源数据起始地址:datasg:0,目标数据起始地址:datasg:16 DS:SI指向 ...
- [汇编语言]实验:更灵活的寻址方式 -应用si和di
实验内容: (1) 用寄存器SI和DI实现将字符串'welcome to masm!' 复制到它后面的数据区中. (2) 用[bx(si或di)+idata]的方式,来使程序变得简洁. (1) 代码如 ...
- SI和DI寄存器(0703)
本文为<汇编语言程序设计>0703小节例程.点击链接-进课程主页. 问题:用寄存器SI和DI实现将字符串'welcome to masm!'复制到它后面的数据区中. assume cs:c ...
- SI 和 DI 寄存器的区别
SI(source index)是源变址寄存器 DI(destination index)是目的变址寄存器 SI和DI可以用来存放数据.地址,功能类似.用法类似.一般使用哪个都可以. 但需要注意的是: ...
- 汇编语言 字符串的复制
方法一: assume cs:code, ds:datadata segmentdb 'welcome to mams!'db '----------------' data endscode seg ...
- C语言学习之利用指针将字符串a复制为字符串 b,然后输出字符串b
利用指针将字符串a复制为字符串 b,然后输出字符串b int main(){char a[]="i am a student",b[20];//定义字符数组int i;for(i= ...
- linux中复制字符串出错,C语言实现字符串的复制的两种方法
本文将要为您介绍的是C语言实现字符串的复制的两种方法,具体操作方法: 利用数组实现 1 #include 2 #include 3 4 void copy_string(char str1[],cha ...
- 编程题:字符串的指针引用。用指针法实现。功能:将字符串str2复制连接到str1...
编程题:字符串的指针引用.用指针法实现.功能:将字符串str2复制连接到str1 #include<stdio.h> void main() { char *s1,*s2, str1[30 ...
最新文章
- 汉语分词工具的研发-----
- Linux: TLB 查询流程
- python计算每月工资-[Python] 2018新税法下工资计算
- sqlsourcesafe mysql_mysql权限问题,看不到其它的库!
- 什么是.hpp文件?
- Actions require unique method/path combination for Swagger
- Linux Socket学习--套接口的类型和协议
- places365_Google Places API网络服务示例
- effective C++ 条款 44:将与参数无关的代码抽离templates
- php操作mysql数据_详解PHP操作MySQL数据库
- rffc2071_基于RFFC2071的变频器设计
- android 微信小程序 唤起app,Android 微信小程序打不开app方案解决
- 42表盘直径是从哪测量_手表的术语中,直径指的是外观直径还是表盘直径?
- 软媒魔方 6.0 正式绿色版
- NX二次开发-UFUN新建工程图UF_DRAW_create_drawing
- 文字转语音软件哪个好?快把这些软件收好
- 《图解TCP/IP》——第一章 网络基础知识
- win10杀毒软件Win Defender设置白名单
- csapp-bomblab
- 夜光 带你走进设计模式(四)