mov-关于汇编语言中调试多个段的程序(不懂)

问题描述

关于汇编语言中调试多个段的程序(不懂)

根据题目要求是在start之间插入自己编辑的代码,要求将a段和b段中的数据相加,将结果存入c段中。下面的start之间的代码是我自己写的,但是在编译的过程中出现了错误,错误提示在图片中

assume cs:code 

    a segment

        db 1,2,3,4,5,6,7,8

    a ends 

    b segment

        db 1,2,3,4,5,6,7,8

    b ends 

    c segment

        db 0,0,0,0,0,0,0,0

    c ends 

    code segment

start:  mov ax,a
        mov ds,ax

        mov ax,b
        mov es,ax

        mov bx,0
        mov cx,8

    s:  add es:[bx],[bx]
        inc bx
        loop s 

        mov ax,c
        mov ds,ax 

        mov bx,0
        mov cx,8

    s0: mov [bx],es:[bx]
        inc bx
        loop s0

        mov ax,4c00h
        int 21h

    code ends 

end start

解决方案

我复制你的编译的问题在add es:[bx],[bx]和mov [bx],es:[bx]指令部分,都是不能从内存到内存。

时间: 2024-10-30 04:52:33

mov-关于汇编语言中调试多个段的程序(不懂)的相关文章

Win32中调试API

在本教程中,我们将学习Win32提供给开发者的用于调试的原语. 在教程的结尾,我们将学习如何调试一个进程. 理论:Win32有一些供程序员使用的API,它们提供相当于调试器的功能. 他们被称作Win32调试API(或原语).利用这些API,我们可以: 加载一个程序或捆绑到一个正在运行的程序上以供调试 获得被调试的程序的低层信息,例如进程ID,进入地址,映像基址等. 当发生与调试有关的事件时被通知,例如进程/线程的开始/结束, DLL的加载/释放等. 修改被调试的进程或线程 简而言之,我们可以用这

《操作系统真象还原》——0.8 代码中为什么分为代码段、数据段?这和内存访问机制中的段是一回事吗

0.8 代码中为什么分为代码段.数据段?这和内存访问机制中的段是一回事吗 首先,程序不是一定要分段才能运行的,分段只是为了使程序更加优美.就像用饭盒装饭菜一样,完全可以将很多菜和米饭混合在一起,或者搅拌成一体,哈哈,但这样可能就没什么胃口啦.如果饭盒中有好多小格子,方便将不同的菜和饭区分存放,这样会让我们胃口大开增加食欲. x86平台的处理器是必须要用分段机制访问内存的,正因为如此,处理器才提供了段寄存器,用来指定待访问的内存段起始地址.我们这里讨论的程序代码中的段(用section或segme

新手看不懂php在浏览器中调试的出错信息 ,求帮解释

问题描述 新手看不懂php在浏览器中调试的出错信息 ,求帮解释 本人小白,刚开始自学,照书上写个简单的博客的例子,xampp+phpstorm,然后一运行出来这些信息,求高人帮忙看看. PS:例程用到MySQL,我确定数据库连接成功了,在这些信息底下显示的是查询语句的输出结果,也确定没问题,只是中间夹了这么一段完全不知道是什么意思,求高人指点. 再PS:我的phpmyadmin没法用,点啥都显示loading,不知有没有关系 解决方案 貌似是内存的错误,你打印一下错误然后再试试

在PL/SQL 开发中调试存储过程和函数的一般性方法

存储过程|函数 在PL/SQL 开发中调试存储过程和函数的一般性方法摘要: Oracle 在PLSQL中提供的强大特性使得数据库开发人员可以在数据库端完成功能足够复杂的任务, 本文将结合Oracle提供的相关程序包(package)以及一个非常优秀的第三方开发工具来介绍在PLSQL中开发及调试存储过程的方法,当然也适用于函数. 版权声明: 本文可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息.原文出处: http://www.aiview.com/notes/ora_using_

树形数据显示SQL示例代码(在ms sql 2000 DBMS中调试通过)

示例|数据|显示 树形数据显示SQL示例代码(在ms sql 2000 DBMS中调试通过) SELECT DeptCode1 + DeptCode2 + DeptCode3 AS dpcode,       CASE WHEN deptname2 = '' THEN deptname1 WHEN deptname2 <> '' AND       deptname3 = '' THEN DeptName1 + '\' + DeptName2 WHEN deptname2 <> '

在VB.NET中调试存储过程

存储过程 调试是编写应用程序的一个主要部分.Visual Studio .NET为自带的调试器提供了大量的增强性能,包括统一的调试界面.Web service调试以及跨语言调试.这种调试器的一个最有用的新功能体现在对存储过程的调试性能上.本文我将介绍在VS.NET中对SQL Server 2000存储过程进行调试的几种可选方法,以及你可能会遇到的一些配置问题. 许多商家使用SQL Server作为数据库,并将存储过程作为将数据返回VB中的机制,因此对存储过程进行逐步调试的能力成为开发的关键.Vi

教你在Eclipse中调试JBoss应用

一般来说在JavaEE应用程序的开发过程中,大家都习惯使用 Tomcat作为调试服务器,相应的在 Eclipse IDE中调试Tomcat也很简单,可以下载tomcateclipse插件即可轻松方便的在IDE中调试应用(参 见 com.sysdeo.eclipse.tomcat). 但是,如果应用是企业级的,即需要EJB容器部署,Tomcat就无能为力了,这时候,我们可以选择 JBoss AS作为调试服务器. 如何将应用自动构建并部署到JBoss的deploy目录中,在这里并不是讨论的重点,JB

在C#中调试Windows窗体程序

在控制台应用程序中Main函数是程序的入口点.同样地,在Windows窗体应用程序中,Main函数也是程序入口点.这可以通过调试看出来,方法如下所示. (1)打开或新建一个Windows窗体应用程序,如前面的FormsTest应用程序. (2)单击"调试"|"逐句调试"命令,也可以按快捷键F11.可以看到,程序会跳转到Program.cs文件.指示运行的黄色箭头指向Main函数的起始位置. (3)继续按F11键,直到运行箭头移动到函数最后一句,代码如下所示. App

excel表格中如何编辑一大段文字?

  excel表格中如何编辑一大段文字?           方法 1.首先我们打开excel,然后选中一块文字输入区域,这个区域就是我们将要盛放大段文字的地方. 2.右键单击这个区域,弹出右键菜单,在右键菜单中,我们选择设置单元格格式. 3.在单元格格式中,我们点击对齐,在对齐面板中,我们勾选合并单元格,然后点击确定,就完成了合并. 4.如下图就是我们合并得到的一个文字输入区域. 5.在这个区域中我们输入一大段文字.我们可以看到问题出现了,这一大段文字超出了表格,那么怎样让这一段文字都显示出来