SI和DI寄存器(0703)

本文为《汇编语言程序设计》0703小节例程。点击链接…进课程主页。

问题:用寄存器SI和DI实现将字符串‘welcome to masm!’复制到它后面的数据区中。

assume cs:codesg,ds:datasg
datasg segment
      db 'welcome to masm!'
      db '................'
datasg ends
codesg segment
start: mov ax,datasg
       mov ds,ax

       mov si,0
       mov di,16
       mov cx,8
    s: mov ax,[si]
       mov [di],ax
       add si,2
       add di,2
       loop s

       mov ax,4c00h
       int 21h
codesg ends
end start

时间: 2024-09-21 01:52:19

SI和DI寄存器(0703)的相关文章

汇编语言课程主页

[写在开课前] 这学期,接了一门新课--汇编语言程序设计. 这是门好课.学好了,能干的工作,那是高大上:职业中不指望自己的工具袋中备一把名叫"汇编"的榔头的同学,借着汇编语言,也可以练计算机专业学习的内功. 新培养方案中恢复了这门课,我就想将捣鼓捣鼓这门课程.搞了好多年"计算"的事,早对自己离"计算机"有点远而不满.备课中,再回计算机的底层,重新体会"螺丝壳里做道场"的精致. 教学模式继续翻转课堂,随着授课进度,同步建设资源.

翻转汇编第6周总结

  每周上完课,布置一个作业--总结.这将作为一个要坚持的事情.这个想法来自去年暑假学到的"行动学习"中的"复盘"技术,逐渐坚定在近日学习的教学设计.将总结作为一个轻量级的复盘用吧,乘着刚刚学过,将脑中尚留的东东,包括情感,给个表达的机会,由此而形成固化.   只是苦了我的学生们.他们周一满课,不少同学只能是晚上再写.其实,这个时候,脑子里留存的东西可能已经不算太多了,乘此再追一下,也有好处.其实,我理想的安排是,课堂留5分钟总结时间,无奈网速不给力啊!(下周尝试让

一步一步教你加密解密技术——软件保护技术(2)(1)

第二节 反跟踪技术1.Anti-Debug1.MeltICE子类型类型:检测SoftICE.TRW2000平台:Windows9x.Windows NT原理:用CreateFileA( )或_lopen( )函数试图获得SoftICE的驱动程序"\\.\SICE"(Windows9X版本)."\\.\SIWDEBUG"."\\.\NTICE"(Windows NT版本)."\\.\SIWVID"等的句柄,如果成功则说明Soft

汇编基础:标志寄存器

Intel 8086/8088CPU设置了一个16位的标志寄存器,用来反映微处理器的当前状态和某些控制,标志寄存器中有9个标志位,分为两大类:状态标志(CF, PF, AF, ZF, SF, OF)和控制标志(TF, IF, DF),状态标志由CPU根据运算结果自动设置,用来反映CPU的执行单元EU执行算术运算或逻辑运算后的结果特征,这些特征常用来影响或者是控制某些后续指令的执行,控制标志由系统程序或者用户程序用指令来设置或者是清除,用来控制CPU的某些操作. 1).状态标志 (1)进位位CF

【汇编语言/底层开发】11、标识寄存器

除了前述的多种具有特定用途的寄存器之外,8086的CPU中还存在一类特殊的寄存器,称为标识寄存器flag,其每一位可能用来存储特定的信息,主要有以下三类: (1)相关指令的某些执行结果: (2)为CPU执行相关指令提供依据: (3)控制CPU的相关工作方式. 在这个16位的寄存器中,共有9个bit位被用作某种标识位,其他几个bit为保留位,没有实际意义.以下几节中将浏览其中几个标志位的作用和使用方法. 1.ZF标识: ZF标识位为flag的第六位,其含义为0标识位.当某条汇编指令完成后,结果为0

32位寄存器

32位寄存器     EBP和ESP是32位的SP,BP   ESP是堆栈指针   EBP是基址指针   ESP与SP的关系就像AX与AL,AH的关系 32位CPU所含有的寄存器有: 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1.数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作

byte-关于汇编段寄存器问题

问题描述 关于汇编段寄存器问题 如图 有注释的那一行. 编译之后却提示错误. 这个错误是指不匹配,也就是CPU不知道传送数据的大小. 但是我已经定义了 byte ptr. 指明了是一个字节. 难道是不能直接对段寄存器传送另外段寄存器的内容吗? 求各位大神解惑 小弟在此感谢不已. 下面是报错图片 解决方案 能用方括号的只能是 BX.BP.SI.DI,[bx+di]是不行的. 汇编不存在自动的"中间变量",每个值都必须显式的计算好.

X86汇编语言总结

下载地址:点击打开下载链接 AX.BX.CX.DX一般用来存放数据 [BX].[BP].[SI].[DI]中一般存放着某个段寄存器的偏移地址,默认情况下,[BX]中存放着数据段(DS)的偏移地址,[BP]中存放着栈段(SS)的偏移地址(功能和SP类似),其中BX只能和SI.DI组合,BP只能和SI.DI组合,SI.DI间是不能组合的 Loop指令一般搭配着CX寄存器使用,每循环一次,CX寄存器中的值减少1 执行PUSH指令时,SP-2,执行POP时,SP+2 个人的一点总结:压栈时,先减后压:出

[转贴]改好DEBUG七处缺点的comexe实现报告

 改好DEBUG七处缺点的comexe实现报告   首先声明,本文所指DEBUG,系DOS 6.22,win 98及2k三者DEBUG.EXE. (1) DEBUG命令T及P的2处缺点 跟踪命令T,建立在8086标志寄存器第8位(自陷位)置1后,处理器执行完一条 被跟踪指令,就进单步中断1的基础上(进入时,被调试进程栈顶3个字,被无辜破坏). DEBUG预先接管中断1,在那里,对被跟踪指令的执行完现场,先保存,后显示. 于是,DEBUG用以下5步,让欲跟踪的指令,在自陷位持有1的处理器环境下,间